{ "$schema": "http://json-schema.org/draft-06/schema#", "properties": { "libraries": { "$ref": "#/definitions/library-section" }, "plex": { "$ref": "#/definitions/plex-server" }, "tmdb": { "$ref": "#/definitions/tmdb-api" }, "tautulli": { "$ref": "#/definitions/tautulli-api" }, "webhooks": { "$ref": "#/definitions/webhooks" }, "omdb": { "$ref": "#/definitions/omdb-api" }, "mdblist": { "$ref": "#/definitions/mdblist-api" }, "notifiarr": { "$ref": "#/definitions/notifiarr-api" }, "anidb": { "$ref": "#/definitions/anidb-api" }, "sonarr": { "$ref": "#/definitions/sonarr-api" }, "radarr": { "$ref": "#/definitions/radarr-api" }, "settings": { "$ref": "#/definitions/settings" }, "mal": { "$ref": "#/definitions/mal-api" }, "trakt": { "$ref": "#/definitions/trakt-api" } }, "required": [ "plex", "tmdb" ], "definitions": { "plex-server": { "description": "Describes the primary Plex server to which PMM can connect. This attribute is REQUIRED. It can be overridden at the library level.", "type": "object", "additionalProperties": false, "properties": { "url": { "description": "URL at which PMM can connect to your plex server. NOT app.plex.tv", "type": "string", "format": "uri", "pattern": "^(https?)://" }, "token": { "description": "Admin token for this Plex server", "type": "string" }, "timeout": { "description": "Connection timeout in seconds for this Plex server", "type": "integer", "minimum": 0 }, "db_cache": { "description": "Sets DB Cache value for this Plex server in MB", "oneOf": [ { "type": "integer" }, { "type": "string", "pattern": "^$" } ] }, "clean_bundles": { "description": "true/false - If 'true', cleans metadata bundles on this Plex server", "type": "boolean" }, "empty_trash": { "description": "true/false - If 'true', empties trash on this Plex server", "type": "boolean" }, "optimize": { "description": "true/false - If 'true', optimizes database on this Plex server", "type": "boolean" } }, "required": [ "token", "url" ], "title": "plex" }, "plex-server-lib": { "description": "Describes the Plex server where this library is found.", "type": "object", "additionalProperties": false, "properties": { "url": { "description": "URL at which PMM can connect to this plex server. NOT app.plex.tv", "type": "string", "format": "uri", "pattern": "^(https?)://" }, "token": { "description": "Admin token for this Plex server", "type": "string" }, "timeout": { "description": "Connection timeout in seconds for this Plex server", "type": "integer", "minimum": 0 }, "db_cache": { "description": "Sets DB Cache value for this Plex server in MB", "oneOf": [ { "type": "integer" }, { "type": "string", "pattern": "^$" } ] }, "clean_bundles": { "description": "true/false - If 'true', cleans metadata bundles on this Plex server", "type": "boolean" }, "empty_trash": { "description": "true/false - If 'true', empties trash on this Plex server", "type": "boolean" }, "optimize": { "description": "true/false - If 'true', optimizes database on this Plex server", "type": "boolean" } }, "required": [], "title": "plex" }, "tmdb-api": { "description": "API Information to connect to TMDB; REQUIRED for the script to run", "type": "object", "additionalProperties": false, "properties": { "apikey": { "type": "string", "description": "API Key to connect to TMDB; REQUIRED for the script to run" }, "language": { "type": ["string", "null"], "enum": [ "aa", "ab", "ae", "af", "ak", "am", "an", "ar", "as", "av", "ay", "az", "ba", "be", "bg", "bh", "bi", "bm", "bn", "bo", "br", "bs", "ca", "ce", "ch", "co", "cr", "cs", "cu", "cv", "cy", "da", "de", "dz", "ee", "el", "en", "eo", "es", "et", "eu", "fa", "fi", "fj", "fo", "fr", "fy", "ga", "gd", "gl", "gv", "ha", "he", "hi", "ho", "hr", "ht", "hu", "hy", "hz", "ia", "id", "ie", "ig", "ii", "ik", "io", "is", "it", "iu", "ja", "jv", "ka", "kg", "ki", "kj", "kk", "kl", "km", "kn", "ko", "kr", "ks", "ku", "kv", "kw", "ky", "la", "lb", "lg", "li", "ln", "lo", "lt", "lu", "lv", "mg", "mh", "mi", "mk", "ml", "mn", "mo", "mr", "ms", "mt", "nb", "nd", "ne", "nl", "nn", "no", "oc", "oj", "om", "or", "os", "pa", "pi", "pl", "ps", "pt", "qu", "rm", "rn", "ro", "ru", "rw", "se", "sg", "si", "sk", "sl", "sm", "sn", "so", "sq", "sr", "ss", "st", "su", "sv", "sw", "ta", "te", "tg", "th", "ti", "tk", "tl", "tn", "to", "tr", "ts", "tt", "tw", "ug", "uk", "ur", "uz", "vi", "vo", "wa", "wo", "xh", "yi", "yo", "za", "zh", "zu" ], "description": "This field can be either null or a valid ISO 639 language code." }, "region": { "type": "string", "enum": ["","AD","AE","AF","AG","AI","AL","AM","AN","AO","AQ","AR","AS","AT","AU","AW","AZ","BA","BB","BD","BE","BF","BG","BH","BI","BJ","BM","BN","BO","BR","BS","BT","BU","BV","BW","BY","BZ","CA","CC","CD","CF","CG","CH","CI","CK","CL","CM","CN","CO","CR","CS","CU","CV","CX","CY","CZ","DE","DJ","DK","DM","DO","DZ","EC","EE","EG","EH","ER","ES","ET","FI","FJ","FK","FM","FO","FR","GA","GB","GD","GE","GF","GH","GI","GL","GM","GN","GP","GQ","GR","GS","GT","GU","GW","GY","HK","HM","HN","HR","HT","HU","ID","IE","IL","IN","IO","IQ","IR","IS","IT","JM","JO","JP","KE","KG","KH","KI","KM","KN","KP","KR","KW","KY","KZ","LA","LB","LC","LI","LK","LR","LS","LT","LU","LV","LY","MA","MC","MD","ME","MG","MH","MK","ML","MM","MN","MO","MP","MQ","MR","MS","MT","MU","MV","MW","MX","MY","MZ","NA","NC","NE","NF","NG","NI","NL","NO","NP","NR","NU","NZ","OM","PA","PE","PF","PG","PH","PK","PL","PM","PN","PR","PS","PT","PW","PY","QA","RE","RO","RS","RU","RW","SA","SB","SC","SD","SE","SG","SH","SI","SJ","SK","SL","SM","SN","SO","SR","SS","ST","SU","SV","SY","SZ","TC","TD","TF","TG","TH","TJ","TK","TL","TM","TN","TO","TP","TR","TT","TV","TW","TZ","UA","UG","UM","US","UY","UZ","VA","VC","VE","VG","VI","VN","VU","WF","WS","XC","XG","XI","XK","YE","YT","YU","ZA","ZM","ZR","ZW"], "description": "This field can be either null or a valid ISO 3166-1 Code." }, "cache_expiration": { "type": "integer", "minimum": 1, "description": "An integer greater than 0 in days" } }, "required": [ "apikey" ], "title": "tmdb" }, "tautulli-api": { "type": "object", "additionalProperties": false, "properties": { "apikey": { "type": "string" }, "url": { "type": "string", "format": "uri", "pattern": "^(https?)://" } }, "required": [ "apikey", "url" ], "title": "tautulli" }, "webhooks": { "type": "object", "additionalProperties": false, "properties": { "error": { "type": ["string", "null"] }, "version": { "type": ["string", "null"] }, "run_start": { "type": ["string", "null"] }, "run_end": { "type": ["string", "null"] }, "changes": { "type": ["string", "null"] }, "delete": { "type": ["string", "null"] } }, "required": [ ], "title": "webhooks" }, "omdb-api": { "type": "object", "additionalProperties": false, "properties": { "apikey": { "type": "string" }, "cache_expiration": { "type": "integer", "minimum": 1, "description": "An integer greater than 0 in days" } }, "required": [ "apikey", "cache_expiration" ], "title": "omdb" }, "mdblist-api": { "type": "object", "additionalProperties": false, "properties": { "apikey": { "type": "string" }, "cache_expiration": { "type": "integer", "minimum": 1, "description": "An integer greater than 0 in days" } }, "required": [ "apikey", "cache_expiration" ], "title": "mdblist" }, "notifiarr-api": { "type": "object", "additionalProperties": false, "properties": { "apikey": { "type": "string" } }, "required": [ "apikey" ], "title": "notifiarr" }, "anidb-api": { "type": "object", "additionalProperties": false, "properties": { "client": { "type": "string" }, "version": { "type": "integer", "minimum": 1 }, "language": { "type": ["string", "null"], "enum": [ "aa", "ab", "ae", "af", "ak", "am", "an", "ar", "as", "av", "ay", "az", "ba", "be", "bg", "bh", "bi", "bm", "bn", "bo", "br", "bs", "ca", "ce", "ch", "co", "cr", "cs", "cu", "cv", "cy", "da", "de", "dz", "ee", "el", "en", "eo", "es", "et", "eu", "fa", "fi", "fj", "fo", "fr", "fy", "ga", "gd", "gl", "gv", "ha", "he", "hi", "ho", "hr", "ht", "hu", "hy", "hz", "ia", "id", "ie", "ig", "ii", "ik", "io", "is", "it", "iu", "ja", "jv", "ka", "kg", "ki", "kj", "kk", "kl", "km", "kn", "ko", "kr", "ks", "ku", "kv", "kw", "ky", "la", "lb", "lg", "li", "ln", "lo", "lt", "lu", "lv", "mg", "mh", "mi", "mk", "ml", "mn", "mo", "mr", "ms", "mt", "nb", "nd", "ne", "nl", "nn", "no", "oc", "oj", "om", "or", "os", "pa", "pi", "pl", "ps", "pt", "qu", "rm", "rn", "ro", "ru", "rw", "se", "sg", "si", "sk", "sl", "sm", "sn", "so", "sq", "sr", "ss", "st", "su", "sv", "sw", "ta", "te", "tg", "th", "ti", "tk", "tl", "tn", "to", "tr", "ts", "tt", "tw", "ug", "uk", "ur", "uz", "vi", "vo", "wa", "wo", "xh", "yi", "yo", "za", "zh", "zu" ], "description": "This field can be either null or a valid ISO 639 language code." }, "cache_expiration": { "type": "integer", "minimum": 1, "description": "An integer greater than 0 in days" }, "username": { "type": "string" }, "password": { "type": "string" } }, "required": [ "username", "password" ], "title": "anidb" }, "sonarr-api": { "type": "object", "additionalProperties": false, "properties": { "url": { "type": "string", "format": "uri", "pattern": "^(https?)://" }, "token": { "type": "string" }, "add_missing": { "type": "boolean" }, "add_existing": { "type": "boolean" }, "ignore_cache": { "type": "boolean" }, "upgrade_existing": { "type": "boolean" }, "season_folder": { "type": "boolean" }, "search": { "type": "boolean" }, "cutoff_search": { "type": "boolean" }, "root_folder_path": { "type": "string" }, "monitor": { "type": "string", "enum": ["all","future","missing","existing","pilot","first","latest","none"] }, "quality_profile": { "type": "string" }, "language_profile": { "type": "string" }, "series_type": { "type": "string", "enum": ["standard","daily","anime"] }, "tag": { "type": [ "string", "null" ] }, "sonarr_path": { "type": [ "string", "null" ] }, "plex_path": { "type": [ "string", "null" ] } }, "required": [ "url", "token", "quality_profile", "root_folder_path" ], "dependentRequired": { "add_existing": ["sonarr_path", "plex_path"] }, "title": "sonarr" }, "sonarr-api-lib": { "type": "object", "additionalProperties": false, "properties": { "url": { "type": "string", "format": "uri", "pattern": "^(https?)://" }, "token": { "type": "string" }, "add_missing": { "type": "boolean" }, "add_existing": { "type": "boolean" }, "ignore_cache": { "type": "boolean" }, "upgrade_existing": { "type": "boolean" }, "season_folder": { "type": "boolean" }, "search": { "type": "boolean" }, "cutoff_search": { "type": "boolean" }, "root_folder_path": { "type": "string" }, "monitor": { "type": "string", "enum": ["all","future","missing","existing","pilot","first","latest","none"] }, "quality_profile": { "type": "string" }, "language_profile": { "type": "string" }, "series_type": { "type": "string", "enum": ["standard","daily","anime"] }, "tag": { "type": [ "string", "null" ] }, "sonarr_path": { "type": [ "string", "null" ] }, "plex_path": { "type": [ "string", "null" ] } }, "required": [], "dependentRequired": { "add_existing": ["sonarr_path", "plex_path"] }, "title": "sonarr" }, "radarr-api": { "type": "object", "additionalProperties": false, "properties": { "url": { "type": "string", "format": "uri", "pattern": "^(https?)://" }, "token": { "type": "string" }, "add_missing": { "type": "boolean" }, "add_existing": { "type": "boolean" }, "ignore_cache": { "type": "boolean" }, "upgrade_existing": { "type": "boolean" }, "search": { "type": "boolean" }, "root_folder_path": { "type": "string" }, "monitor": { "type": "boolean" }, "quality_profile": { "type": "string" }, "availability": { "type": "string", "enum": ["announced","cinemas","released","db"] }, "tag": { "type": [ "string", "null" ] }, "radarr_path": { "type": [ "string", "null" ] }, "plex_path": { "type": [ "string", "null" ] } }, "required": [ "url", "token", "availability", "root_folder_path" ], "dependentRequired": { "add_existing": ["radarr_path", "plex_path"] }, "title": "radarr" }, "radarr-api-lib": { "type": "object", "additionalProperties": false, "properties": { "url": { "type": "string", "format": "uri", "pattern": "^(https?)://" }, "token": { "type": "string" }, "add_missing": { "type": "boolean" }, "add_existing": { "type": "boolean" }, "ignore_cache": { "type": "boolean" }, "upgrade_existing": { "type": "boolean" }, "search": { "type": "boolean" }, "root_folder_path": { "type": "string" }, "monitor": { "type": "boolean" }, "quality_profile": { "type": "string" }, "availability": { "type": "string", "enum": ["announced","cinemas","released","db"] }, "tag": { "type": [ "string", "null" ] }, "radarr_path": { "type": [ "string", "null" ] }, "plex_path": { "type": [ "string", "null" ] } }, "required": [], "dependentRequired": { "add_existing": ["radarr_path", "plex_path"] }, "title": "radarr" }, "settings": { "type": "object", "additionalProperties": false, "properties": { "cache": { "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": "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", "audience_rating.desc", "bitrate.asc", "bitrate.desc", "content_rating.asc", "content_rating.desc", "critic_rating.asc", "critic_rating.desc", "duration.asc", "duration.desc", "originally_available.asc", "originally_available.desc", "plays.asc", "plays.desc", "progress.asc", "progress.desc", "random", "release.asc", "release.desc", "resolution.asc", "resolution.desc", "title.asc", "title.desc", "user_rating.asc", "user_rating.desc", "viewed.asc", "viewed.desc", "year.asc", "year.desc", null ] }, "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": { "type": ["string", "null"], "enum": [ "aar", "abk", "afr", "aka", "alb", "amh", "ara", "arg", "arm", "asm", "ava", "ave", "aym", "aze", "bak", "bam", "bel", "ben", "bih", "bis", "bod", "bos", "bre", "bul", "cat", "cha", "che", "chi", "chu", "chv", "cor", "cos", "cre", "ces", "dan", "deu", "div", "dzo", "ell", "eng", "epo", "est", "eus", "ewe", "fao", "fas", "fij", "fin", "fra", "fry", "ful", "gla", "gle", "glg", "glv", "grn", "guj", "hat", "hau", "heb", "her", "hin", "hmo", "hrv", "hun", "hye", "ibo", "ido", "iii", "iku", "ile", "ina", "ind", "ipk", "isl", "ita", "jav", "jpn", "kal", "kan", "kas", "kat", "kau", "kaz", "khm", "kik", "kin", "kir", "kom", "kon", "kor", "kua", "kur", "lao", "lat", "lav", "lim", "lin", "lit", "ltz", "lub", "lug", "mah", "mal", "mar", "mkd", "mlg", "mlt", "mon", "mri", "msa", "mya", "nau", "nav", "nbl", "nde", "ndo", "nep", "nld", "nno", "nob", "nor", "nya", "oci", "oji", "ori", "orm", "oss", "pan", "pli", "pol", "por", "pus", "que", "roh", "ron", "run", "rus", "sag", "san", "sin", "slk", "slv", "sme", "smo", "sna", "snd", "som", "sot", "spa", "srd", "srp", "ssw", "sun", "swa", "swe", "tah", "tam", "tat", "tel", "tgk", "tgl", "tha", "tir", "ton", "tsn", "tso", "tuk", "tur", "twi", "uig", "ukr", "urd", "uzb", "ven", "vie", "vol", "wln", "wol", "xho", "yid", "yor", "zha", "zho", "zul" ], "description": "Specify the language to query TVDb in. This field can be either null or a valid ISO 639-2 language code." }, "ignore_ids": { "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.", "anyOf": [ { "type": "null" }, { "type": "array", "items": { "type": "integer" }, "minItems": 1 }, { "type": "string", "pattern": "^(\\d+)(,(\\d+))*$" }, { "type": "integer" } ] }, "ignore_imdb_ids": { "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.", "anyOf": [ { "type": "null" }, { "type": "string", "pattern": "^(tt\\d{7})(,(tt\\d{7}))*$" }, { "type": "array", "items": { "type": "string", "pattern": "^tt\\d{7}$" }, "minItems": 1 } ] }, "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": { "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": { "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": { "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" } }, "required": [ ], "title": "settings" }, "mal-api": { "type": "object", "additionalProperties": true, "properties": { "client_id": { "type": "string" }, "client_secret": { "type": "string" } }, "required": [ "client_id", "client_secret" ], "title": "mal" }, "trakt-api": { "type": "object", "additionalProperties": true, "properties": { "client_id": { "type": "string" }, "client_secret": { "type": "string" }, "pin": { "type": [ "string", "null" ] } }, "required": [ "client_id", "client_secret" ], "title": "trakt" }, "pmm-collection-path": { "type": "object", "additionalProperties": false, "properties": { "pmm": { "type": "string", "enum": ["actor", "anilist","aspect","audio_language","bafta","based","basic","berlinale","cannes","cesar","choice","collectionless","content_rating_cs","content_rating_de","content_rating_mal","content_rating_uk","content_rating_us","continent","country","decade","director","emmy","flixpatrol","franchise","genre","golden","imdb","myanimelist","network","nfr","oscars","other_chart","pca","producer","razzie","region","resolution","sag","seasonal","separator_award","separator_chart","spirit","streaming","studio","subtitle_language","sundance","tautulli","tiff","tmdb","trakt","universe","venice","writer","year"] }, "schedule": { "type": "string" }, "asset_directory": { "oneOf": [ { "type": "string"}, { "type": "array", "uniqueItems": true, "items": {"type": "string" }} ] }, "template_variables": { "$ref": "#/definitions/template-variables-collections" } }, "required": [ "pmm" ] }, "pmm-overlay-path": { "type": "object", "additionalProperties": false, "properties": { "pmm": { "type": "string", "enum": ["aspect","audio_codec","commonsense","content_rating_uk","content_rating_us_movie","content_rating_us_show","direct_play","episode_info","language_count","flixpatrol","languages","mediastinger","network","ratings","resolution","ribbon","runtimes","status","streaming","studio","versions","video_format"] }, "remove_overlays": { "type": "boolean" }, "reapply_overlays": { "type": "boolean" }, "reapply_overlay": { "type": "boolean" }, "reset_overlays": { "type": "string", "enum": ["tmdb","plex"] }, "schedule": { "type": "string" }, "asset_directory": { "oneOf": [ { "type": "string"}, { "type": "array", "uniqueItems": true, "items": {"type": "string" }} ] }, "template_variables": { "$ref": "#/definitions/template-variables-overlays" } }, "required": [ ] }, "pmm-playlist-path": { "type": "object", "additionalProperties": false, "properties": { "pmm": { "type": "string", "enum": ["playlist"] }, "schedule": { "type": "string" }, "asset_directory": { "oneOf": [ { "type": "string"}, { "type": "array", "uniqueItems": true, "items": {"type": "string" }} ] }, "template_variables": { "$ref": "#/definitions/template-variables-playlists" } }, "required": [ "pmm" ] }, "file-path": { "type": "object", "additionalProperties": false, "properties": { "file": { "type": "string" }, "schedule": { "type": "string" }, "asset_directory": { "oneOf": [ { "type": "string"}, { "type": "array", "uniqueItems": true, "items": {"type": "string" }} ] } }, "required": [ "file" ] }, "folder-path": { "type": "object", "additionalProperties": false, "properties": { "folder": { "type": "string" }, "schedule": { "type": "string" }, "asset_directory": { "oneOf": [ { "type": "string"}, { "type": "array", "uniqueItems": true, "items": {"type": "string" }} ] } }, "required": [ "folder" ] }, "url-path": { "type": "object", "additionalProperties": false, "properties": { "url": { "type": "string", "format": "uri", "pattern": "^(https?)://" }, "schedule": { "type": "string" }, "asset_directory": { "oneOf": [ { "type": "string"}, { "type": "array", "uniqueItems": true, "items": {"type": "string" }} ] } }, "required": [ "url" ] }, "git-path": { "type": "object", "additionalProperties": false, "properties": { "git": { "type": "string" }, "schedule": { "type": "string" }, "asset_directory": { "oneOf": [ { "type": "string"}, { "type": "array", "uniqueItems": true, "items": {"type": "string" }} ] } }, "required": [ "git" ] }, "repo-path": { "type": "object", "additionalProperties": false, "properties": { "repo": { "type": "string" }, "schedule": { "type": "string" }, "asset_directory": { "oneOf": [ { "type": "string"}, { "type": "array", "uniqueItems": true, "items": {"type": "string" }} ] } }, "required": [ "repo" ] }, "library-section": { "title": "libraries", "type": "object", "additionalProperties": false, "patternProperties": { "^(?!plex|tmdb|tautulli|webhooks|omdb|mdblist|notifiarr|anidb|radarr|sonarr|trakt|mal).+$": { "additionalProperties": false, "properties": { "metadata_files": { "$ref": "#/definitions/metadata-files" }, "collection_files": { "$ref": "#/definitions/collection-files" }, "overlay_files": { "$ref": "#/definitions/overlay-files" }, "metadata_path": { "$ref": "#/definitions/metadata-path" }, "overlay_path": { "$ref": "#/definitions/overlay-path" }, "operations": { "$ref": "#/definitions/operations" }, "library_name": { "type": "string" }, "report_path": { "type": "string" }, "settings": { "$ref": "#/definitions/settings" }, "plex": { "$ref": "#/definitions/plex-server-lib" }, "radarr": { "$ref": "#/definitions/radarr-api-lib" }, "sonarr": { "$ref": "#/definitions/sonarr-api-lib" }, "tautulli": { "$ref": "#/definitions/tautulli-api" }, "template_variables": { "$ref": "#/definitions/template-variables-library" }, "schedule": { "type": "string" }, "remove_overlays": { "type": "boolean" }, "reapply_overlays": { "type": "boolean" }, "reset_overlays": { "type": "string", "enum": ["tmdb","plex"] }, "run_order": { "type": "array", "uniqueItems": true, "items": {"type": "string", "enum": ["collections","metadata","operations","overlays"] } } } }, "^schedule_.*$": { "type": "string" } } }, "metadata-files": { "title": "metadata_files", "additionalProperties": false, "type": "array", "items": { "anyOf": [ { "$ref": "#/definitions/file-path" }, { "$ref": "#/definitions/folder-path" }, { "$ref": "#/definitions/url-path" }, { "$ref": "#/definitions/git-path" }, { "$ref": "#/definitions/repo-path" } ] } }, "collection-files": { "title": "collection_files", "additionalProperties": false, "type": "array", "items": { "anyOf": [ { "$ref": "#/definitions/pmm-collection-path" }, { "$ref": "#/definitions/file-path" }, { "$ref": "#/definitions/folder-path" }, { "$ref": "#/definitions/url-path" }, { "$ref": "#/definitions/git-path" }, { "$ref": "#/definitions/repo-path" } ] } }, "overlay-files": { "title": "overlay_files", "additionalProperties": false, "type": "array", "items": { "anyOf": [ { "$ref": "#/definitions/pmm-overlay-path" }, { "$ref": "#/definitions/file-path" }, { "$ref": "#/definitions/folder-path" }, { "$ref": "#/definitions/url-path" }, { "$ref": "#/definitions/git-path" }, { "$ref": "#/definitions/repo-path" } ] } }, "metadata-path": { "title": "metadata_path", "additionalProperties": false, "type": "array", "items": { "anyOf": [ { "$ref": "#/definitions/pmm-collection-path" }, { "$ref": "#/definitions/file-path" }, { "$ref": "#/definitions/folder-path" }, { "$ref": "#/definitions/url-path" }, { "$ref": "#/definitions/git-path" }, { "$ref": "#/definitions/repo-path" } ] } }, "overlay-path": { "deprecated": true, "title": "overlay_path", "additionalProperties": false, "type": "array", "items": { "anyOf": [ { "$ref": "#/definitions/pmm-overlay-path" }, { "$ref": "#/definitions/file-path" }, { "$ref": "#/definitions/folder-path" }, { "$ref": "#/definitions/url-path" }, { "$ref": "#/definitions/git-path" }, { "$ref": "#/definitions/repo-path" } ] } }, "playlist-path": { "title": "playlist_files", "additionalProperties": false, "type": "array", "items": { "anyOf": [ { "$ref": "#/definitions/pmm-playlist-path" }, { "$ref": "#/definitions/file-path" }, { "$ref": "#/definitions/folder-path" }, { "$ref": "#/definitions/url-path" }, { "$ref": "#/definitions/git-path" }, { "$ref": "#/definitions/repo-path" } ] } }, "operations": { "type": "object", "additionalProperties": false, "properties": { "assets_for_all": { "type": "boolean" }, "update_blank_track_titles": { "type": "boolean" }, "remove_title_parentheses": { "type": "boolean" }, "split_duplicates": { "type": "boolean" }, "radarr_add_all": { "type": "boolean" }, "sonarr_add_all": { "type": "boolean" }, "mass_genre_update": { "type": "string", "enum": ["tmdb","tvdb","imdb","omdb","anidb","anidb_3_0","anidb_2_5","anidb_2_0","anidb_1_5","anidb_1_0","anidb_0_5","mal","lock","unlock","remove","reset"] }, "mass_content_rating_update": { "type": "string", "enum": ["mdb","mdb_commonsense","mdb_commonsense0","omdb","mal","lock","unlock","remove","reset"] }, "mass_original_title_update": { "type": "string", "enum": ["anidb","anidb_official","mal","mal_english","mal_japanese","lock","unlock","remove","reset"] }, "mass_studio_update": { "type": "string", "enum": ["anidb","mal","tmdb","lock","unlock","remove","reset"] }, "mass_originally_available_update": { "type": "string", "enum": ["tmdb","tvdb","omdb","mdb","anidb","mal","lock","unlock","remove","reset"] }, "mass_audience_rating_update": { "type": "string", "enum": ["tmdb","imdb","trakt_user","omdb","mdb","mdb_average","mdb_imdb","mdb_metacritic","mdb_metacriticuser","mdb_trakt","mdb_tomatoes","mdb_tomatoesaudience","mdb_tmdb","mdb_letterboxd","mdb_myanimelist","anidb_rating","anidb_average","anidb_score","mal","lock","unlock","remove","reset"] }, "mass_critic_rating_update": { "type": "string", "enum": ["tmdb","imdb","trakt_user","omdb","mdb","mdb_average","mdb_imdb","mdb_metacritic","mdb_metacriticuser","mdb_trakt","mdb_tomatoes","mdb_tomatoesaudience","mdb_tmdb","mdb_letterboxd","mdb_myanimelist","anidb_rating","anidb_average","anidb_score","mal","lock","unlock","remove","reset"] }, "mass_user_rating_update": { "type": "string", "enum": ["tmdb","imdb","trakt_user","omdb","mdb","mdb_average","mdb_imdb","mdb_metacritic","mdb_metacriticuser","mdb_trakt","mdb_tomatoes","mdb_tomatoesaudience","mdb_tmdb","mdb_letterboxd","mdb_myanimelist","anidb_rating","anidb_average","anidb_score","mal","lock","unlock","remove","reset"] }, "mass_episode_audience_rating_update": { "type": "string", "enum": ["tmdb","imdb","lock","remove","reset","unlock"] }, "mass_episode_critic_rating_update": { "type": "string", "enum": ["tmdb","imdb","lock","remove","reset","unlock"] }, "mass_episode_user_rating_update": { "type": "string", "enum": ["tmdb","imdb","lock","remove","reset","unlock"] }, "mass_poster_update": { "type": "string", "enum": ["tmdb","plex","lock","unlock"] }, "mass_background_update": { "type": "string", "enum": ["tmdb","plex","lock","unlock"] }, "mass_imdb_parental_labels": { "type": "string", "enum": ["none","mild","moderate","severe"] }, "mass_collection_mode": { "type": "string", "enum": ["default","hide","hide_items","show_items"] }, "radarr_remove_by_tag": { "type": "string" }, "sonarr_remove_by_tag": { "type": "string" }, "delete_collections": { "type": "object", "properties": { "configured": { "type": "boolean" }, "managed": { "type": "boolean" }, "less": { "type": "integer" } }, "required": [] }, "genre_mapper": { "type": "object", "properties": {}, "patternProperties": { "^.*$": { "type": ["string", "null"], "pattern": "^.*$" } }, "required": [] }, "content_rating_mapper": { "type": "object", "properties": {}, "patternProperties": { "^.*$": { "type": ["string", "null"], "pattern": "^.*$" } }, "required": [] }, "metadata_backup": { "type": "object", "properties": { "path": { "type": "string" }, "exclude": { "oneOf": [ { "type": "string"}, { "type": "array", "uniqueItems": true, "items": {"type": "string" }} ] }, "sync_tags": { "type": "boolean" }, "add_blank_entries": { "type": "boolean" } }, "required": [] } }, "required": [], "dependentRequired": {}, "title": "operations" }, "template-variables-library": { "type": "object", "properties": { "sep_style": { "type": "string", "enum": ["amethyst", "aqua", "blue", "forest", "fuchsia", "gold", "gray", "green", "navy", "ocean", "olive", "orchid", "orig", "pink", "plum", "purple", "red", "rust", "salmon", "sand", "stb", "tan"] }, "collection_mode": { "type": "string", "enum": ["default", "hide", "hide_items", "show_items"] }, "language": { "type": "string", "enum": ["en", "fr", "ar", "da", "nl", "de", "it", "pt-br", "nb-no", "es", "sv"] }, "placeholder_imdb_id": { "type": "string", "pattern": "^tt\\d{7}$" } }, "required": [], "title": "template_variables" }, "template-variables-collections": { "type": "object", "properties": { "data": { "type": "object", "properties": { "starting": { "oneOf": [ { "type": "integer", "minimum": 0 }, { "type": "string", "pattern": "^current_year(-\\d+)?$" } ] }, "ending": { "oneOf": [ { "type": "integer", "minimum": 1 }, { "type": "string", "pattern": "^current_year(-\\d+)?$" } ] }, "increment": { "type": "integer", "minimum": 0 }, "depth": { "type": "integer", "minimum": 1 }, "limit": { "type": "integer", "minimum": 1 } }, "additionalProperties": false }, "style": { "type": "string", "enum": ["color", "white", "bw", "diiivoy", "diiivoycolor", "rainier", "signature", "orig", "transparent", "default", "standards"] } }, "required": [], "dependentRequired": {}, "title": "template_variables" }, "template-variables-overlays": { "type": "object", "additionalProperties": false, "properties": { "addon_offset": { "type": "integer", "exclusiveMinimum": 0 }, "addon_position": { "type": "string", "enum": ["left","top","bottom","right"] }, "back_align": { "type": "string", "enum": ["left","right","center","top","bottom"] }, "back_color": { "type": "string", "pattern": "^\\#([A-Fa-f0-9]{3}|[A-Fa-f0-9]{4}|[A-Fa-f0-9]{6}|[A-Fa-f0-9]{8})$" }, "back_height": { "type": "integer", "exclusiveMinimum": 0 }, "back_line_color": { "type": "string", "pattern": "^\\#([A-Fa-f0-9]{3}|[A-Fa-f0-9]{4}|[A-Fa-f0-9]{6}|[A-Fa-f0-9]{8})$" }, "back_line_width": { "type": "integer", "exclusiveMinimum": 0 }, "back_padding": { "type": "integer", "exclusiveMinimum": 0 }, "back_radius": { "type": "integer", "exclusiveMinimum": 0 }, "back_width": { "type": "integer", "exclusiveMinimum": 0 }, "builder_level": { "type": "string", "enum": ["show","season","episode"] }, "file": { "type": "string" }, "flag_alignment": { "type": "string", "enum": ["left","right"] }, "font_color": { "type": "string", "pattern": "^\\#([A-Fa-f0-9]{3}|[A-Fa-f0-9]{4}|[A-Fa-f0-9]{6}|[A-Fa-f0-9]{8})$" }, "font_size": { "type": "integer", "exclusiveMinimum": 0 }, "font_style": { "type": "string", "enum": ["Any","Italic","Normal","Oblique"] }, "font": { "type": "string" }, "git": { "type": "string" }, "group_alignment": { "type": "string", "enum": ["horizontal","vertical"] }, "horizontal_align": { "type": "string", "enum": ["left","center","right"] }, "horizontal_offset": { "type": "integer", "minimum": 0 }, "horizontal_position": { "type": "string", "enum": ["left","left2","center","center_left","center_right","right","right2"] }, "languages": { "type": "string", "pattern": "^[a-z]{2}$" }, "last": { "type": "integer", "exclusiveMinimum": 0 }, "limit": { "type": "integer", "exclusiveMinimum": 0 }, "location": { "type": "string", "enum": ["world","albania","argentina","armenia","australia","austria","azerbaijan","bahamas","bahrain","bangladesh","belarus","belgium","belize","benin","bolivia","bosnia_and_herzegovina","botswana","brazil","bulgaria","burkina_faso","cambodia","canada","chile","colombia","costa_rica","croatia","cyprus","czech_republic","denmark","dominican_republic","ecuador","egypt","estonia","finland","france","gabon","germany","ghana","greece","guatemala","guinea_bissau","haiti","honduras","hong_kong","hungary","iceland","india","indonesia","ireland","israel","italy","ivory_coast","jamaica","japan","jordan","kazakhstan","kenya","kuwait","kyrgyzstan","laos","latvia","lebanon","lithuania","luxembourg","malaysia","maldives","mali","malta","mexico","moldova","mongolia","montenegro","morocco","mozambique","namibia","netherlands","new_zealand","nicaragua","niger","nigeria","north_macedonia","norway","oman","pakistan","panama","papua_new_guinea","paraguay","peru","philippines","poland","portugal","qatar","romania","russia","rwanda","salvador","saudi_arabia","senegal","serbia","singapore","slovakia","slovenia","south_africa","south_korea","spain","sri_lanka","sweden","switzerland","taiwan","tajikistan","tanzania","thailand","togo","trinidad_and_tobago","turkey","turkmenistan","uganda","ukraine","united_arab_emirates","united_kingdom","united_states","uruguay","uzbekistan","venezuela","vietnam","zambia","zimbabwe"] }, "minimum": { "type": "integer"}, "offset": { "type": "integer", "minimum": 0 }, "overlay_limit": { "type": "integer", "minimum": 1, "maximum": 5 }, "position": { "type": "string", "enum": ["left","right"] }, "post_nr_text": { "type": "string" }, "post_text": { "type": "string" }, "pre_nr_text": { "type": "string" }, "pre_text": { "type": "string" }, "rating_alignment": { "type": "string", "enum": ["vertical", "horizontal"] }, "rating1": { "type": "string", "enum": ["critic", "audience", "user"] }, "rating1_image": { "type": "string", "enum": ["anidb", "imdb", "letterboxd", "tmdb", "metacritic", "rt_popcorn", "rt_tomato", "trakt", "mal", "mdb", "star"] }, "rating1_font": { "type": "string" }, "rating1_font_size": { "type": "integer", "minimum": 1 }, "rating2": { "type": "string", "enum": ["critic", "audience", "user"] }, "rating2_image": { "type": "string", "enum": ["anidb", "imdb", "letterboxd", "tmdb", "metacritic", "rt_popcorn", "rt_tomato", "trakt", "mal", "mdb", "star"] }, "rating2_font": { "type": "string" }, "rating2_font_size": { "type": "integer", "minimum": 1 }, "rating3": { "type": "string", "enum": ["critic", "audience", "user"] }, "rating3_image": { "type": "string", "enum": ["anidb", "imdb", "letterboxd", "tmdb", "metacritic", "rt_popcorn", "rt_tomato", "trakt", "mal", "mdb", "star"] }, "rating3_font": { "type": "string" }, "rating3_font_size": { "type": "integer", "minimum": 1 }, "region": { "type": "string", "enum": ["us", "uk", "ca", "da", "de", "es", "fr", "it", "pt-br"] }, "remove_overlays": { "type": "boolean" }, "reapply_overlays": { "type": "boolean" }, "reset_overlays": { "type": "string", "enum": ["tmdb", "plex"] }, "repo": { "type": "string" }, "stroke_color": { "type": "string", "pattern": "^\\#([A-Fa-f0-9]{3}|[A-Fa-f0-9]{4}|[A-Fa-f0-9]{6}|[A-Fa-f0-9]{8})$" }, "stroke_width": { "type": "integer", "exclusiveMinimum": 0 }, "style": { "type": "string", "enum": ["compact","standard","bigger","round","square","half", "red", "black", "yellow", "gray"] }, "text": { "type": "string" }, "time_window": { "type": "string", "enum": ["today","yesterday","this_week","last_week","this_month","last_month","this_year","last_year"] }, "url": { "type": "string", "format": "uri", "pattern": "^(https?)://" }, "use_edition": { "type": "boolean" }, "use_lowercase": { "type": "boolean" }, "use_resolution": { "type": "boolean" }, "use_subtitles": { "type": "boolean" }, "vertical_align": { "type": "string", "enum": ["top","center","bottom"] }, "vertical_offset": { "type": "integer", "minimum": 0 }, "vertical_position": { "type": "string", "enum": ["top","top2","top3","center","center_top","center_bottom","bottom","bottom2","bottom3"] } }, "patternProperties": { "^back_color_.*$": { "type": "string", "pattern": "^\\#([A-Fa-f0-9]{3}|[A-Fa-f0-9]{4}|[A-Fa-f0-9]{6}|[A-Fa-f0-9]{8})$" }, "^country_.*$": { "type": "string", "pattern": "^[A-Z]{2}$" }, "^file_.*$": { "type": "string" }, "^git_.*$": { "type": "string" }, "^limit_.*$": { "type": "integer", "exclusiveMinimum": 0 }, "^location_.*$": { "type": "string", "enum": ["world","albania","argentina","armenia","australia","austria","azerbaijan","bahamas","bahrain","bangladesh","belarus","belgium","belize","benin","bolivia","bosnia_and_herzegovina","botswana","brazil","bulgaria","burkina_faso","cambodia","canada","chile","colombia","costa_rica","croatia","cyprus","czech_republic","denmark","dominican_republic","ecuador","egypt","estonia","finland","france","gabon","germany","ghana","greece","guatemala","guinea_bissau","haiti","honduras","hong_kong","hungary","iceland","india","indonesia","ireland","israel","italy","ivory_coast","jamaica","japan","jordan","kazakhstan","kenya","kuwait","kyrgyzstan","laos","latvia","lebanon","lithuania","luxembourg","malaysia","maldives","mali","malta","mexico","moldova","mongolia","montenegro","morocco","mozambique","namibia","netherlands","new_zealand","nicaragua","niger","nigeria","north_macedonia","norway","oman","pakistan","panama","papua_new_guinea","paraguay","peru","philippines","poland","portugal","qatar","romania","russia","rwanda","salvador","saudi_arabia","senegal","serbia","singapore","slovakia","slovenia","south_africa","south_korea","spain","sri_lanka","sweden","switzerland","taiwan","tajikistan","tanzania","thailand","togo","trinidad_and_tobago","turkey","turkmenistan","uganda","ukraine","united_arab_emirates","united_kingdom","united_states","uruguay","uzbekistan","venezuela","vietnam","zambia","zimbabwe"] }, "^rating\\d+_.*$": { "type": "string" }, "^regex_.*$": { "type": "string" }, "^repo_.*$": { "type": "string" }, "^text_.*$": { "type": "string" }, "^time_window_.*$": { "type": "string", "enum": ["today","yesterday","this_week","last_week","this_month","last_month","this_year","last_year"] }, "^url_.*$": { "type": "string", "format": "uri", "pattern": "^(https?)://" }, "^use_.*$": { "type": "boolean" }, "^weight_.*$": { "type": "integer" } }, "required": [ ], "dependentRequired": { }, "title": "template_variables" }, "template-variables-playlists": { "type": "array", "additionalProperties": true, "properties": { }, "required": [ ], "dependentRequired": { }, "title": "template_variables" } } }