Plex-Meta-Manager/json-schema/config-schema.json
bullmoose20 d74f8e2ef5
Update config-schema.json
fix the "first" keyword to work with "current_year" validation
2024-01-19 12:22:51 -05:00

1592 lines
72 KiB
JSON

{
"$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. <path_to_assets>/Star Wars/poster.png and <path_to_assets>/Star Wars.png are both asset depth 0, whilst <path_to_assets>/Movies/Star Wars/poster.png and <path_to_assets>/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+)?|first)$" }
]
},
"ending": {
"oneOf": [
{ "type": "integer", "minimum": 1 },
{ "type": "string", "pattern": "^(current_year(-\\d+)?|first)$" }
]
},
"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"
}
}
}