document.write('
Data hosted with ♥ by Pastebin.com - Download Raw - See Original
  1. {
  2.   "description": "JSON-RPC API of XBMC",
  3.   "id": "http://xbmc.org/jsonrpc/ServiceDescription.json",
  4.   "methods": {
  5.     "Addons.ExecuteAddon": {
  6.       "description": "Executes the given addon with the given parameters (if possible)",
  7.       "params": [
  8.         {
  9.           "name": "addonid",
  10.           "required": true,
  11.           "type": "string"
  12.         },
  13.         {
  14.           "default": "",
  15.           "name": "params",
  16.           "type": [
  17.             {
  18.               "additionalProperties": {
  19.                 "default": "",
  20.                 "type": "string"
  21.               },
  22.               "type": "object"
  23.             },
  24.             {
  25.               "items": {
  26.                 "type": "string"
  27.               },
  28.               "type": "array"
  29.             },
  30.             {
  31.               "description": "URL path (must start with / or ?",
  32.               "type": "string"
  33.             }
  34.           ]
  35.         },
  36.         {
  37.           "default": false,
  38.           "name": "wait",
  39.           "type": "boolean"
  40.         }
  41.       ],
  42.       "returns": {
  43.         "type": "string"
  44.       },
  45.       "type": "method"
  46.     },
  47.     "Addons.GetAddonDetails": {
  48.       "description": "Gets the details of a specific addon",
  49.       "params": [
  50.         {
  51.           "name": "addonid",
  52.           "required": true,
  53.           "type": "string"
  54.         },
  55.         {
  56.           "$ref": "Addon.Fields",
  57.           "name": "properties"
  58.         }
  59.       ],
  60.       "returns": {
  61.         "properties": {
  62.           "addon": {
  63.             "$ref": "Addon.Details",
  64.             "required": true
  65.           },
  66.           "limits": {
  67.             "$ref": "List.LimitsReturned",
  68.             "required": true
  69.           }
  70.         },
  71.         "type": "object"
  72.       },
  73.       "type": "method"
  74.     },
  75.     "Addons.GetAddons": {
  76.       "description": "Gets all available addons",
  77.       "params": [
  78.         {
  79.           "$ref": "Addon.Types",
  80.           "default": "unknown",
  81.           "name": "type"
  82.         },
  83.         {
  84.           "$ref": "Addon.Content",
  85.           "default": "unknown",
  86.           "description": "Content provided by the addon. Only considered for plugins and scripts.",
  87.           "name": "content"
  88.         },
  89.         {
  90.           "default": "all",
  91.           "name": "enabled",
  92.           "type": [
  93.             {
  94.               "type": "boolean"
  95.             },
  96.             {
  97.               "enums": [
  98.                 "all"
  99.               ],
  100.               "type": "string"
  101.             }
  102.           ]
  103.         },
  104.         {
  105.           "$ref": "Addon.Fields",
  106.           "name": "properties"
  107.         },
  108.         {
  109.           "$ref": "List.Limits",
  110.           "name": "limits"
  111.         }
  112.       ],
  113.       "returns": {
  114.         "properties": {
  115.           "addons": {
  116.             "items": {
  117.               "$ref": "Addon.Details"
  118.             },
  119.             "type": "array"
  120.           },
  121.           "limits": {
  122.             "$ref": "List.LimitsReturned",
  123.             "required": true
  124.           }
  125.         },
  126.         "type": "object"
  127.       },
  128.       "type": "method"
  129.     },
  130.     "Addons.SetAddonEnabled": {
  131.       "description": "Enables/Disables a specific addon",
  132.       "params": [
  133.         {
  134.           "name": "addonid",
  135.           "required": true,
  136.           "type": "string"
  137.         },
  138.         {
  139.           "$ref": "Global.Toggle",
  140.           "name": "enabled",
  141.           "required": true
  142.         }
  143.       ],
  144.       "returns": {
  145.         "type": "string"
  146.       },
  147.       "type": "method"
  148.     },
  149.     "Application.GetProperties": {
  150.       "description": "Retrieves the values of the given properties",
  151.       "params": [
  152.         {
  153.           "items": {
  154.             "$ref": "Application.Property.Name"
  155.           },
  156.           "name": "properties",
  157.           "required": true,
  158.           "type": "array",
  159.           "uniqueItems": true
  160.         }
  161.       ],
  162.       "returns": {
  163.         "$ref": "Application.Property.Value"
  164.       },
  165.       "type": "method"
  166.     },
  167.     "Application.Quit": {
  168.       "description": "Quit application",
  169.       "params": [],
  170.       "returns": {
  171.         "type": "string"
  172.       },
  173.       "type": "method"
  174.     },
  175.     "Application.SetMute": {
  176.       "description": "Toggle mute/unmute",
  177.       "params": [
  178.         {
  179.           "$ref": "Global.Toggle",
  180.           "name": "mute",
  181.           "required": true
  182.         }
  183.       ],
  184.       "returns": {
  185.         "description": "Mute state",
  186.         "type": "boolean"
  187.       },
  188.       "type": "method"
  189.     },
  190.     "Application.SetVolume": {
  191.       "description": "Set the current volume",
  192.       "params": [
  193.         {
  194.           "name": "volume",
  195.           "required": true,
  196.           "type": [
  197.             {
  198.               "maximum": 100,
  199.               "minimum": 0,
  200.               "type": "integer"
  201.             },
  202.             {
  203.               "$ref": "Global.IncrementDecrement"
  204.             }
  205.           ]
  206.         }
  207.       ],
  208.       "returns": {
  209.         "type": "integer"
  210.       },
  211.       "type": "method"
  212.     },
  213.     "AudioLibrary.Clean": {
  214.       "description": "Cleans the audio library from non-existent items",
  215.       "params": [
  216.         {
  217.           "default": true,
  218.           "description": "Whether or not to show the progress bar or any other GUI dialog",
  219.           "name": "showdialogs",
  220.           "type": "boolean"
  221.         }
  222.       ],
  223.       "returns": {
  224.         "type": "string"
  225.       },
  226.       "type": "method"
  227.     },
  228.     "AudioLibrary.Export": {
  229.       "description": "Exports all items from the audio library",
  230.       "params": [
  231.         {
  232.           "name": "options",
  233.           "type": [
  234.             {
  235.               "additionalProperties": false,
  236.               "properties": {
  237.                 "path": {
  238.                   "description": "Path to the directory to where the data should be exported",
  239.                   "minLength": 1,
  240.                   "required": true,
  241.                   "type": "string"
  242.                 }
  243.               },
  244.               "type": "object"
  245.             },
  246.             {
  247.               "additionalProperties": false,
  248.               "properties": {
  249.                 "images": {
  250.                   "default": false,
  251.                   "description": "Whether to export thumbnails and fanart images",
  252.                   "type": "boolean"
  253.                 },
  254.                 "overwrite": {
  255.                   "default": false,
  256.                   "description": "Whether to overwrite existing exported files",
  257.                   "type": "boolean"
  258.                 }
  259.               },
  260.               "type": "object"
  261.             }
  262.           ]
  263.         }
  264.       ],
  265.       "returns": {
  266.         "type": "string"
  267.       },
  268.       "type": "method"
  269.     },
  270.     "AudioLibrary.GetAlbumDetails": {
  271.       "description": "Retrieve details about a specific album",
  272.       "params": [
  273.         {
  274.           "$ref": "Library.Id",
  275.           "name": "albumid",
  276.           "required": true
  277.         },
  278.         {
  279.           "$ref": "Audio.Fields.Album",
  280.           "name": "properties"
  281.         }
  282.       ],
  283.       "returns": {
  284.         "properties": {
  285.           "albumdetails": {
  286.             "$ref": "Audio.Details.Album"
  287.           }
  288.         },
  289.         "type": "object"
  290.       },
  291.       "type": "method"
  292.     },
  293.     "AudioLibrary.GetAlbums": {
  294.       "description": "Retrieve all albums from specified artist or genre",
  295.       "params": [
  296.         {
  297.           "$ref": "Audio.Fields.Album",
  298.           "name": "properties"
  299.         },
  300.         {
  301.           "$ref": "List.Limits",
  302.           "name": "limits"
  303.         },
  304.         {
  305.           "$ref": "List.Sort",
  306.           "name": "sort"
  307.         },
  308.         {
  309.           "name": "filter",
  310.           "type": [
  311.             {
  312.               "additionalProperties": false,
  313.               "properties": {
  314.                 "genreid": {
  315.                   "$ref": "Library.Id",
  316.                   "required": true
  317.                 }
  318.               },
  319.               "type": "object"
  320.             },
  321.             {
  322.               "additionalProperties": false,
  323.               "properties": {
  324.                 "genre": {
  325.                   "minLength": 1,
  326.                   "required": true,
  327.                   "type": "string"
  328.                 }
  329.               },
  330.               "type": "object"
  331.             },
  332.             {
  333.               "additionalProperties": false,
  334.               "properties": {
  335.                 "artistid": {
  336.                   "$ref": "Library.Id",
  337.                   "required": true
  338.                 }
  339.               },
  340.               "type": "object"
  341.             },
  342.             {
  343.               "additionalProperties": false,
  344.               "properties": {
  345.                 "artist": {
  346.                   "minLength": 1,
  347.                   "required": true,
  348.                   "type": "string"
  349.                 }
  350.               },
  351.               "type": "object"
  352.             },
  353.             {
  354.               "$ref": "List.Filter.Albums"
  355.             }
  356.           ]
  357.         }
  358.       ],
  359.       "returns": {
  360.         "properties": {
  361.           "albums": {
  362.             "items": {
  363.               "$ref": "Audio.Details.Album"
  364.             },
  365.             "type": "array"
  366.           },
  367.           "limits": {
  368.             "$ref": "List.LimitsReturned",
  369.             "required": true
  370.           }
  371.         },
  372.         "type": "object"
  373.       },
  374.       "type": "method"
  375.     },
  376.     "AudioLibrary.GetArtistDetails": {
  377.       "description": "Retrieve details about a specific artist",
  378.       "params": [
  379.         {
  380.           "$ref": "Library.Id",
  381.           "name": "artistid",
  382.           "required": true
  383.         },
  384.         {
  385.           "$ref": "Audio.Fields.Artist",
  386.           "name": "properties"
  387.         }
  388.       ],
  389.       "returns": {
  390.         "properties": {
  391.           "artistdetails": {
  392.             "$ref": "Audio.Details.Artist"
  393.           }
  394.         },
  395.         "type": "object"
  396.       },
  397.       "type": "method"
  398.     },
  399.     "AudioLibrary.GetArtists": {
  400.       "description": "Retrieve all artists",
  401.       "params": [
  402.         {
  403.           "$ref": "Optional.Boolean",
  404.           "default": null,
  405.           "description": "Whether or not to include artists only appearing in compilations. If the parameter is not passed or is passed as null the GUI setting will be used",
  406.           "name": "albumartistsonly"
  407.         },
  408.         {
  409.           "$ref": "Audio.Fields.Artist",
  410.           "name": "properties"
  411.         },
  412.         {
  413.           "$ref": "List.Limits",
  414.           "name": "limits"
  415.         },
  416.         {
  417.           "$ref": "List.Sort",
  418.           "name": "sort"
  419.         },
  420.         {
  421.           "name": "filter",
  422.           "type": [
  423.             {
  424.               "additionalProperties": false,
  425.               "properties": {
  426.                 "genreid": {
  427.                   "$ref": "Library.Id",
  428.                   "required": true
  429.                 }
  430.               },
  431.               "type": "object"
  432.             },
  433.             {
  434.               "additionalProperties": false,
  435.               "properties": {
  436.                 "genre": {
  437.                   "minLength": 1,
  438.                   "required": true,
  439.                   "type": "string"
  440.                 }
  441.               },
  442.               "type": "object"
  443.             },
  444.             {
  445.               "additionalProperties": false,
  446.               "properties": {
  447.                 "albumid": {
  448.                   "$ref": "Library.Id",
  449.                   "required": true
  450.                 }
  451.               },
  452.               "type": "object"
  453.             },
  454.             {
  455.               "additionalProperties": false,
  456.               "properties": {
  457.                 "album": {
  458.                   "minLength": 1,
  459.                   "required": true,
  460.                   "type": "string"
  461.                 }
  462.               },
  463.               "type": "object"
  464.             },
  465.             {
  466.               "additionalProperties": false,
  467.               "properties": {
  468.                 "songid": {
  469.                   "$ref": "Library.Id",
  470.                   "required": true
  471.                 }
  472.               },
  473.               "type": "object"
  474.             },
  475.             {
  476.               "$ref": "List.Filter.Artists"
  477.             }
  478.           ]
  479.         }
  480.       ],
  481.       "returns": {
  482.         "properties": {
  483.           "artists": {
  484.             "items": {
  485.               "$ref": "Audio.Details.Artist"
  486.             },
  487.             "type": "array"
  488.           },
  489.           "limits": {
  490.             "$ref": "List.LimitsReturned",
  491.             "required": true
  492.           }
  493.         },
  494.         "type": "object"
  495.       },
  496.       "type": "method"
  497.     },
  498.     "AudioLibrary.GetGenres": {
  499.       "description": "Retrieve all genres",
  500.       "params": [
  501.         {
  502.           "$ref": "Library.Fields.Genre",
  503.           "name": "properties"
  504.         },
  505.         {
  506.           "$ref": "List.Limits",
  507.           "name": "limits"
  508.         },
  509.         {
  510.           "$ref": "List.Sort",
  511.           "name": "sort"
  512.         }
  513.       ],
  514.       "returns": {
  515.         "properties": {
  516.           "genres": {
  517.             "items": {
  518.               "$ref": "Library.Details.Genre"
  519.             },
  520.             "required": true,
  521.             "type": "array"
  522.           },
  523.           "limits": {
  524.             "$ref": "List.LimitsReturned",
  525.             "required": true
  526.           }
  527.         },
  528.         "type": "object"
  529.       },
  530.       "type": "method"
  531.     },
  532.     "AudioLibrary.GetRecentlyAddedAlbums": {
  533.       "description": "Retrieve recently added albums",
  534.       "params": [
  535.         {
  536.           "$ref": "Audio.Fields.Album",
  537.           "name": "properties"
  538.         },
  539.         {
  540.           "$ref": "List.Limits",
  541.           "name": "limits"
  542.         },
  543.         {
  544.           "$ref": "List.Sort",
  545.           "name": "sort"
  546.         }
  547.       ],
  548.       "returns": {
  549.         "properties": {
  550.           "albums": {
  551.             "items": {
  552.               "$ref": "Audio.Details.Album"
  553.             },
  554.             "type": "array"
  555.           },
  556.           "limits": {
  557.             "$ref": "List.LimitsReturned",
  558.             "required": true
  559.           }
  560.         },
  561.         "type": "object"
  562.       },
  563.       "type": "method"
  564.     },
  565.     "AudioLibrary.GetRecentlyAddedSongs": {
  566.       "description": "Retrieve recently added songs",
  567.       "params": [
  568.         {
  569.           "$ref": "List.Amount",
  570.           "default": -1,
  571.           "description": "The amount of recently added albums from which to return the songs",
  572.           "name": "albumlimit"
  573.         },
  574.         {
  575.           "$ref": "Audio.Fields.Song",
  576.           "name": "properties"
  577.         },
  578.         {
  579.           "$ref": "List.Limits",
  580.           "name": "limits"
  581.         },
  582.         {
  583.           "$ref": "List.Sort",
  584.           "name": "sort"
  585.         }
  586.       ],
  587.       "returns": {
  588.         "properties": {
  589.           "limits": {
  590.             "$ref": "List.LimitsReturned",
  591.             "required": true
  592.           },
  593.           "songs": {
  594.             "items": {
  595.               "$ref": "Audio.Details.Song"
  596.             },
  597.             "type": "array"
  598.           }
  599.         },
  600.         "type": "object"
  601.       },
  602.       "type": "method"
  603.     },
  604.     "AudioLibrary.GetRecentlyPlayedAlbums": {
  605.       "description": "Retrieve recently played albums",
  606.       "params": [
  607.         {
  608.           "$ref": "Audio.Fields.Album",
  609.           "name": "properties"
  610.         },
  611.         {
  612.           "$ref": "List.Limits",
  613.           "name": "limits"
  614.         },
  615.         {
  616.           "$ref": "List.Sort",
  617.           "name": "sort"
  618.         }
  619.       ],
  620.       "returns": {
  621.         "properties": {
  622.           "albums": {
  623.             "items": {
  624.               "$ref": "Audio.Details.Album"
  625.             },
  626.             "type": "array"
  627.           },
  628.           "limits": {
  629.             "$ref": "List.LimitsReturned",
  630.             "required": true
  631.           }
  632.         },
  633.         "type": "object"
  634.       },
  635.       "type": "method"
  636.     },
  637.     "AudioLibrary.GetRecentlyPlayedSongs": {
  638.       "description": "Retrieve recently played songs",
  639.       "params": [
  640.         {
  641.           "$ref": "Audio.Fields.Song",
  642.           "name": "properties"
  643.         },
  644.         {
  645.           "$ref": "List.Limits",
  646.           "name": "limits"
  647.         },
  648.         {
  649.           "$ref": "List.Sort",
  650.           "name": "sort"
  651.         }
  652.       ],
  653.       "returns": {
  654.         "properties": {
  655.           "limits": {
  656.             "$ref": "List.LimitsReturned",
  657.             "required": true
  658.           },
  659.           "songs": {
  660.             "items": {
  661.               "$ref": "Audio.Details.Song"
  662.             },
  663.             "type": "array"
  664.           }
  665.         },
  666.         "type": "object"
  667.       },
  668.       "type": "method"
  669.     },
  670.     "AudioLibrary.GetSongDetails": {
  671.       "description": "Retrieve details about a specific song",
  672.       "params": [
  673.         {
  674.           "$ref": "Library.Id",
  675.           "name": "songid",
  676.           "required": true
  677.         },
  678.         {
  679.           "$ref": "Audio.Fields.Song",
  680.           "name": "properties"
  681.         }
  682.       ],
  683.       "returns": {
  684.         "properties": {
  685.           "songdetails": {
  686.             "$ref": "Audio.Details.Song"
  687.           }
  688.         },
  689.         "type": "object"
  690.       },
  691.       "type": "method"
  692.     },
  693.     "AudioLibrary.GetSongs": {
  694.       "description": "Retrieve all songs from specified album, artist or genre",
  695.       "params": [
  696.         {
  697.           "$ref": "Audio.Fields.Song",
  698.           "name": "properties"
  699.         },
  700.         {
  701.           "$ref": "List.Limits",
  702.           "name": "limits"
  703.         },
  704.         {
  705.           "$ref": "List.Sort",
  706.           "name": "sort"
  707.         },
  708.         {
  709.           "name": "filter",
  710.           "type": [
  711.             {
  712.               "additionalProperties": false,
  713.               "properties": {
  714.                 "genreid": {
  715.                   "$ref": "Library.Id",
  716.                   "required": true
  717.                 }
  718.               },
  719.               "type": "object"
  720.             },
  721.             {
  722.               "additionalProperties": false,
  723.               "properties": {
  724.                 "genre": {
  725.                   "minLength": 1,
  726.                   "required": true,
  727.                   "type": "string"
  728.                 }
  729.               },
  730.               "type": "object"
  731.             },
  732.             {
  733.               "additionalProperties": false,
  734.               "properties": {
  735.                 "artistid": {
  736.                   "$ref": "Library.Id",
  737.                   "required": true
  738.                 }
  739.               },
  740.               "type": "object"
  741.             },
  742.             {
  743.               "additionalProperties": false,
  744.               "properties": {
  745.                 "artist": {
  746.                   "minLength": 1,
  747.                   "required": true,
  748.                   "type": "string"
  749.                 }
  750.               },
  751.               "type": "object"
  752.             },
  753.             {
  754.               "additionalProperties": false,
  755.               "properties": {
  756.                 "albumid": {
  757.                   "$ref": "Library.Id",
  758.                   "required": true
  759.                 }
  760.               },
  761.               "type": "object"
  762.             },
  763.             {
  764.               "additionalProperties": false,
  765.               "properties": {
  766.                 "album": {
  767.                   "minLength": 1,
  768.                   "required": true,
  769.                   "type": "string"
  770.                 }
  771.               },
  772.               "type": "object"
  773.             },
  774.             {
  775.               "$ref": "List.Filter.Songs"
  776.             }
  777.           ]
  778.         }
  779.       ],
  780.       "returns": {
  781.         "properties": {
  782.           "limits": {
  783.             "$ref": "List.LimitsReturned",
  784.             "required": true
  785.           },
  786.           "songs": {
  787.             "items": {
  788.               "$ref": "Audio.Details.Song"
  789.             },
  790.             "type": "array"
  791.           }
  792.         },
  793.         "type": "object"
  794.       },
  795.       "type": "method"
  796.     },
  797.     "AudioLibrary.Scan": {
  798.       "description": "Scans the audio sources for new library items",
  799.       "params": [
  800.         {
  801.           "default": "",
  802.           "name": "directory",
  803.           "type": "string"
  804.         },
  805.         {
  806.           "default": true,
  807.           "description": "Whether or not to show the progress bar or any other GUI dialog",
  808.           "name": "showdialogs",
  809.           "type": "boolean"
  810.         }
  811.       ],
  812.       "returns": {
  813.         "type": "string"
  814.       },
  815.       "type": "method"
  816.     },
  817.     "AudioLibrary.SetAlbumDetails": {
  818.       "description": "Update the given album with the given details",
  819.       "params": [
  820.         {
  821.           "$ref": "Library.Id",
  822.           "name": "albumid",
  823.           "required": true
  824.         },
  825.         {
  826.           "$ref": "Optional.String",
  827.           "default": null,
  828.           "name": "title"
  829.         },
  830.         {
  831.           "default": null,
  832.           "name": "artist",
  833.           "type": [
  834.             {
  835.               "type": "null"
  836.             },
  837.             {
  838.               "$ref": "Array.String"
  839.             }
  840.           ]
  841.         },
  842.         {
  843.           "$ref": "Optional.String",
  844.           "default": null,
  845.           "name": "description"
  846.         },
  847.         {
  848.           "default": null,
  849.           "name": "genre",
  850.           "type": [
  851.             {
  852.               "type": "null"
  853.             },
  854.             {
  855.               "$ref": "Array.String"
  856.             }
  857.           ]
  858.         },
  859.         {
  860.           "default": null,
  861.           "name": "theme",
  862.           "type": [
  863.             {
  864.               "type": "null"
  865.             },
  866.             {
  867.               "$ref": "Array.String"
  868.             }
  869.           ]
  870.         },
  871.         {
  872.           "default": null,
  873.           "name": "mood",
  874.           "type": [
  875.             {
  876.               "type": "null"
  877.             },
  878.             {
  879.               "$ref": "Array.String"
  880.             }
  881.           ]
  882.         },
  883.         {
  884.           "default": null,
  885.           "name": "style",
  886.           "type": [
  887.             {
  888.               "type": "null"
  889.             },
  890.             {
  891.               "$ref": "Array.String"
  892.             }
  893.           ]
  894.         },
  895.         {
  896.           "$ref": "Optional.String",
  897.           "default": null,
  898.           "name": "type"
  899.         },
  900.         {
  901.           "$ref": "Optional.String",
  902.           "default": null,
  903.           "name": "albumlabel"
  904.         },
  905.         {
  906.           "$ref": "Optional.Integer",
  907.           "default": null,
  908.           "name": "rating"
  909.         },
  910.         {
  911.           "$ref": "Optional.Integer",
  912.           "default": null,
  913.           "name": "year"
  914.         }
  915.       ],
  916.       "returns": {
  917.         "type": "string"
  918.       },
  919.       "type": "method"
  920.     },
  921.     "AudioLibrary.SetArtistDetails": {
  922.       "description": "Update the given artist with the given details",
  923.       "params": [
  924.         {
  925.           "$ref": "Library.Id",
  926.           "name": "artistid",
  927.           "required": true
  928.         },
  929.         {
  930.           "$ref": "Optional.String",
  931.           "default": null,
  932.           "name": "artist"
  933.         },
  934.         {
  935.           "default": null,
  936.           "name": "instrument",
  937.           "type": [
  938.             {
  939.               "type": "null"
  940.             },
  941.             {
  942.               "$ref": "Array.String"
  943.             }
  944.           ]
  945.         },
  946.         {
  947.           "default": null,
  948.           "name": "style",
  949.           "type": [
  950.             {
  951.               "type": "null"
  952.             },
  953.             {
  954.               "$ref": "Array.String"
  955.             }
  956.           ]
  957.         },
  958.         {
  959.           "default": null,
  960.           "name": "mood",
  961.           "type": [
  962.             {
  963.               "type": "null"
  964.             },
  965.             {
  966.               "$ref": "Array.String"
  967.             }
  968.           ]
  969.         },
  970.         {
  971.           "$ref": "Optional.String",
  972.           "default": null,
  973.           "name": "born"
  974.         },
  975.         {
  976.           "$ref": "Optional.String",
  977.           "default": null,
  978.           "name": "formed"
  979.         },
  980.         {
  981.           "$ref": "Optional.String",
  982.           "default": null,
  983.           "name": "description"
  984.         },
  985.         {
  986.           "default": null,
  987.           "name": "genre",
  988.           "type": [
  989.             {
  990.               "type": "null"
  991.             },
  992.             {
  993.               "$ref": "Array.String"
  994.             }
  995.           ]
  996.         },
  997.         {
  998.           "$ref": "Optional.String",
  999.           "default": null,
  1000.           "name": "died"
  1001.         },
  1002.         {
  1003.           "$ref": "Optional.String",
  1004.           "default": null,
  1005.           "name": "disbanded"
  1006.         },
  1007.         {
  1008.           "default": null,
  1009.           "name": "yearsactive",
  1010.           "type": [
  1011.             {
  1012.               "type": "null"
  1013.             },
  1014.             {
  1015.               "$ref": "Array.String"
  1016.             }
  1017.           ]
  1018.         }
  1019.       ],
  1020.       "returns": {
  1021.         "type": "string"
  1022.       },
  1023.       "type": "method"
  1024.     },
  1025.     "AudioLibrary.SetSongDetails": {
  1026.       "description": "Update the given song with the given details",
  1027.       "params": [
  1028.         {
  1029.           "$ref": "Library.Id",
  1030.           "name": "songid",
  1031.           "required": true
  1032.         },
  1033.         {
  1034.           "$ref": "Optional.String",
  1035.           "default": null,
  1036.           "name": "title"
  1037.         },
  1038.         {
  1039.           "default": null,
  1040.           "name": "artist",
  1041.           "type": [
  1042.             {
  1043.               "type": "null"
  1044.             },
  1045.             {
  1046.               "$ref": "Array.String"
  1047.             }
  1048.           ]
  1049.         },
  1050.         {
  1051.           "default": null,
  1052.           "name": "albumartist",
  1053.           "type": [
  1054.             {
  1055.               "type": "null"
  1056.             },
  1057.             {
  1058.               "$ref": "Array.String"
  1059.             }
  1060.           ]
  1061.         },
  1062.         {
  1063.           "default": null,
  1064.           "name": "genre",
  1065.           "type": [
  1066.             {
  1067.               "type": "null"
  1068.             },
  1069.             {
  1070.               "$ref": "Array.String"
  1071.             }
  1072.           ]
  1073.         },
  1074.         {
  1075.           "$ref": "Optional.Integer",
  1076.           "default": null,
  1077.           "name": "year"
  1078.         },
  1079.         {
  1080.           "$ref": "Optional.Integer",
  1081.           "default": null,
  1082.           "name": "rating"
  1083.         },
  1084.         {
  1085.           "$ref": "Optional.String",
  1086.           "default": null,
  1087.           "name": "album"
  1088.         },
  1089.         {
  1090.           "$ref": "Optional.Integer",
  1091.           "default": null,
  1092.           "name": "track"
  1093.         },
  1094.         {
  1095.           "$ref": "Optional.Integer",
  1096.           "default": null,
  1097.           "name": "disc"
  1098.         },
  1099.         {
  1100.           "$ref": "Optional.Integer",
  1101.           "default": null,
  1102.           "name": "duration"
  1103.         },
  1104.         {
  1105.           "$ref": "Optional.String",
  1106.           "default": null,
  1107.           "name": "comment"
  1108.         },
  1109.         {
  1110.           "$ref": "Optional.String",
  1111.           "default": null,
  1112.           "name": "musicbrainztrackid"
  1113.         },
  1114.         {
  1115.           "$ref": "Optional.String",
  1116.           "default": null,
  1117.           "name": "musicbrainzartistid"
  1118.         },
  1119.         {
  1120.           "$ref": "Optional.String",
  1121.           "default": null,
  1122.           "name": "musicbrainzalbumid"
  1123.         },
  1124.         {
  1125.           "$ref": "Optional.String",
  1126.           "default": null,
  1127.           "name": "musicbrainzalbumartistid"
  1128.         }
  1129.       ],
  1130.       "returns": {
  1131.         "type": "string"
  1132.       },
  1133.       "type": "method"
  1134.     },
  1135.     "Favourites.AddFavourite": {
  1136.       "description": "Add a favourite with the given details",
  1137.       "params": [
  1138.         {
  1139.           "name": "title",
  1140.           "required": true,
  1141.           "type": "string"
  1142.         },
  1143.         {
  1144.           "$ref": "Favourite.Type",
  1145.           "name": "type",
  1146.           "required": true
  1147.         },
  1148.         {
  1149.           "$ref": "Optional.String",
  1150.           "default": null,
  1151.           "description": "Required for media and script favourites types",
  1152.           "name": "path"
  1153.         },
  1154.         {
  1155.           "$ref": "Optional.String",
  1156.           "default": null,
  1157.           "description": "Required for window favourite type",
  1158.           "name": "window"
  1159.         },
  1160.         {
  1161.           "$ref": "Optional.String",
  1162.           "default": null,
  1163.           "name": "windowparameter"
  1164.         },
  1165.         {
  1166.           "$ref": "Optional.String",
  1167.           "default": null,
  1168.           "name": "thumbnail"
  1169.         }
  1170.       ],
  1171.       "returns": {
  1172.         "type": "string"
  1173.       },
  1174.       "type": "method"
  1175.     },
  1176.     "Favourites.GetFavourites": {
  1177.       "description": "Retrieve all favourites",
  1178.       "params": [
  1179.         {
  1180.           "default": null,
  1181.           "name": "type",
  1182.           "type": [
  1183.             {
  1184.               "type": "null"
  1185.             },
  1186.             {
  1187.               "$ref": "Favourite.Type"
  1188.             }
  1189.           ]
  1190.         },
  1191.         {
  1192.           "$ref": "Favourite.Fields.Favourite",
  1193.           "name": "properties"
  1194.         }
  1195.       ],
  1196.       "returns": {
  1197.         "properties": {
  1198.           "favourites": {
  1199.             "items": {
  1200.               "$ref": "Favourite.Details.Favourite"
  1201.             },
  1202.             "type": "array"
  1203.           },
  1204.           "limits": {
  1205.             "$ref": "List.LimitsReturned",
  1206.             "required": true
  1207.           }
  1208.         },
  1209.         "type": "object"
  1210.       },
  1211.       "type": "method"
  1212.     },
  1213.     "Files.GetDirectory": {
  1214.       "description": "Get the directories and files in the given directory",
  1215.       "params": [
  1216.         {
  1217.           "name": "directory",
  1218.           "required": true,
  1219.           "type": "string"
  1220.         },
  1221.         {
  1222.           "$ref": "Files.Media",
  1223.           "default": "files",
  1224.           "name": "media"
  1225.         },
  1226.         {
  1227.           "$ref": "List.Fields.Files",
  1228.           "name": "properties"
  1229.         },
  1230.         {
  1231.           "$ref": "List.Sort",
  1232.           "name": "sort"
  1233.         },
  1234.         {
  1235.           "$ref": "List.Limits",
  1236.           "description": "Limits are applied after getting the directory content thus retrieval is not faster when they are applied.",
  1237.           "name": "limits"
  1238.         }
  1239.       ],
  1240.       "returns": {
  1241.         "properties": {
  1242.           "files": {
  1243.             "items": {
  1244.               "$ref": "List.Item.File"
  1245.             },
  1246.             "required": true,
  1247.             "type": "array"
  1248.           },
  1249.           "limits": {
  1250.             "$ref": "List.LimitsReturned",
  1251.             "required": true
  1252.           }
  1253.         },
  1254.         "type": "object"
  1255.       },
  1256.       "type": "method"
  1257.     },
  1258.     "Files.GetFileDetails": {
  1259.       "description": "Get details for a specific file",
  1260.       "params": [
  1261.         {
  1262.           "description": "Full path to the file",
  1263.           "name": "file",
  1264.           "required": true,
  1265.           "type": "string"
  1266.         },
  1267.         {
  1268.           "$ref": "Files.Media",
  1269.           "default": "files",
  1270.           "name": "media"
  1271.         },
  1272.         {
  1273.           "$ref": "List.Fields.Files",
  1274.           "name": "properties"
  1275.         }
  1276.       ],
  1277.       "returns": {
  1278.         "properties": {
  1279.           "filedetails": {
  1280.             "$ref": "List.Item.File",
  1281.             "required": true
  1282.           }
  1283.         },
  1284.         "type": "object"
  1285.       },
  1286.       "type": "method"
  1287.     },
  1288.     "Files.GetSources": {
  1289.       "description": "Get the sources of the media windows",
  1290.       "params": [
  1291.         {
  1292.           "$ref": "Files.Media",
  1293.           "name": "media",
  1294.           "required": true
  1295.         },
  1296.         {
  1297.           "$ref": "List.Limits",
  1298.           "name": "limits"
  1299.         },
  1300.         {
  1301.           "$ref": "List.Sort",
  1302.           "name": "sort"
  1303.         }
  1304.       ],
  1305.       "returns": {
  1306.         "properties": {
  1307.           "limits": {
  1308.             "$ref": "List.LimitsReturned",
  1309.             "required": true
  1310.           },
  1311.           "sources": {
  1312.             "$ref": "List.Items.Sources",
  1313.             "required": true
  1314.           }
  1315.         },
  1316.         "type": "object"
  1317.       },
  1318.       "type": "method"
  1319.     },
  1320.     "Files.PrepareDownload": {
  1321.       "description": "Provides a way to download a given file (e.g. providing an URL to the real file location)",
  1322.       "params": [
  1323.         {
  1324.           "name": "path",
  1325.           "required": true,
  1326.           "type": "string"
  1327.         }
  1328.       ],
  1329.       "returns": {
  1330.         "properties": {
  1331.           "details": {
  1332.             "description": "Transport specific details on how/from where to download the given file",
  1333.             "required": true,
  1334.             "type": "any"
  1335.           },
  1336.           "mode": {
  1337.             "description": "Direct mode allows using Files.Download whereas redirect mode requires the usage of a different protocol",
  1338.             "enums": [
  1339.               "redirect",
  1340.               "direct"
  1341.             ],
  1342.             "required": true,
  1343.             "type": "string"
  1344.           },
  1345.           "protocol": {
  1346.             "enums": [
  1347.               "http"
  1348.             ],
  1349.             "required": true,
  1350.             "type": "string"
  1351.           }
  1352.         },
  1353.         "type": "object"
  1354.       },
  1355.       "type": "method"
  1356.     },
  1357.     "GUI.ActivateWindow": {
  1358.       "description": "Activates the given window",
  1359.       "params": [
  1360.         {
  1361.           "$ref": "GUI.Window",
  1362.           "name": "window",
  1363.           "required": true
  1364.         },
  1365.         {
  1366.           "items": {
  1367.             "minLength": 1,
  1368.             "type": "string"
  1369.           },
  1370.           "minItems": 1,
  1371.           "name": "parameters",
  1372.           "type": "array"
  1373.         }
  1374.       ],
  1375.       "returns": {
  1376.         "type": "string"
  1377.       },
  1378.       "type": "method"
  1379.     },
  1380.     "GUI.GetProperties": {
  1381.       "description": "Retrieves the values of the given properties",
  1382.       "params": [
  1383.         {
  1384.           "items": {
  1385.             "$ref": "GUI.Property.Name"
  1386.           },
  1387.           "name": "properties",
  1388.           "required": true,
  1389.           "type": "array",
  1390.           "uniqueItems": true
  1391.         }
  1392.       ],
  1393.       "returns": {
  1394.         "$ref": "GUI.Property.Value"
  1395.       },
  1396.       "type": "method"
  1397.     },
  1398.     "GUI.GetStereoscopicModes": {
  1399.       "description": "Returns the supported stereoscopic modes of the GUI",
  1400.       "params": [],
  1401.       "returns": {
  1402.         "properties": {
  1403.           "stereoscopicmodes": {
  1404.             "items": {
  1405.               "$ref": "GUI.Stereoscopy.Mode"
  1406.             },
  1407.             "type": "array",
  1408.             "uniqueItems": true
  1409.           }
  1410.         },
  1411.         "type": "object"
  1412.       },
  1413.       "type": "method"
  1414.     },
  1415.     "GUI.SetFullscreen": {
  1416.       "description": "Toggle fullscreen/GUI",
  1417.       "params": [
  1418.         {
  1419.           "$ref": "Global.Toggle",
  1420.           "name": "fullscreen",
  1421.           "required": true
  1422.         }
  1423.       ],
  1424.       "returns": {
  1425.         "description": "Fullscreen state",
  1426.         "type": "boolean"
  1427.       },
  1428.       "type": "method"
  1429.     },
  1430.     "GUI.SetStereoscopicMode": {
  1431.       "description": "Sets the stereoscopic mode of the GUI to the given mode",
  1432.       "params": [
  1433.         {
  1434.           "enums": [
  1435.             "toggle",
  1436.             "tomono",
  1437.             "next",
  1438.             "previous",
  1439.             "select",
  1440.             "off",
  1441.             "split_vertical",
  1442.             "split_horizontal",
  1443.             "row_interleaved",
  1444.             "hardware_based",
  1445.             "anaglyph_cyan_red",
  1446.             "anaglyph_green_magenta",
  1447.             "monoscopic"
  1448.           ],
  1449.           "name": "mode",
  1450.           "required": true,
  1451.           "type": "string"
  1452.         }
  1453.       ],
  1454.       "returns": {
  1455.         "type": "string"
  1456.       },
  1457.       "type": "method"
  1458.     },
  1459.     "GUI.ShowNotification": {
  1460.       "description": "Shows a GUI notification",
  1461.       "params": [
  1462.         {
  1463.           "name": "title",
  1464.           "required": true,
  1465.           "type": "string"
  1466.         },
  1467.         {
  1468.           "name": "message",
  1469.           "required": true,
  1470.           "type": "string"
  1471.         },
  1472.         {
  1473.           "default": "",
  1474.           "name": "image",
  1475.           "type": [
  1476.             {
  1477.               "enums": [
  1478.                 "info",
  1479.                 "warning",
  1480.                 "error"
  1481.               ],
  1482.               "type": "string"
  1483.             },
  1484.             {
  1485.               "type": "string"
  1486.             }
  1487.           ]
  1488.         },
  1489.         {
  1490.           "default": 5000,
  1491.           "description": "The time in milliseconds the notification will be visible",
  1492.           "minimum": 1500,
  1493.           "name": "displaytime",
  1494.           "type": "integer"
  1495.         }
  1496.       ],
  1497.       "returns": {
  1498.         "type": "string"
  1499.       },
  1500.       "type": "method"
  1501.     },
  1502.     "Input.Back": {
  1503.       "description": "Goes back in GUI",
  1504.       "params": [],
  1505.       "returns": {
  1506.         "type": "string"
  1507.       },
  1508.       "type": "method"
  1509.     },
  1510.     "Input.ContextMenu": {
  1511.       "description": "Shows the context menu",
  1512.       "params": [],
  1513.       "returns": {
  1514.         "type": "string"
  1515.       },
  1516.       "type": "method"
  1517.     },
  1518.     "Input.Down": {
  1519.       "description": "Navigate down in GUI",
  1520.       "params": [],
  1521.       "returns": {
  1522.         "type": "string"
  1523.       },
  1524.       "type": "method"
  1525.     },
  1526.     "Input.ExecuteAction": {
  1527.       "description": "Execute a specific action",
  1528.       "params": [
  1529.         {
  1530.           "$ref": "Input.Action",
  1531.           "name": "action",
  1532.           "required": true
  1533.         }
  1534.       ],
  1535.       "returns": {
  1536.         "type": "string"
  1537.       },
  1538.       "type": "method"
  1539.     },
  1540.     "Input.Home": {
  1541.       "description": "Goes to home window in GUI",
  1542.       "params": [],
  1543.       "returns": {
  1544.         "type": "string"
  1545.       },
  1546.       "type": "method"
  1547.     },
  1548.     "Input.Info": {
  1549.       "description": "Shows the information dialog",
  1550.       "params": [],
  1551.       "returns": {
  1552.         "type": "string"
  1553.       },
  1554.       "type": "method"
  1555.     },
  1556.     "Input.Left": {
  1557.       "description": "Navigate left in GUI",
  1558.       "params": [],
  1559.       "returns": {
  1560.         "type": "string"
  1561.       },
  1562.       "type": "method"
  1563.     },
  1564.     "Input.Right": {
  1565.       "description": "Navigate right in GUI",
  1566.       "params": [],
  1567.       "returns": {
  1568.         "type": "string"
  1569.       },
  1570.       "type": "method"
  1571.     },
  1572.     "Input.Select": {
  1573.       "description": "Select current item in GUI",
  1574.       "params": [],
  1575.       "returns": {
  1576.         "type": "string"
  1577.       },
  1578.       "type": "method"
  1579.     },
  1580.     "Input.SendText": {
  1581.       "description": "Send a generic (unicode) text",
  1582.       "params": [
  1583.         {
  1584.           "description": "Unicode text",
  1585.           "name": "text",
  1586.           "required": true,
  1587.           "type": "string"
  1588.         },
  1589.         {
  1590.           "default": true,
  1591.           "description": "Whether this is the whole input or not (closes an open input dialog if true).",
  1592.           "name": "done",
  1593.           "type": "boolean"
  1594.         }
  1595.       ],
  1596.       "returns": {
  1597.         "type": "string"
  1598.       },
  1599.       "type": "method"
  1600.     },
  1601.     "Input.ShowCodec": {
  1602.       "description": "Show codec information of the playing item",
  1603.       "params": [],
  1604.       "returns": {
  1605.         "type": "string"
  1606.       },
  1607.       "type": "method"
  1608.     },
  1609.     "Input.ShowOSD": {
  1610.       "description": "Show the on-screen display for the current player",
  1611.       "params": [],
  1612.       "returns": {
  1613.         "type": "string"
  1614.       },
  1615.       "type": "method"
  1616.     },
  1617.     "Input.Up": {
  1618.       "description": "Navigate up in GUI",
  1619.       "params": [],
  1620.       "returns": {
  1621.         "type": "string"
  1622.       },
  1623.       "type": "method"
  1624.     },
  1625.     "JSONRPC.Introspect": {
  1626.       "description": "Enumerates all actions and descriptions",
  1627.       "params": [
  1628.         {
  1629.           "default": true,
  1630.           "name": "getdescriptions",
  1631.           "type": "boolean"
  1632.         },
  1633.         {
  1634.           "default": false,
  1635.           "name": "getmetadata",
  1636.           "type": "boolean"
  1637.         },
  1638.         {
  1639.           "default": true,
  1640.           "name": "filterbytransport",
  1641.           "type": "boolean"
  1642.         },
  1643.         {
  1644.           "name": "filter",
  1645.           "properties": {
  1646.             "getreferences": {
  1647.               "default": true,
  1648.               "description": "Whether or not to print the schema for referenced types",
  1649.               "type": "boolean"
  1650.             },
  1651.             "id": {
  1652.               "description": "Name of a namespace, method or type",
  1653.               "required": true,
  1654.               "type": "string"
  1655.             },
  1656.             "type": {
  1657.               "description": "Type of the given name",
  1658.               "enums": [
  1659.                 "method",
  1660.                 "namespace",
  1661.                 "type",
  1662.                 "notification"
  1663.               ],
  1664.               "required": true,
  1665.               "type": "string"
  1666.             }
  1667.           },
  1668.           "type": "object"
  1669.         }
  1670.       ],
  1671.       "returns": {
  1672.         "additionalProperties": false,
  1673.         "type": "object"
  1674.       },
  1675.       "type": "method"
  1676.     },
  1677.     "JSONRPC.NotifyAll": {
  1678.       "description": "Notify all other connected clients",
  1679.       "params": [
  1680.         {
  1681.           "name": "sender",
  1682.           "required": true,
  1683.           "type": "string"
  1684.         },
  1685.         {
  1686.           "name": "message",
  1687.           "required": true,
  1688.           "type": "string"
  1689.         },
  1690.         {
  1691.           "default": null,
  1692.           "name": "data",
  1693.           "type": "any"
  1694.         }
  1695.       ],
  1696.       "returns": {
  1697.         "type": "any"
  1698.       },
  1699.       "type": "method"
  1700.     },
  1701.     "JSONRPC.Permission": {
  1702.       "description": "Retrieve the clients permissions",
  1703.       "params": [],
  1704.       "returns": {
  1705.         "properties": {
  1706.           "controlgui": {
  1707.             "required": true,
  1708.             "type": "boolean"
  1709.           },
  1710.           "controlnotify": {
  1711.             "required": true,
  1712.             "type": "boolean"
  1713.           },
  1714.           "controlplayback": {
  1715.             "required": true,
  1716.             "type": "boolean"
  1717.           },
  1718.           "controlpower": {
  1719.             "required": true,
  1720.             "type": "boolean"
  1721.           },
  1722.           "controlpvr": {
  1723.             "required": true,
  1724.             "type": "boolean"
  1725.           },
  1726.           "controlsystem": {
  1727.             "required": true,
  1728.             "type": "boolean"
  1729.           },
  1730.           "executeaddon": {
  1731.             "required": true,
  1732.             "type": "boolean"
  1733.           },
  1734.           "manageaddon": {
  1735.             "required": true,
  1736.             "type": "boolean"
  1737.           },
  1738.           "navigate": {
  1739.             "required": true,
  1740.             "type": "boolean"
  1741.           },
  1742.           "readdata": {
  1743.             "required": true,
  1744.             "type": "boolean"
  1745.           },
  1746.           "removedata": {
  1747.             "required": true,
  1748.             "type": "boolean"
  1749.           },
  1750.           "updatedata": {
  1751.             "required": true,
  1752.             "type": "boolean"
  1753.           },
  1754.           "writefile": {
  1755.             "required": true,
  1756.             "type": "boolean"
  1757.           }
  1758.         },
  1759.         "type": "object"
  1760.       },
  1761.       "type": "method"
  1762.     },
  1763.     "JSONRPC.Ping": {
  1764.       "description": "Ping responder",
  1765.       "params": [],
  1766.       "returns": {
  1767.         "type": "string"
  1768.       },
  1769.       "type": "method"
  1770.     },
  1771.     "JSONRPC.Version": {
  1772.       "description": "Retrieve the JSON-RPC protocol version.",
  1773.       "params": [],
  1774.       "returns": {
  1775.         "properties": {
  1776.           "version": {
  1777.             "properties": {
  1778.               "major": {
  1779.                 "description": "Bumped on backwards incompatible changes to the API definition",
  1780.                 "minimum": 0,
  1781.                 "required": true,
  1782.                 "type": "integer"
  1783.               },
  1784.               "minor": {
  1785.                 "description": "Bumped on backwards compatible additions/changes to the API definition",
  1786.                 "minimum": 0,
  1787.                 "required": true,
  1788.                 "type": "integer"
  1789.               },
  1790.               "patch": {
  1791.                 "description": "Bumped on any changes to the internal implementation but not to the API definition",
  1792.                 "minimum": 0,
  1793.                 "required": true,
  1794.                 "type": "integer"
  1795.               }
  1796.             },
  1797.             "required": true,
  1798.             "type": "object"
  1799.           }
  1800.         },
  1801.         "type": "object"
  1802.       },
  1803.       "type": "method"
  1804.     },
  1805.     "PVR.GetBroadcastDetails": {
  1806.       "description": "Retrieves the details of a specific broadcast",
  1807.       "params": [
  1808.         {
  1809.           "$ref": "Library.Id",
  1810.           "name": "broadcastid",
  1811.           "required": true
  1812.         },
  1813.         {
  1814.           "$ref": "PVR.Fields.Broadcast",
  1815.           "name": "properties"
  1816.         }
  1817.       ],
  1818.       "returns": {
  1819.         "properties": {
  1820.           "broadcastdetails": {
  1821.             "$ref": "PVR.Details.Broadcast"
  1822.           }
  1823.         },
  1824.         "type": "object"
  1825.       },
  1826.       "type": "method"
  1827.     },
  1828.     "PVR.GetBroadcasts": {
  1829.       "description": "Retrieves the program of a specific channel",
  1830.       "params": [
  1831.         {
  1832.           "$ref": "Library.Id",
  1833.           "name": "channelid",
  1834.           "required": true
  1835.         },
  1836.         {
  1837.           "$ref": "PVR.Fields.Broadcast",
  1838.           "name": "properties"
  1839.         },
  1840.         {
  1841.           "$ref": "List.Limits",
  1842.           "name": "limits"
  1843.         }
  1844.       ],
  1845.       "returns": {
  1846.         "properties": {
  1847.           "broadcasts": {
  1848.             "items": {
  1849.               "$ref": "PVR.Details.Broadcast"
  1850.             },
  1851.             "required": true,
  1852.             "type": "array"
  1853.           },
  1854.           "limits": {
  1855.             "$ref": "List.LimitsReturned",
  1856.             "required": true
  1857.           }
  1858.         },
  1859.         "type": "object"
  1860.       },
  1861.       "type": "method"
  1862.     },
  1863.     "PVR.GetChannelDetails": {
  1864.       "description": "Retrieves the details of a specific channel",
  1865.       "params": [
  1866.         {
  1867.           "$ref": "Library.Id",
  1868.           "name": "channelid",
  1869.           "required": true
  1870.         },
  1871.         {
  1872.           "$ref": "PVR.Fields.Channel",
  1873.           "name": "properties"
  1874.         }
  1875.       ],
  1876.       "returns": {
  1877.         "properties": {
  1878.           "channeldetails": {
  1879.             "$ref": "PVR.Details.Channel"
  1880.           }
  1881.         },
  1882.         "type": "object"
  1883.       },
  1884.       "type": "method"
  1885.     },
  1886.     "PVR.GetChannelGroupDetails": {
  1887.       "description": "Retrieves the details of a specific channel group",
  1888.       "params": [
  1889.         {
  1890.           "$ref": "PVR.ChannelGroup.Id",
  1891.           "name": "channelgroupid",
  1892.           "required": true
  1893.         },
  1894.         {
  1895.           "name": "channels",
  1896.           "properties": {
  1897.             "limits": {
  1898.               "$ref": "List.Limits"
  1899.             },
  1900.             "properties": {
  1901.               "$ref": "PVR.Fields.Channel"
  1902.             }
  1903.           },
  1904.           "type": "object"
  1905.         }
  1906.       ],
  1907.       "returns": {
  1908.         "properties": {
  1909.           "channelgroupdetails": {
  1910.             "$ref": "PVR.Details.ChannelGroup.Extended"
  1911.           }
  1912.         },
  1913.         "type": "object"
  1914.       },
  1915.       "type": "method"
  1916.     },
  1917.     "PVR.GetChannelGroups": {
  1918.       "description": "Retrieves the channel groups for the specified type",
  1919.       "params": [
  1920.         {
  1921.           "$ref": "PVR.Channel.Type",
  1922.           "name": "channeltype",
  1923.           "required": true
  1924.         },
  1925.         {
  1926.           "$ref": "List.Limits",
  1927.           "name": "limits"
  1928.         }
  1929.       ],
  1930.       "returns": {
  1931.         "properties": {
  1932.           "channelgroups": {
  1933.             "items": {
  1934.               "$ref": "PVR.Details.ChannelGroup"
  1935.             },
  1936.             "required": true,
  1937.             "type": "array"
  1938.           },
  1939.           "limits": {
  1940.             "$ref": "List.LimitsReturned",
  1941.             "required": true
  1942.           }
  1943.         },
  1944.         "type": "object"
  1945.       },
  1946.       "type": "method"
  1947.     },
  1948.     "PVR.GetChannels": {
  1949.       "description": "Retrieves the channel list",
  1950.       "params": [
  1951.         {
  1952.           "$ref": "PVR.ChannelGroup.Id",
  1953.           "name": "channelgroupid",
  1954.           "required": true
  1955.         },
  1956.         {
  1957.           "$ref": "PVR.Fields.Channel",
  1958.           "name": "properties"
  1959.         },
  1960.         {
  1961.           "$ref": "List.Limits",
  1962.           "name": "limits"
  1963.         }
  1964.       ],
  1965.       "returns": {
  1966.         "properties": {
  1967.           "channels": {
  1968.             "items": {
  1969.               "$ref": "PVR.Details.Channel"
  1970.             },
  1971.             "required": true,
  1972.             "type": "array"
  1973.           },
  1974.           "limits": {
  1975.             "$ref": "List.LimitsReturned",
  1976.             "required": true
  1977.           }
  1978.         },
  1979.         "type": "object"
  1980.       },
  1981.       "type": "method"
  1982.     },
  1983.     "PVR.GetProperties": {
  1984.       "description": "Retrieves the values of the given properties",
  1985.       "params": [
  1986.         {
  1987.           "items": {
  1988.             "$ref": "PVR.Property.Name"
  1989.           },
  1990.           "name": "properties",
  1991.           "required": true,
  1992.           "type": "array",
  1993.           "uniqueItems": true
  1994.         }
  1995.       ],
  1996.       "returns": {
  1997.         "$ref": "PVR.Property.Value"
  1998.       },
  1999.       "type": "method"
  2000.     },
  2001.     "PVR.GetRecordingDetails": {
  2002.       "description": "Retrieves the details of a specific recording",
  2003.       "params": [
  2004.         {
  2005.           "$ref": "Library.Id",
  2006.           "name": "recordingid",
  2007.           "required": true
  2008.         },
  2009.         {
  2010.           "$ref": "PVR.Fields.Recording",
  2011.           "name": "properties"
  2012.         }
  2013.       ],
  2014.       "returns": {
  2015.         "properties": {
  2016.           "recordingdetails": {
  2017.             "$ref": "PVR.Details.Recording"
  2018.           }
  2019.         },
  2020.         "type": "object"
  2021.       },
  2022.       "type": "method"
  2023.     },
  2024.     "PVR.GetRecordings": {
  2025.       "description": "Retrieves the recordings",
  2026.       "params": [
  2027.         {
  2028.           "$ref": "PVR.Fields.Recording",
  2029.           "name": "properties"
  2030.         },
  2031.         {
  2032.           "$ref": "List.Limits",
  2033.           "name": "limits"
  2034.         }
  2035.       ],
  2036.       "returns": {
  2037.         "properties": {
  2038.           "limits": {
  2039.             "$ref": "List.LimitsReturned",
  2040.             "required": true
  2041.           },
  2042.           "recordings": {
  2043.             "items": {
  2044.               "$ref": "PVR.Details.Recording"
  2045.             },
  2046.             "required": true,
  2047.             "type": "array"
  2048.           }
  2049.         },
  2050.         "type": "object"
  2051.       },
  2052.       "type": "method"
  2053.     },
  2054.     "PVR.GetTimerDetails": {
  2055.       "description": "Retrieves the details of a specific timer",
  2056.       "params": [
  2057.         {
  2058.           "$ref": "Library.Id",
  2059.           "name": "timerid",
  2060.           "required": true
  2061.         },
  2062.         {
  2063.           "$ref": "PVR.Fields.Timer",
  2064.           "name": "properties"
  2065.         }
  2066.       ],
  2067.       "returns": {
  2068.         "properties": {
  2069.           "timerdetails": {
  2070.             "$ref": "PVR.Details.Timer"
  2071.           }
  2072.         },
  2073.         "type": "object"
  2074.       },
  2075.       "type": "method"
  2076.     },
  2077.     "PVR.GetTimers": {
  2078.       "description": "Retrieves the timers",
  2079.       "params": [
  2080.         {
  2081.           "$ref": "PVR.Fields.Timer",
  2082.           "name": "properties"
  2083.         },
  2084.         {
  2085.           "$ref": "List.Limits",
  2086.           "name": "limits"
  2087.         }
  2088.       ],
  2089.       "returns": {
  2090.         "properties": {
  2091.           "limits": {
  2092.             "$ref": "List.LimitsReturned",
  2093.             "required": true
  2094.           },
  2095.           "timers": {
  2096.             "items": {
  2097.               "$ref": "PVR.Details.Timer"
  2098.             },
  2099.             "required": true,
  2100.             "type": "array"
  2101.           }
  2102.         },
  2103.         "type": "object"
  2104.       },
  2105.       "type": "method"
  2106.     },
  2107.     "PVR.Record": {
  2108.       "description": "Toggle recording of a channel",
  2109.       "params": [
  2110.         {
  2111.           "$ref": "Global.Toggle",
  2112.           "default": "toggle",
  2113.           "name": "record"
  2114.         },
  2115.         {
  2116.           "default": "current",
  2117.           "name": "channel",
  2118.           "type": [
  2119.             {
  2120.               "enums": [
  2121.                 "current"
  2122.               ],
  2123.               "type": "string"
  2124.             },
  2125.             {
  2126.               "$ref": "Library.Id"
  2127.             }
  2128.           ]
  2129.         }
  2130.       ],
  2131.       "returns": {
  2132.         "type": "string"
  2133.       },
  2134.       "type": "method"
  2135.     },
  2136.     "PVR.Scan": {
  2137.       "description": "Starts a channel scan",
  2138.       "params": [],
  2139.       "returns": {
  2140.         "type": "string"
  2141.       },
  2142.       "type": "method"
  2143.     },
  2144.     "Player.GetActivePlayers": {
  2145.       "description": "Returns all active players",
  2146.       "params": [],
  2147.       "returns": {
  2148.         "items": {
  2149.           "properties": {
  2150.             "playerid": {
  2151.               "$ref": "Player.Id",
  2152.               "required": true
  2153.             },
  2154.             "type": {
  2155.               "$ref": "Player.Type",
  2156.               "required": true
  2157.             }
  2158.           },
  2159.           "type": "object"
  2160.         },
  2161.         "type": "array",
  2162.         "uniqueItems": true
  2163.       },
  2164.       "type": "method"
  2165.     },
  2166.     "Player.GetItem": {
  2167.       "description": "Retrieves the currently played item",
  2168.       "params": [
  2169.         {
  2170.           "$ref": "Player.Id",
  2171.           "name": "playerid",
  2172.           "required": true
  2173.         },
  2174.         {
  2175.           "$ref": "List.Fields.All",
  2176.           "name": "properties"
  2177.         }
  2178.       ],
  2179.       "returns": {
  2180.         "properties": {
  2181.           "item": {
  2182.             "$ref": "List.Item.All",
  2183.             "required": true
  2184.           }
  2185.         },
  2186.         "type": "object"
  2187.       },
  2188.       "type": "method"
  2189.     },
  2190.     "Player.GetPlayers": {
  2191.       "description": "Get a list of available players",
  2192.       "params": [
  2193.         {
  2194.           "default": "all",
  2195.           "enums": [
  2196.             "all",
  2197.             "video",
  2198.             "audio"
  2199.           ],
  2200.           "name": "media",
  2201.           "type": "string"
  2202.         }
  2203.       ],
  2204.       "returns": {
  2205.         "items": {
  2206.           "properties": {
  2207.             "name": {
  2208.               "$ref": "Global.String.NotEmpty",
  2209.               "required": true
  2210.             },
  2211.             "playercoreid": {
  2212.               "minimum": 1,
  2213.               "required": true,
  2214.               "type": "integer"
  2215.             },
  2216.             "playsaudio": {
  2217.               "required": true,
  2218.               "type": "boolean"
  2219.             },
  2220.             "playsvideo": {
  2221.               "required": true,
  2222.               "type": "boolean"
  2223.             },
  2224.             "type": {
  2225.               "enums": [
  2226.                 "internal",
  2227.                 "external",
  2228.                 "remote"
  2229.               ],
  2230.               "required": true,
  2231.               "type": "string"
  2232.             }
  2233.           },
  2234.           "type": "object"
  2235.         },
  2236.         "type": "array",
  2237.         "uniqueItems": true
  2238.       },
  2239.       "type": "method"
  2240.     },
  2241.     "Player.GetProperties": {
  2242.       "description": "Retrieves the values of the given properties",
  2243.       "params": [
  2244.         {
  2245.           "$ref": "Player.Id",
  2246.           "name": "playerid",
  2247.           "required": true
  2248.         },
  2249.         {
  2250.           "items": {
  2251.             "$ref": "Player.Property.Name"
  2252.           },
  2253.           "name": "properties",
  2254.           "required": true,
  2255.           "type": "array",
  2256.           "uniqueItems": true
  2257.         }
  2258.       ],
  2259.       "returns": {
  2260.         "$ref": "Player.Property.Value"
  2261.       },
  2262.       "type": "method"
  2263.     },
  2264.     "Player.GoTo": {
  2265.       "description": "Go to previous/next/specific item in the playlist",
  2266.       "params": [
  2267.         {
  2268.           "$ref": "Player.Id",
  2269.           "name": "playerid",
  2270.           "required": true
  2271.         },
  2272.         {
  2273.           "name": "to",
  2274.           "required": true,
  2275.           "type": [
  2276.             {
  2277.               "enums": [
  2278.                 "previous",
  2279.                 "next"
  2280.               ],
  2281.               "type": "string"
  2282.             },
  2283.             {
  2284.               "$ref": "Playlist.Position",
  2285.               "description": "position in playlist"
  2286.             }
  2287.           ]
  2288.         }
  2289.       ],
  2290.       "returns": {
  2291.         "type": "string"
  2292.       },
  2293.       "type": "method"
  2294.     },
  2295.     "Player.Move": {
  2296.       "description": "If picture is zoomed move viewport left/right/up/down otherwise skip previous/next",
  2297.       "params": [
  2298.         {
  2299.           "$ref": "Player.Id",
  2300.           "name": "playerid",
  2301.           "required": true
  2302.         },
  2303.         {
  2304.           "enums": [
  2305.             "left",
  2306.             "right",
  2307.             "up",
  2308.             "down"
  2309.           ],
  2310.           "name": "direction",
  2311.           "required": true,
  2312.           "type": "string"
  2313.         }
  2314.       ],
  2315.       "returns": {
  2316.         "type": "string"
  2317.       },
  2318.       "type": "method"
  2319.     },
  2320.     "Player.Open": {
  2321.       "description": "Start playback of either the playlist with the given ID, a slideshow with the pictures from the given directory or a single file or an item from the database.",
  2322.       "params": [
  2323.         {
  2324.           "name": "item",
  2325.           "type": [
  2326.             {
  2327.               "additionalProperties": false,
  2328.               "properties": {
  2329.                 "playlistid": {
  2330.                   "$ref": "Playlist.Id",
  2331.                   "required": true
  2332.                 },
  2333.                 "position": {
  2334.                   "$ref": "Playlist.Position",
  2335.                   "default": 0
  2336.                 }
  2337.               },
  2338.               "type": "object"
  2339.             },
  2340.             {
  2341.               "$ref": "Playlist.Item"
  2342.             },
  2343.             {
  2344.               "additionalProperties": false,
  2345.               "properties": {
  2346.                 "path": {
  2347.                   "required": true,
  2348.                   "type": "string"
  2349.                 },
  2350.                 "random": {
  2351.                   "default": true,
  2352.                   "description": "Deprecated, use the shuffled property of the options parameter instead",
  2353.                   "type": "boolean"
  2354.                 },
  2355.                 "recursive": {
  2356.                   "default": true,
  2357.                   "type": "boolean"
  2358.                 }
  2359.               },
  2360.               "type": "object"
  2361.             },
  2362.             {
  2363.               "additionalProperties": false,
  2364.               "properties": {
  2365.                 "partymode": {
  2366.                   "default": "",
  2367.                   "type": [
  2368.                     {
  2369.                       "enums": [
  2370.                         "music",
  2371.                         "video"
  2372.                       ],
  2373.                       "type": "string"
  2374.                     },
  2375.                     {
  2376.                       "description": "Path to a smartplaylist (*.xsp) file",
  2377.                       "minLength": 5,
  2378.                       "type": "string"
  2379.                     }
  2380.                   ]
  2381.                 }
  2382.               },
  2383.               "type": "object"
  2384.             },
  2385.             {
  2386.               "additionalProperties": false,
  2387.               "properties": {
  2388.                 "channelid": {
  2389.                   "$ref": "Library.Id",
  2390.                   "required": true
  2391.                 }
  2392.               },
  2393.               "type": "object"
  2394.             },
  2395.             {
  2396.               "additionalProperties": false,
  2397.               "properties": {
  2398.                 "recordingid": {
  2399.                   "$ref": "Library.Id",
  2400.                   "required": true
  2401.                 }
  2402.               },
  2403.               "type": "object"
  2404.             }
  2405.           ]
  2406.         },
  2407.         {
  2408.           "additionalProperties": false,
  2409.           "name": "options",
  2410.           "properties": {
  2411.             "playercoreid": {
  2412.               "default": null,
  2413.               "type": [
  2414.                 {
  2415.                   "type": "null"
  2416.                 },
  2417.                 {
  2418.                   "enums": [
  2419.                     "default"
  2420.                   ],
  2421.                   "type": "string"
  2422.                 },
  2423.                 {
  2424.                   "minimum": 1,
  2425.                   "type": "integer"
  2426.                 }
  2427.               ]
  2428.             },
  2429.             "repeat": {
  2430.               "default": null,
  2431.               "type": [
  2432.                 {
  2433.                   "type": "null"
  2434.                 },
  2435.                 {
  2436.                   "$ref": "Player.Repeat"
  2437.                 }
  2438.               ]
  2439.             },
  2440.             "resume": {
  2441.               "default": false,
  2442.               "type": [
  2443.                 {
  2444.                   "description": "Whether to resume from the resume point or not",
  2445.                   "type": "boolean"
  2446.                 },
  2447.                 {
  2448.                   "$ref": "Player.Position.Percentage",
  2449.                   "description": "Percentage value to start from"
  2450.                 },
  2451.                 {
  2452.                   "$ref": "Player.Position.Time",
  2453.                   "description": "Time to start from"
  2454.                 }
  2455.               ]
  2456.             },
  2457.             "shuffled": {
  2458.               "$ref": "Optional.Boolean",
  2459.               "default": null
  2460.             }
  2461.           },
  2462.           "type": "object"
  2463.         }
  2464.       ],
  2465.       "returns": {
  2466.         "type": "string"
  2467.       },
  2468.       "type": "method"
  2469.     },
  2470.     "Player.PlayPause": {
  2471.       "description": "Pauses or unpause playback and returns the new state",
  2472.       "params": [
  2473.         {
  2474.           "$ref": "Player.Id",
  2475.           "name": "playerid",
  2476.           "required": true
  2477.         },
  2478.         {
  2479.           "$ref": "Global.Toggle",
  2480.           "default": "toggle",
  2481.           "name": "play"
  2482.         }
  2483.       ],
  2484.       "returns": {
  2485.         "$ref": "Player.Speed"
  2486.       },
  2487.       "type": "method"
  2488.     },
  2489.     "Player.Rotate": {
  2490.       "description": "Rotates current picture",
  2491.       "params": [
  2492.         {
  2493.           "$ref": "Player.Id",
  2494.           "name": "playerid",
  2495.           "required": true
  2496.         },
  2497.         {
  2498.           "default": "clockwise",
  2499.           "enums": [
  2500.             "clockwise",
  2501.             "counterclockwise"
  2502.           ],
  2503.           "name": "value",
  2504.           "type": "string"
  2505.         }
  2506.       ],
  2507.       "returns": {
  2508.         "type": "string"
  2509.       },
  2510.       "type": "method"
  2511.     },
  2512.     "Player.Seek": {
  2513.       "description": "Seek through the playing item",
  2514.       "params": [
  2515.         {
  2516.           "$ref": "Player.Id",
  2517.           "name": "playerid",
  2518.           "required": true
  2519.         },
  2520.         {
  2521.           "name": "value",
  2522.           "required": true,
  2523.           "type": [
  2524.             {
  2525.               "$ref": "Player.Position.Percentage",
  2526.               "description": "Percentage value to seek to"
  2527.             },
  2528.             {
  2529.               "$ref": "Player.Position.Time",
  2530.               "description": "Time to seek to"
  2531.             },
  2532.             {
  2533.               "description": "Seek by predefined jumps",
  2534.               "enums": [
  2535.                 "smallforward",
  2536.                 "smallbackward",
  2537.                 "bigforward",
  2538.                 "bigbackward"
  2539.               ],
  2540.               "type": "string"
  2541.             }
  2542.           ]
  2543.         }
  2544.       ],
  2545.       "returns": {
  2546.         "properties": {
  2547.           "percentage": {
  2548.             "$ref": "Player.Position.Percentage",
  2549.             "default": 0
  2550.           },
  2551.           "time": {
  2552.             "$ref": "Global.Time"
  2553.           },
  2554.           "totaltime": {
  2555.             "$ref": "Global.Time"
  2556.           }
  2557.         },
  2558.         "type": "object"
  2559.       },
  2560.       "type": "method"
  2561.     },
  2562.     "Player.SetAudioStream": {
  2563.       "description": "Set the audio stream played by the player",
  2564.       "params": [
  2565.         {
  2566.           "$ref": "Player.Id",
  2567.           "name": "playerid",
  2568.           "required": true
  2569.         },
  2570.         {
  2571.           "name": "stream",
  2572.           "required": true,
  2573.           "type": [
  2574.             {
  2575.               "enums": [
  2576.                 "previous",
  2577.                 "next"
  2578.               ],
  2579.               "type": "string"
  2580.             },
  2581.             {
  2582.               "description": "Index of the audio stream to play",
  2583.               "minimum": 0,
  2584.               "type": "integer"
  2585.             }
  2586.           ]
  2587.         }
  2588.       ],
  2589.       "returns": {
  2590.         "type": "string"
  2591.       },
  2592.       "type": "method"
  2593.     },
  2594.     "Player.SetPartymode": {
  2595.       "description": "Turn partymode on or off",
  2596.       "params": [
  2597.         {
  2598.           "$ref": "Player.Id",
  2599.           "name": "playerid",
  2600.           "required": true
  2601.         },
  2602.         {
  2603.           "$ref": "Global.Toggle",
  2604.           "name": "partymode",
  2605.           "required": true
  2606.         }
  2607.       ],
  2608.       "returns": {
  2609.         "type": "string"
  2610.       },
  2611.       "type": "method"
  2612.     },
  2613.     "Player.SetRepeat": {
  2614.       "description": "Set the repeat mode of the player",
  2615.       "params": [
  2616.         {
  2617.           "$ref": "Player.Id",
  2618.           "name": "playerid",
  2619.           "required": true
  2620.         },
  2621.         {
  2622.           "name": "repeat",
  2623.           "required": true,
  2624.           "type": [
  2625.             {
  2626.               "$ref": "Player.Repeat"
  2627.             },
  2628.             {
  2629.               "enums": [
  2630.                 "cycle"
  2631.               ],
  2632.               "type": "string"
  2633.             }
  2634.           ]
  2635.         }
  2636.       ],
  2637.       "returns": {
  2638.         "type": "string"
  2639.       },
  2640.       "type": "method"
  2641.     },
  2642.     "Player.SetShuffle": {
  2643.       "description": "Shuffle/Unshuffle items in the player",
  2644.       "params": [
  2645.         {
  2646.           "$ref": "Player.Id",
  2647.           "name": "playerid",
  2648.           "required": true
  2649.         },
  2650.         {
  2651.           "$ref": "Global.Toggle",
  2652.           "name": "shuffle",
  2653.           "required": true
  2654.         }
  2655.       ],
  2656.       "returns": {
  2657.         "type": "string"
  2658.       },
  2659.       "type": "method"
  2660.     },
  2661.     "Player.SetSpeed": {
  2662.       "description": "Set the speed of the current playback",
  2663.       "params": [
  2664.         {
  2665.           "$ref": "Player.Id",
  2666.           "name": "playerid",
  2667.           "required": true
  2668.         },
  2669.         {
  2670.           "name": "speed",
  2671.           "required": true,
  2672.           "type": [
  2673.             {
  2674.               "enums": [
  2675.                 -32,
  2676.                 -16,
  2677.                 -8,
  2678.                 -4,
  2679.                 -2,
  2680.                 -1,
  2681.                 0,
  2682.                 1,
  2683.                 2,
  2684.                 4,
  2685.                 8,
  2686.                 16,
  2687.                 32
  2688.               ],
  2689.               "type": "integer"
  2690.             },
  2691.             {
  2692.               "$ref": "Global.IncrementDecrement"
  2693.             }
  2694.           ]
  2695.         }
  2696.       ],
  2697.       "returns": {
  2698.         "$ref": "Player.Speed"
  2699.       },
  2700.       "type": "method"
  2701.     },
  2702.     "Player.SetSubtitle": {
  2703.       "description": "Set the subtitle displayed by the player",
  2704.       "params": [
  2705.         {
  2706.           "$ref": "Player.Id",
  2707.           "name": "playerid",
  2708.           "required": true
  2709.         },
  2710.         {
  2711.           "name": "subtitle",
  2712.           "required": true,
  2713.           "type": [
  2714.             {
  2715.               "enums": [
  2716.                 "previous",
  2717.                 "next",
  2718.                 "off",
  2719.                 "on"
  2720.               ],
  2721.               "type": "string"
  2722.             },
  2723.             {
  2724.               "description": "Index of the subtitle to display",
  2725.               "minimum": 0,
  2726.               "type": "integer"
  2727.             }
  2728.           ]
  2729.         },
  2730.         {
  2731.           "default": false,
  2732.           "description": "Whether to enable subtitles to be displayed after setting the new subtitle",
  2733.           "name": "enable",
  2734.           "type": "boolean"
  2735.         }
  2736.       ],
  2737.       "returns": {
  2738.         "type": "string"
  2739.       },
  2740.       "type": "method"
  2741.     },
  2742.     "Player.Stop": {
  2743.       "description": "Stops playback",
  2744.       "params": [
  2745.         {
  2746.           "$ref": "Player.Id",
  2747.           "name": "playerid",
  2748.           "required": true
  2749.         }
  2750.       ],
  2751.       "returns": {
  2752.         "type": "string"
  2753.       },
  2754.       "type": "method"
  2755.     },
  2756.     "Player.Zoom": {
  2757.       "description": "Zoom current picture",
  2758.       "params": [
  2759.         {
  2760.           "$ref": "Player.Id",
  2761.           "name": "playerid",
  2762.           "required": true
  2763.         },
  2764.         {
  2765.           "name": "zoom",
  2766.           "required": true,
  2767.           "type": [
  2768.             {
  2769.               "enums": [
  2770.                 "in",
  2771.                 "out"
  2772.               ],
  2773.               "type": "string"
  2774.             },
  2775.             {
  2776.               "description": "zoom level",
  2777.               "maximum": 10,
  2778.               "minimum": 1,
  2779.               "type": "integer"
  2780.             }
  2781.           ]
  2782.         }
  2783.       ],
  2784.       "returns": {
  2785.         "type": "string"
  2786.       },
  2787.       "type": "method"
  2788.     },
  2789.     "Playlist.Add": {
  2790.       "description": "Add item(s) to playlist",
  2791.       "params": [
  2792.         {
  2793.           "$ref": "Playlist.Id",
  2794.           "name": "playlistid",
  2795.           "required": true
  2796.         },
  2797.         {
  2798.           "name": "item",
  2799.           "required": true,
  2800.           "type": [
  2801.             {
  2802.               "$ref": "Playlist.Item"
  2803.             },
  2804.             {
  2805.               "items": {
  2806.                 "$ref": "Playlist.Item"
  2807.               },
  2808.               "type": "array"
  2809.             }
  2810.           ]
  2811.         }
  2812.       ],
  2813.       "returns": {
  2814.         "type": "string"
  2815.       },
  2816.       "type": "method"
  2817.     },
  2818.     "Playlist.Clear": {
  2819.       "description": "Clear playlist",
  2820.       "params": [
  2821.         {
  2822.           "$ref": "Playlist.Id",
  2823.           "name": "playlistid",
  2824.           "required": true
  2825.         }
  2826.       ],
  2827.       "returns": {
  2828.         "type": "string"
  2829.       },
  2830.       "type": "method"
  2831.     },
  2832.     "Playlist.GetItems": {
  2833.       "description": "Get all items from playlist",
  2834.       "params": [
  2835.         {
  2836.           "$ref": "Playlist.Id",
  2837.           "name": "playlistid",
  2838.           "required": true
  2839.         },
  2840.         {
  2841.           "$ref": "List.Fields.All",
  2842.           "name": "properties"
  2843.         },
  2844.         {
  2845.           "$ref": "List.Limits",
  2846.           "name": "limits"
  2847.         },
  2848.         {
  2849.           "$ref": "List.Sort",
  2850.           "name": "sort"
  2851.         }
  2852.       ],
  2853.       "returns": {
  2854.         "properties": {
  2855.           "items": {
  2856.             "items": {
  2857.               "$ref": "List.Item.All"
  2858.             },
  2859.             "required": true,
  2860.             "type": "array"
  2861.           },
  2862.           "limits": {
  2863.             "$ref": "List.LimitsReturned",
  2864.             "required": true
  2865.           }
  2866.         },
  2867.         "type": "object"
  2868.       },
  2869.       "type": "method"
  2870.     },
  2871.     "Playlist.GetPlaylists": {
  2872.       "description": "Returns all existing playlists",
  2873.       "params": [],
  2874.       "returns": {
  2875.         "items": {
  2876.           "properties": {
  2877.             "playlistid": {
  2878.               "$ref": "Playlist.Id",
  2879.               "required": true
  2880.             },
  2881.             "type": {
  2882.               "$ref": "Playlist.Type",
  2883.               "required": true
  2884.             }
  2885.           },
  2886.           "type": "object"
  2887.         },
  2888.         "type": "array",
  2889.         "uniqueItems": true
  2890.       },
  2891.       "type": "method"
  2892.     },
  2893.     "Playlist.GetProperties": {
  2894.       "description": "Retrieves the values of the given properties",
  2895.       "params": [
  2896.         {
  2897.           "$ref": "Playlist.Id",
  2898.           "name": "playlistid",
  2899.           "required": true
  2900.         },
  2901.         {
  2902.           "items": {
  2903.             "$ref": "Playlist.Property.Name"
  2904.           },
  2905.           "name": "properties",
  2906.           "required": true,
  2907.           "type": "array",
  2908.           "uniqueItems": true
  2909.         }
  2910.       ],
  2911.       "returns": {
  2912.         "$ref": "Playlist.Property.Value"
  2913.       },
  2914.       "type": "method"
  2915.     },
  2916.     "Playlist.Insert": {
  2917.       "description": "Insert item(s) into playlist. Does not work for picture playlists (aka slideshows).",
  2918.       "params": [
  2919.         {
  2920.           "$ref": "Playlist.Id",
  2921.           "name": "playlistid",
  2922.           "required": true
  2923.         },
  2924.         {
  2925.           "$ref": "Playlist.Position",
  2926.           "name": "position",
  2927.           "required": true
  2928.         },
  2929.         {
  2930.           "name": "item",
  2931.           "required": true,
  2932.           "type": [
  2933.             {
  2934.               "$ref": "Playlist.Item"
  2935.             },
  2936.             {
  2937.               "items": {
  2938.                 "$ref": "Playlist.Item"
  2939.               },
  2940.               "type": "array"
  2941.             }
  2942.           ]
  2943.         }
  2944.       ],
  2945.       "returns": {
  2946.         "type": "string"
  2947.       },
  2948.       "type": "method"
  2949.     },
  2950.     "Playlist.Remove": {
  2951.       "description": "Remove item from playlist. Does not work for picture playlists (aka slideshows).",
  2952.       "params": [
  2953.         {
  2954.           "$ref": "Playlist.Id",
  2955.           "name": "playlistid",
  2956.           "required": true
  2957.         },
  2958.         {
  2959.           "$ref": "Playlist.Position",
  2960.           "name": "position",
  2961.           "required": true
  2962.         }
  2963.       ],
  2964.       "returns": {
  2965.         "type": "string"
  2966.       },
  2967.       "type": "method"
  2968.     },
  2969.     "Playlist.Swap": {
  2970.       "description": "Swap items in the playlist. Does not work for picture playlists (aka slideshows).",
  2971.       "params": [
  2972.         {
  2973.           "$ref": "Playlist.Id",
  2974.           "name": "playlistid",
  2975.           "required": true
  2976.         },
  2977.         {
  2978.           "$ref": "Playlist.Position",
  2979.           "name": "position1",
  2980.           "required": true
  2981.         },
  2982.         {
  2983.           "$ref": "Playlist.Position",
  2984.           "name": "position2",
  2985.           "required": true
  2986.         }
  2987.       ],
  2988.       "returns": {
  2989.         "type": "string"
  2990.       },
  2991.       "type": "method"
  2992.     },
  2993.     "Profiles.GetCurrentProfile": {
  2994.       "description": "Retrieve the current profile",
  2995.       "params": [
  2996.         {
  2997.           "$ref": "Profiles.Fields.Profile",
  2998.           "name": "properties"
  2999.         }
  3000.       ],
  3001.       "returns": {
  3002.         "$ref": "Profiles.Details.Profile"
  3003.       },
  3004.       "type": "method"
  3005.     },
  3006.     "Profiles.GetProfiles": {
  3007.       "description": "Retrieve all profiles",
  3008.       "params": [
  3009.         {
  3010.           "$ref": "Profiles.Fields.Profile",
  3011.           "name": "properties"
  3012.         },
  3013.         {
  3014.           "$ref": "List.Limits",
  3015.           "name": "limits"
  3016.         },
  3017.         {
  3018.           "$ref": "List.Sort",
  3019.           "name": "sort"
  3020.         }
  3021.       ],
  3022.       "returns": {
  3023.         "properties": {
  3024.           "limits": {
  3025.             "$ref": "List.LimitsReturned",
  3026.             "required": true
  3027.           },
  3028.           "profiles": {
  3029.             "items": {
  3030.               "$ref": "Profiles.Details.Profile"
  3031.             },
  3032.             "required": true,
  3033.             "type": "array"
  3034.           }
  3035.         },
  3036.         "type": "object"
  3037.       },
  3038.       "type": "method"
  3039.     },
  3040.     "Profiles.LoadProfile": {
  3041.       "description": "Load the specified profile",
  3042.       "params": [
  3043.         {
  3044.           "description": "Profile name",
  3045.           "name": "profile",
  3046.           "required": true,
  3047.           "type": "string"
  3048.         },
  3049.         {
  3050.           "default": false,
  3051.           "description": "Prompt for password",
  3052.           "name": "prompt",
  3053.           "type": "boolean"
  3054.         },
  3055.         {
  3056.           "$ref": "Profiles.Password",
  3057.           "name": "password"
  3058.         }
  3059.       ],
  3060.       "returns": {
  3061.         "type": "string"
  3062.       },
  3063.       "type": "method"
  3064.     },
  3065.     "Settings.GetCategories": {
  3066.       "description": "Retrieves all setting categories",
  3067.       "params": [
  3068.         {
  3069.           "$ref": "Setting.Level",
  3070.           "default": "standard",
  3071.           "name": "level"
  3072.         },
  3073.         {
  3074.           "default": "",
  3075.           "name": "section",
  3076.           "type": "string"
  3077.         },
  3078.         {
  3079.           "extends": "Item.Fields.Base",
  3080.           "items": {
  3081.             "enums": [
  3082.               "settings"
  3083.             ],
  3084.             "type": "string"
  3085.           },
  3086.           "name": "properties"
  3087.         }
  3088.       ],
  3089.       "returns": {
  3090.         "properties": {
  3091.           "categories": {
  3092.             "items": {
  3093.               "$ref": "Setting.Details.Category"
  3094.             },
  3095.             "type": "array"
  3096.           }
  3097.         },
  3098.         "type": "object"
  3099.       },
  3100.       "type": "method"
  3101.     },
  3102.     "Settings.GetSections": {
  3103.       "description": "Retrieves all setting sections",
  3104.       "params": [
  3105.         {
  3106.           "$ref": "Setting.Level",
  3107.           "default": "standard",
  3108.           "name": "level"
  3109.         },
  3110.         {
  3111.           "extends": "Item.Fields.Base",
  3112.           "items": {
  3113.             "enums": [
  3114.               "categories"
  3115.             ],
  3116.             "type": "string"
  3117.           },
  3118.           "name": "properties"
  3119.         }
  3120.       ],
  3121.       "returns": {
  3122.         "properties": {
  3123.           "sections": {
  3124.             "items": {
  3125.               "$ref": "Setting.Details.Section"
  3126.             },
  3127.             "type": "array"
  3128.           }
  3129.         },
  3130.         "type": "object"
  3131.       },
  3132.       "type": "method"
  3133.     },
  3134.     "Settings.GetSettingValue": {
  3135.       "description": "Retrieves the value of a setting",
  3136.       "params": [
  3137.         {
  3138.           "minLength": 1,
  3139.           "name": "setting",
  3140.           "required": true,
  3141.           "type": "string"
  3142.         }
  3143.       ],
  3144.       "returns": {
  3145.         "properties": {
  3146.           "value": {
  3147.             "$ref": "Setting.Value.Extended",
  3148.             "required": true
  3149.           }
  3150.         },
  3151.         "type": "object"
  3152.       },
  3153.       "type": "method"
  3154.     },
  3155.     "Settings.GetSettings": {
  3156.       "description": "Retrieves all settings",
  3157.       "params": [
  3158.         {
  3159.           "$ref": "Setting.Level",
  3160.           "default": "standard",
  3161.           "name": "level"
  3162.         },
  3163.         {
  3164.           "name": "filter",
  3165.           "type": [
  3166.             {
  3167.               "additionalProperties": false,
  3168.               "properties": {
  3169.                 "category": {
  3170.                   "minLength": 1,
  3171.                   "required": true,
  3172.                   "type": "string"
  3173.                 },
  3174.                 "section": {
  3175.                   "minLength": 1,
  3176.                   "required": true,
  3177.                   "type": "string"
  3178.                 }
  3179.               },
  3180.               "type": "object"
  3181.             }
  3182.           ]
  3183.         }
  3184.       ],
  3185.       "returns": {
  3186.         "properties": {
  3187.           "settings": {
  3188.             "items": {
  3189.               "$ref": "Setting.Details.Setting"
  3190.             },
  3191.             "type": "array"
  3192.           }
  3193.         },
  3194.         "type": "object"
  3195.       },
  3196.       "type": "method"
  3197.     },
  3198.     "Settings.ResetSettingValue": {
  3199.       "description": "Resets the value of a setting",
  3200.       "params": [
  3201.         {
  3202.           "minLength": 1,
  3203.           "name": "setting",
  3204.           "required": true,
  3205.           "type": "string"
  3206.         }
  3207.       ],
  3208.       "returns": {
  3209.         "type": "string"
  3210.       },
  3211.       "type": "method"
  3212.     },
  3213.     "Settings.SetSettingValue": {
  3214.       "description": "Changes the value of a setting",
  3215.       "params": [
  3216.         {
  3217.           "minLength": 1,
  3218.           "name": "setting",
  3219.           "required": true,
  3220.           "type": "string"
  3221.         },
  3222.         {
  3223.           "$ref": "Setting.Value.Extended",
  3224.           "name": "value",
  3225.           "required": true
  3226.         }
  3227.       ],
  3228.       "returns": {
  3229.         "type": "boolean"
  3230.       },
  3231.       "type": "method"
  3232.     },
  3233.     "System.EjectOpticalDrive": {
  3234.       "description": "Ejects or closes the optical disc drive (if available)",
  3235.       "params": [],
  3236.       "returns": {
  3237.         "type": "string"
  3238.       },
  3239.       "type": "method"
  3240.     },
  3241.     "System.GetProperties": {
  3242.       "description": "Retrieves the values of the given properties",
  3243.       "params": [
  3244.         {
  3245.           "items": {
  3246.             "$ref": "System.Property.Name"
  3247.           },
  3248.           "name": "properties",
  3249.           "required": true,
  3250.           "type": "array",
  3251.           "uniqueItems": true
  3252.         }
  3253.       ],
  3254.       "returns": {
  3255.         "$ref": "System.Property.Value"
  3256.       },
  3257.       "type": "method"
  3258.     },
  3259.     "System.Hibernate": {
  3260.       "description": "Puts the system running Kodi into hibernate mode",
  3261.       "params": [],
  3262.       "returns": {
  3263.         "type": "string"
  3264.       },
  3265.       "type": "method"
  3266.     },
  3267.     "System.Reboot": {
  3268.       "description": "Reboots the system running Kodi",
  3269.       "params": [],
  3270.       "returns": {
  3271.         "type": "string"
  3272.       },
  3273.       "type": "method"
  3274.     },
  3275.     "System.Shutdown": {
  3276.       "description": "Shuts the system running Kodi down",
  3277.       "params": [],
  3278.       "returns": {
  3279.         "type": "string"
  3280.       },
  3281.       "type": "method"
  3282.     },
  3283.     "System.Suspend": {
  3284.       "description": "Suspends the system running Kodi",
  3285.       "params": [],
  3286.       "returns": {
  3287.         "type": "string"
  3288.       },
  3289.       "type": "method"
  3290.     },
  3291.     "Textures.GetTextures": {
  3292.       "description": "Retrieve all textures",
  3293.       "params": [
  3294.         {
  3295.           "$ref": "Textures.Fields.Texture",
  3296.           "name": "properties"
  3297.         },
  3298.         {
  3299.           "$ref": "List.Filter.Textures",
  3300.           "name": "filter"
  3301.         }
  3302.       ],
  3303.       "returns": {
  3304.         "properties": {
  3305.           "textures": {
  3306.             "items": {
  3307.               "$ref": "Textures.Details.Texture"
  3308.             },
  3309.             "required": true,
  3310.             "type": "array"
  3311.           }
  3312.         },
  3313.         "type": "object"
  3314.       },
  3315.       "type": "method"
  3316.     },
  3317.     "Textures.RemoveTexture": {
  3318.       "description": "Remove the specified texture",
  3319.       "params": [
  3320.         {
  3321.           "$ref": "Library.Id",
  3322.           "description": "Texture database identifier",
  3323.           "name": "textureid",
  3324.           "required": true
  3325.         }
  3326.       ],
  3327.       "returns": {
  3328.         "type": "string"
  3329.       },
  3330.       "type": "method"
  3331.     },
  3332.     "VideoLibrary.Clean": {
  3333.       "description": "Cleans the video library from non-existent items",
  3334.       "params": [
  3335.         {
  3336.           "default": true,
  3337.           "description": "Whether or not to show the progress bar or any other GUI dialog",
  3338.           "name": "showdialogs",
  3339.           "type": "boolean"
  3340.         }
  3341.       ],
  3342.       "returns": {
  3343.         "type": "string"
  3344.       },
  3345.       "type": "method"
  3346.     },
  3347.     "VideoLibrary.Export": {
  3348.       "description": "Exports all items from the video library",
  3349.       "params": [
  3350.         {
  3351.           "name": "options",
  3352.           "type": [
  3353.             {
  3354.               "additionalProperties": false,
  3355.               "properties": {
  3356.                 "path": {
  3357.                   "description": "Path to the directory to where the data should be exported",
  3358.                   "minLength": 1,
  3359.                   "required": true,
  3360.                   "type": "string"
  3361.                 }
  3362.               },
  3363.               "type": "object"
  3364.             },
  3365.             {
  3366.               "additionalProperties": false,
  3367.               "properties": {
  3368.                 "actorthumbs": {
  3369.                   "default": false,
  3370.                   "description": "Whether to export actor thumbnails",
  3371.                   "type": "boolean"
  3372.                 },
  3373.                 "images": {
  3374.                   "default": false,
  3375.                   "description": "Whether to export thumbnails and fanart images",
  3376.                   "type": "boolean"
  3377.                 },
  3378.                 "overwrite": {
  3379.                   "default": false,
  3380.                   "description": "Whether to overwrite existing exported files",
  3381.                   "type": "boolean"
  3382.                 }
  3383.               },
  3384.               "type": "object"
  3385.             }
  3386.           ]
  3387.         }
  3388.       ],
  3389.       "returns": {
  3390.         "type": "string"
  3391.       },
  3392.       "type": "method"
  3393.     },
  3394.     "VideoLibrary.GetEpisodeDetails": {
  3395.       "description": "Retrieve details about a specific tv show episode",
  3396.       "params": [
  3397.         {
  3398.           "$ref": "Library.Id",
  3399.           "name": "episodeid",
  3400.           "required": true
  3401.         },
  3402.         {
  3403.           "$ref": "Video.Fields.Episode",
  3404.           "name": "properties"
  3405.         }
  3406.       ],
  3407.       "returns": {
  3408.         "properties": {
  3409.           "episodedetails": {
  3410.             "$ref": "Video.Details.Episode"
  3411.           }
  3412.         },
  3413.         "type": "object"
  3414.       },
  3415.       "type": "method"
  3416.     },
  3417.     "VideoLibrary.GetEpisodes": {
  3418.       "description": "Retrieve all tv show episodes",
  3419.       "params": [
  3420.         {
  3421.           "$ref": "Library.Id",
  3422.           "default": -1,
  3423.           "name": "tvshowid"
  3424.         },
  3425.         {
  3426.           "default": -1,
  3427.           "minimum": 0,
  3428.           "name": "season",
  3429.           "type": "integer"
  3430.         },
  3431.         {
  3432.           "$ref": "Video.Fields.Episode",
  3433.           "name": "properties"
  3434.         },
  3435.         {
  3436.           "$ref": "List.Limits",
  3437.           "name": "limits"
  3438.         },
  3439.         {
  3440.           "$ref": "List.Sort",
  3441.           "name": "sort"
  3442.         },
  3443.         {
  3444.           "name": "filter",
  3445.           "type": [
  3446.             {
  3447.               "additionalProperties": false,
  3448.               "properties": {
  3449.                 "genreid": {
  3450.                   "$ref": "Library.Id",
  3451.                   "description": "Requires tvshowid to be set",
  3452.                   "required": true
  3453.                 }
  3454.               },
  3455.               "type": "object"
  3456.             },
  3457.             {
  3458.               "additionalProperties": false,
  3459.               "properties": {
  3460.                 "genre": {
  3461.                   "description": "Requires tvshowid to be set",
  3462.                   "minLength": 1,
  3463.                   "required": true,
  3464.                   "type": "string"
  3465.                 }
  3466.               },
  3467.               "type": "object"
  3468.             },
  3469.             {
  3470.               "additionalProperties": false,
  3471.               "properties": {
  3472.                 "year": {
  3473.                   "minimum": 0,
  3474.                   "required": true,
  3475.                   "type": "integer"
  3476.                 }
  3477.               },
  3478.               "type": "object"
  3479.             },
  3480.             {
  3481.               "additionalProperties": false,
  3482.               "properties": {
  3483.                 "actor": {
  3484.                   "description": "Requires tvshowid to be set",
  3485.                   "minLength": 1,
  3486.                   "required": true,
  3487.                   "type": "string"
  3488.                 }
  3489.               },
  3490.               "type": "object"
  3491.             },
  3492.             {
  3493.               "additionalProperties": false,
  3494.               "properties": {
  3495.                 "director": {
  3496.                   "minLength": 1,
  3497.                   "required": true,
  3498.                   "type": "string"
  3499.                 }
  3500.               },
  3501.               "type": "object"
  3502.             },
  3503.             {
  3504.               "$ref": "List.Filter.Episodes"
  3505.             }
  3506.           ]
  3507.         }
  3508.       ],
  3509.       "returns": {
  3510.         "properties": {
  3511.           "episodes": {
  3512.             "items": {
  3513.               "$ref": "Video.Details.Episode"
  3514.             },
  3515.             "type": "array"
  3516.           },
  3517.           "limits": {
  3518.             "$ref": "List.LimitsReturned",
  3519.             "required": true
  3520.           }
  3521.         },
  3522.         "type": "object"
  3523.       },
  3524.       "type": "method"
  3525.     },
  3526.     "VideoLibrary.GetGenres": {
  3527.       "description": "Retrieve all genres",
  3528.       "params": [
  3529.         {
  3530.           "enums": [
  3531.             "movie",
  3532.             "tvshow",
  3533.             "musicvideo"
  3534.           ],
  3535.           "name": "type",
  3536.           "required": true,
  3537.           "type": "string"
  3538.         },
  3539.         {
  3540.           "$ref": "Library.Fields.Genre",
  3541.           "name": "properties"
  3542.         },
  3543.         {
  3544.           "$ref": "List.Limits",
  3545.           "name": "limits"
  3546.         },
  3547.         {
  3548.           "$ref": "List.Sort",
  3549.           "name": "sort"
  3550.         }
  3551.       ],
  3552.       "returns": {
  3553.         "properties": {
  3554.           "genres": {
  3555.             "items": {
  3556.               "$ref": "Library.Details.Genre"
  3557.             },
  3558.             "required": true,
  3559.             "type": "array"
  3560.           },
  3561.           "limits": {
  3562.             "$ref": "List.LimitsReturned",
  3563.             "required": true
  3564.           }
  3565.         },
  3566.         "type": "object"
  3567.       },
  3568.       "type": "method"
  3569.     },
  3570.     "VideoLibrary.GetMovieDetails": {
  3571.       "description": "Retrieve details about a specific movie",
  3572.       "params": [
  3573.         {
  3574.           "$ref": "Library.Id",
  3575.           "name": "movieid",
  3576.           "required": true
  3577.         },
  3578.         {
  3579.           "$ref": "Video.Fields.Movie",
  3580.           "name": "properties"
  3581.         }
  3582.       ],
  3583.       "returns": {
  3584.         "properties": {
  3585.           "moviedetails": {
  3586.             "$ref": "Video.Details.Movie"
  3587.           }
  3588.         },
  3589.         "type": "object"
  3590.       },
  3591.       "type": "method"
  3592.     },
  3593.     "VideoLibrary.GetMovieSetDetails": {
  3594.       "description": "Retrieve details about a specific movie set",
  3595.       "params": [
  3596.         {
  3597.           "$ref": "Library.Id",
  3598.           "name": "setid",
  3599.           "required": true
  3600.         },
  3601.         {
  3602.           "$ref": "Video.Fields.MovieSet",
  3603.           "name": "properties"
  3604.         },
  3605.         {
  3606.           "name": "movies",
  3607.           "properties": {
  3608.             "limits": {
  3609.               "$ref": "List.Limits"
  3610.             },
  3611.             "properties": {
  3612.               "$ref": "Video.Fields.Movie"
  3613.             },
  3614.             "sort": {
  3615.               "$ref": "List.Sort"
  3616.             }
  3617.           },
  3618.           "type": "object"
  3619.         }
  3620.       ],
  3621.       "returns": {
  3622.         "properties": {
  3623.           "setdetails": {
  3624.             "$ref": "Video.Details.MovieSet.Extended"
  3625.           }
  3626.         },
  3627.         "type": "object"
  3628.       },
  3629.       "type": "method"
  3630.     },
  3631.     "VideoLibrary.GetMovieSets": {
  3632.       "description": "Retrieve all movie sets",
  3633.       "params": [
  3634.         {
  3635.           "$ref": "Video.Fields.MovieSet",
  3636.           "name": "properties"
  3637.         },
  3638.         {
  3639.           "$ref": "List.Limits",
  3640.           "name": "limits"
  3641.         },
  3642.         {
  3643.           "$ref": "List.Sort",
  3644.           "name": "sort"
  3645.         }
  3646.       ],
  3647.       "returns": {
  3648.         "properties": {
  3649.           "limits": {
  3650.             "$ref": "List.LimitsReturned",
  3651.             "required": true
  3652.           },
  3653.           "sets": {
  3654.             "items": {
  3655.               "$ref": "Video.Details.MovieSet"
  3656.             },
  3657.             "type": "array"
  3658.           }
  3659.         },
  3660.         "type": "object"
  3661.       },
  3662.       "type": "method"
  3663.     },
  3664.     "VideoLibrary.GetMovies": {
  3665.       "description": "Retrieve all movies",
  3666.       "params": [
  3667.         {
  3668.           "$ref": "Video.Fields.Movie",
  3669.           "name": "properties"
  3670.         },
  3671.         {
  3672.           "$ref": "List.Limits",
  3673.           "name": "limits"
  3674.         },
  3675.         {
  3676.           "$ref": "List.Sort",
  3677.           "name": "sort"
  3678.         },
  3679.         {
  3680.           "name": "filter",
  3681.           "type": [
  3682.             {
  3683.               "additionalProperties": false,
  3684.               "properties": {
  3685.                 "genreid": {
  3686.                   "$ref": "Library.Id",
  3687.                   "required": true
  3688.                 }
  3689.               },
  3690.               "type": "object"
  3691.             },
  3692.             {
  3693.               "additionalProperties": false,
  3694.               "properties": {
  3695.                 "genre": {
  3696.                   "minLength": 1,
  3697.                   "required": true,
  3698.                   "type": "string"
  3699.                 }
  3700.               },
  3701.               "type": "object"
  3702.             },
  3703.             {
  3704.               "additionalProperties": false,
  3705.               "properties": {
  3706.                 "year": {
  3707.                   "minimum": 0,
  3708.                   "required": true,
  3709.                   "type": "integer"
  3710.                 }
  3711.               },
  3712.               "type": "object"
  3713.             },
  3714.             {
  3715.               "additionalProperties": false,
  3716.               "properties": {
  3717.                 "actor": {
  3718.                   "minLength": 1,
  3719.                   "required": true,
  3720.                   "type": "string"
  3721.                 }
  3722.               },
  3723.               "type": "object"
  3724.             },
  3725.             {
  3726.               "additionalProperties": false,
  3727.               "properties": {
  3728.                 "director": {
  3729.                   "minLength": 1,
  3730.                   "required": true,
  3731.                   "type": "string"
  3732.                 }
  3733.               },
  3734.               "type": "object"
  3735.             },
  3736.             {
  3737.               "additionalProperties": false,
  3738.               "properties": {
  3739.                 "studio": {
  3740.                   "minLength": 1,
  3741.                   "required": true,
  3742.                   "type": "string"
  3743.                 }
  3744.               },
  3745.               "type": "object"
  3746.             },
  3747.             {
  3748.               "additionalProperties": false,
  3749.               "properties": {
  3750.                 "country": {
  3751.                   "minLength": 1,
  3752.                   "required": true,
  3753.                   "type": "string"
  3754.                 }
  3755.               },
  3756.               "type": "object"
  3757.             },
  3758.             {
  3759.               "additionalProperties": false,
  3760.               "properties": {
  3761.                 "setid": {
  3762.                   "$ref": "Library.Id",
  3763.                   "required": true
  3764.                 }
  3765.               },
  3766.               "type": "object"
  3767.             },
  3768.             {
  3769.               "additionalProperties": false,
  3770.               "properties": {
  3771.                 "set": {
  3772.                   "minLength": 1,
  3773.                   "required": true,
  3774.                   "type": "string"
  3775.                 }
  3776.               },
  3777.               "type": "object"
  3778.             },
  3779.             {
  3780.               "additionalProperties": false,
  3781.               "properties": {
  3782.                 "tag": {
  3783.                   "minLength": 1,
  3784.                   "required": true,
  3785.                   "type": "string"
  3786.                 }
  3787.               },
  3788.               "type": "object"
  3789.             },
  3790.             {
  3791.               "$ref": "List.Filter.Movies"
  3792.             }
  3793.           ]
  3794.         }
  3795.       ],
  3796.       "returns": {
  3797.         "properties": {
  3798.           "limits": {
  3799.             "$ref": "List.LimitsReturned",
  3800.             "required": true
  3801.           },
  3802.           "movies": {
  3803.             "items": {
  3804.               "$ref": "Video.Details.Movie"
  3805.             },
  3806.             "type": "array"
  3807.           }
  3808.         },
  3809.         "type": "object"
  3810.       },
  3811.       "type": "method"
  3812.     },
  3813.     "VideoLibrary.GetMusicVideoDetails": {
  3814.       "description": "Retrieve details about a specific music video",
  3815.       "params": [
  3816.         {
  3817.           "$ref": "Library.Id",
  3818.           "name": "musicvideoid",
  3819.           "required": true
  3820.         },
  3821.         {
  3822.           "$ref": "Video.Fields.MusicVideo",
  3823.           "name": "properties"
  3824.         }
  3825.       ],
  3826.       "returns": {
  3827.         "properties": {
  3828.           "musicvideodetails": {
  3829.             "$ref": "Video.Details.MusicVideo"
  3830.           }
  3831.         },
  3832.         "type": "object"
  3833.       },
  3834.       "type": "method"
  3835.     },
  3836.     "VideoLibrary.GetMusicVideos": {
  3837.       "description": "Retrieve all music videos",
  3838.       "params": [
  3839.         {
  3840.           "$ref": "Video.Fields.MusicVideo",
  3841.           "name": "properties"
  3842.         },
  3843.         {
  3844.           "$ref": "List.Limits",
  3845.           "name": "limits"
  3846.         },
  3847.         {
  3848.           "$ref": "List.Sort",
  3849.           "name": "sort"
  3850.         },
  3851.         {
  3852.           "name": "filter",
  3853.           "type": [
  3854.             {
  3855.               "additionalProperties": false,
  3856.               "properties": {
  3857.                 "artist": {
  3858.                   "minLength": 1,
  3859.                   "required": true,
  3860.                   "type": "string"
  3861.                 }
  3862.               },
  3863.               "type": "object"
  3864.             },
  3865.             {
  3866.               "additionalProperties": false,
  3867.               "properties": {
  3868.                 "genreid": {
  3869.                   "$ref": "Library.Id",
  3870.                   "required": true
  3871.                 }
  3872.               },
  3873.               "type": "object"
  3874.             },
  3875.             {
  3876.               "additionalProperties": false,
  3877.               "properties": {
  3878.                 "genre": {
  3879.                   "minLength": 1,
  3880.                   "required": true,
  3881.                   "type": "string"
  3882.                 }
  3883.               },
  3884.               "type": "object"
  3885.             },
  3886.             {
  3887.               "additionalProperties": false,
  3888.               "properties": {
  3889.                 "year": {
  3890.                   "minimum": 0,
  3891.                   "required": true,
  3892.                   "type": "integer"
  3893.                 }
  3894.               },
  3895.               "type": "object"
  3896.             },
  3897.             {
  3898.               "additionalProperties": false,
  3899.               "properties": {
  3900.                 "director": {
  3901.                   "minLength": 1,
  3902.                   "required": true,
  3903.                   "type": "string"
  3904.                 }
  3905.               },
  3906.               "type": "object"
  3907.             },
  3908.             {
  3909.               "additionalProperties": false,
  3910.               "properties": {
  3911.                 "studio": {
  3912.                   "minLength": 1,
  3913.                   "required": true,
  3914.                   "type": "string"
  3915.                 }
  3916.               },
  3917.               "type": "object"
  3918.             },
  3919.             {
  3920.               "additionalProperties": false,
  3921.               "properties": {
  3922.                 "tag": {
  3923.                   "minLength": 1,
  3924.                   "required": true,
  3925.                   "type": "string"
  3926.                 }
  3927.               },
  3928.               "type": "object"
  3929.             },
  3930.             {
  3931.               "$ref": "List.Filter.MusicVideos"
  3932.             }
  3933.           ]
  3934.         }
  3935.       ],
  3936.       "returns": {
  3937.         "properties": {
  3938.           "limits": {
  3939.             "$ref": "List.LimitsReturned",
  3940.             "required": true
  3941.           },
  3942.           "musicvideos": {
  3943.             "items": {
  3944.               "$ref": "Video.Details.MusicVideo"
  3945.             },
  3946.             "type": "array"
  3947.           }
  3948.         },
  3949.         "type": "object"
  3950.       },
  3951.       "type": "method"
  3952.     },
  3953.     "VideoLibrary.GetRecentlyAddedEpisodes": {
  3954.       "description": "Retrieve all recently added tv episodes",
  3955.       "params": [
  3956.         {
  3957.           "$ref": "Video.Fields.Episode",
  3958.           "name": "properties"
  3959.         },
  3960.         {
  3961.           "$ref": "List.Limits",
  3962.           "name": "limits"
  3963.         },
  3964.         {
  3965.           "$ref": "List.Sort",
  3966.           "name": "sort"
  3967.         }
  3968.       ],
  3969.       "returns": {
  3970.         "properties": {
  3971.           "episodes": {
  3972.             "items": {
  3973.               "$ref": "Video.Details.Episode"
  3974.             },
  3975.             "type": "array"
  3976.           },
  3977.           "limits": {
  3978.             "$ref": "List.LimitsReturned",
  3979.             "required": true
  3980.           }
  3981.         },
  3982.         "type": "object"
  3983.       },
  3984.       "type": "method"
  3985.     },
  3986.     "VideoLibrary.GetRecentlyAddedMovies": {
  3987.       "description": "Retrieve all recently added movies",
  3988.       "params": [
  3989.         {
  3990.           "$ref": "Video.Fields.Movie",
  3991.           "name": "properties"
  3992.         },
  3993.         {
  3994.           "$ref": "List.Limits",
  3995.           "name": "limits"
  3996.         },
  3997.         {
  3998.           "$ref": "List.Sort",
  3999.           "name": "sort"
  4000.         }
  4001.       ],
  4002.       "returns": {
  4003.         "properties": {
  4004.           "limits": {
  4005.             "$ref": "List.LimitsReturned",
  4006.             "required": true
  4007.           },
  4008.           "movies": {
  4009.             "items": {
  4010.               "$ref": "Video.Details.Movie"
  4011.             },
  4012.             "type": "array"
  4013.           }
  4014.         },
  4015.         "type": "object"
  4016.       },
  4017.       "type": "method"
  4018.     },
  4019.     "VideoLibrary.GetRecentlyAddedMusicVideos": {
  4020.       "description": "Retrieve all recently added music videos",
  4021.       "params": [
  4022.         {
  4023.           "$ref": "Video.Fields.MusicVideo",
  4024.           "name": "properties"
  4025.         },
  4026.         {
  4027.           "$ref": "List.Limits",
  4028.           "name": "limits"
  4029.         },
  4030.         {
  4031.           "$ref": "List.Sort",
  4032.           "name": "sort"
  4033.         }
  4034.       ],
  4035.       "returns": {
  4036.         "properties": {
  4037.           "limits": {
  4038.             "$ref": "List.LimitsReturned",
  4039.             "required": true
  4040.           },
  4041.           "musicvideos": {
  4042.             "items": {
  4043.               "$ref": "Video.Details.MusicVideo"
  4044.             },
  4045.             "type": "array"
  4046.           }
  4047.         },
  4048.         "type": "object"
  4049.       },
  4050.       "type": "method"
  4051.     },
  4052.     "VideoLibrary.GetSeasonDetails": {
  4053.       "description": "Retrieve details about a specific tv show season",
  4054.       "params": [
  4055.         {
  4056.           "$ref": "Library.Id",
  4057.           "name": "seasonid",
  4058.           "required": true
  4059.         },
  4060.         {
  4061.           "$ref": "Video.Fields.Season",
  4062.           "name": "properties"
  4063.         }
  4064.       ],
  4065.       "returns": {
  4066.         "properties": {
  4067.           "seasondetails": {
  4068.             "$ref": "Video.Details.Season"
  4069.           }
  4070.         },
  4071.         "type": "object"
  4072.       },
  4073.       "type": "method"
  4074.     },
  4075.     "VideoLibrary.GetSeasons": {
  4076.       "description": "Retrieve all tv seasons",
  4077.       "params": [
  4078.         {
  4079.           "$ref": "Library.Id",
  4080.           "name": "tvshowid",
  4081.           "required": true
  4082.         },
  4083.         {
  4084.           "$ref": "Video.Fields.Season",
  4085.           "name": "properties"
  4086.         },
  4087.         {
  4088.           "$ref": "List.Limits",
  4089.           "name": "limits"
  4090.         },
  4091.         {
  4092.           "$ref": "List.Sort",
  4093.           "name": "sort"
  4094.         }
  4095.       ],
  4096.       "returns": {
  4097.         "properties": {
  4098.           "limits": {
  4099.             "$ref": "List.LimitsReturned",
  4100.             "required": true
  4101.           },
  4102.           "seasons": {
  4103.             "items": {
  4104.               "$ref": "Video.Details.Season"
  4105.             },
  4106.             "type": "array"
  4107.           }
  4108.         },
  4109.         "type": "object"
  4110.       },
  4111.       "type": "method"
  4112.     },
  4113.     "VideoLibrary.GetTVShowDetails": {
  4114.       "description": "Retrieve details about a specific tv show",
  4115.       "params": [
  4116.         {
  4117.           "$ref": "Library.Id",
  4118.           "name": "tvshowid",
  4119.           "required": true
  4120.         },
  4121.         {
  4122.           "$ref": "Video.Fields.TVShow",
  4123.           "name": "properties"
  4124.         }
  4125.       ],
  4126.       "returns": {
  4127.         "properties": {
  4128.           "tvshowdetails": {
  4129.             "$ref": "Video.Details.TVShow"
  4130.           }
  4131.         },
  4132.         "type": "object"
  4133.       },
  4134.       "type": "method"
  4135.     },
  4136.     "VideoLibrary.GetTVShows": {
  4137.       "description": "Retrieve all tv shows",
  4138.       "params": [
  4139.         {
  4140.           "$ref": "Video.Fields.TVShow",
  4141.           "name": "properties"
  4142.         },
  4143.         {
  4144.           "$ref": "List.Limits",
  4145.           "name": "limits"
  4146.         },
  4147.         {
  4148.           "$ref": "List.Sort",
  4149.           "name": "sort"
  4150.         },
  4151.         {
  4152.           "name": "filter",
  4153.           "type": [
  4154.             {
  4155.               "additionalProperties": false,
  4156.               "properties": {
  4157.                 "genreid": {
  4158.                   "$ref": "Library.Id",
  4159.                   "required": true
  4160.                 }
  4161.               },
  4162.               "type": "object"
  4163.             },
  4164.             {
  4165.               "additionalProperties": false,
  4166.               "properties": {
  4167.                 "genre": {
  4168.                   "minLength": 1,
  4169.                   "required": true,
  4170.                   "type": "string"
  4171.                 }
  4172.               },
  4173.               "type": "object"
  4174.             },
  4175.             {
  4176.               "additionalProperties": false,
  4177.               "properties": {
  4178.                 "year": {
  4179.                   "minimum": 0,
  4180.                   "required": true,
  4181.                   "type": "integer"
  4182.                 }
  4183.               },
  4184.               "type": "object"
  4185.             },
  4186.             {
  4187.               "additionalProperties": false,
  4188.               "properties": {
  4189.                 "actor": {
  4190.                   "minLength": 1,
  4191.                   "required": true,
  4192.                   "type": "string"
  4193.                 }
  4194.               },
  4195.               "type": "object"
  4196.             },
  4197.             {
  4198.               "additionalProperties": false,
  4199.               "properties": {
  4200.                 "studio": {
  4201.                   "minLength": 1,
  4202.                   "required": true,
  4203.                   "type": "string"
  4204.                 }
  4205.               },
  4206.               "type": "object"
  4207.             },
  4208.             {
  4209.               "additionalProperties": false,
  4210.               "properties": {
  4211.                 "tag": {
  4212.                   "minLength": 1,
  4213.                   "required": true,
  4214.                   "type": "string"
  4215.                 }
  4216.               },
  4217.               "type": "object"
  4218.             },
  4219.             {
  4220.               "$ref": "List.Filter.TVShows"
  4221.             }
  4222.           ]
  4223.         }
  4224.       ],
  4225.       "returns": {
  4226.         "properties": {
  4227.           "limits": {
  4228.             "$ref": "List.LimitsReturned",
  4229.             "required": true
  4230.           },
  4231.           "tvshows": {
  4232.             "items": {
  4233.               "$ref": "Video.Details.TVShow"
  4234.             },
  4235.             "type": "array"
  4236.           }
  4237.         },
  4238.         "type": "object"
  4239.       },
  4240.       "type": "method"
  4241.     },
  4242.     "VideoLibrary.RemoveEpisode": {
  4243.       "description": "Removes the given episode from the library",
  4244.       "params": [
  4245.         {
  4246.           "$ref": "Library.Id",
  4247.           "name": "episodeid",
  4248.           "required": true
  4249.         }
  4250.       ],
  4251.       "returns": {
  4252.         "type": "string"
  4253.       },
  4254.       "type": "method"
  4255.     },
  4256.     "VideoLibrary.RemoveMovie": {
  4257.       "description": "Removes the given movie from the library",
  4258.       "params": [
  4259.         {
  4260.           "$ref": "Library.Id",
  4261.           "name": "movieid",
  4262.           "required": true
  4263.         }
  4264.       ],
  4265.       "returns": {
  4266.         "type": "string"
  4267.       },
  4268.       "type": "method"
  4269.     },
  4270.     "VideoLibrary.RemoveMusicVideo": {
  4271.       "description": "Removes the given music video from the library",
  4272.       "params": [
  4273.         {
  4274.           "$ref": "Library.Id",
  4275.           "name": "musicvideoid",
  4276.           "required": true
  4277.         }
  4278.       ],
  4279.       "returns": {
  4280.         "type": "string"
  4281.       },
  4282.       "type": "method"
  4283.     },
  4284.     "VideoLibrary.RemoveTVShow": {
  4285.       "description": "Removes the given tv show from the library",
  4286.       "params": [
  4287.         {
  4288.           "$ref": "Library.Id",
  4289.           "name": "tvshowid",
  4290.           "required": true
  4291.         }
  4292.       ],
  4293.       "returns": {
  4294.         "type": "string"
  4295.       },
  4296.       "type": "method"
  4297.     },
  4298.     "VideoLibrary.Scan": {
  4299.       "description": "Scans the video sources for new library items",
  4300.       "params": [
  4301.         {
  4302.           "default": "",
  4303.           "name": "directory",
  4304.           "type": "string"
  4305.         },
  4306.         {
  4307.           "default": true,
  4308.           "description": "Whether or not to show the progress bar or any other GUI dialog",
  4309.           "name": "showdialogs",
  4310.           "type": "boolean"
  4311.         }
  4312.       ],
  4313.       "returns": {
  4314.         "type": "string"
  4315.       },
  4316.       "type": "method"
  4317.     },
  4318.     "VideoLibrary.SetEpisodeDetails": {
  4319.       "description": "Update the given episode with the given details",
  4320.       "params": [
  4321.         {
  4322.           "$ref": "Library.Id",
  4323.           "name": "episodeid",
  4324.           "required": true
  4325.         },
  4326.         {
  4327.           "$ref": "Optional.String",
  4328.           "default": null,
  4329.           "name": "title"
  4330.         },
  4331.         {
  4332.           "$ref": "Optional.Integer",
  4333.           "default": null,
  4334.           "name": "playcount"
  4335.         },
  4336.         {
  4337.           "$ref": "Optional.Integer",
  4338.           "default": null,
  4339.           "description": "Runtime in seconds",
  4340.           "name": "runtime"
  4341.         },
  4342.         {
  4343.           "default": null,
  4344.           "name": "director",
  4345.           "type": [
  4346.             {
  4347.               "type": "null"
  4348.             },
  4349.             {
  4350.               "$ref": "Array.String"
  4351.             }
  4352.           ]
  4353.         },
  4354.         {
  4355.           "$ref": "Optional.String",
  4356.           "default": null,
  4357.           "name": "plot"
  4358.         },
  4359.         {
  4360.           "$ref": "Optional.Number",
  4361.           "default": null,
  4362.           "name": "rating"
  4363.         },
  4364.         {
  4365.           "$ref": "Optional.String",
  4366.           "default": null,
  4367.           "name": "votes"
  4368.         },
  4369.         {
  4370.           "$ref": "Optional.String",
  4371.           "default": null,
  4372.           "name": "lastplayed"
  4373.         },
  4374.         {
  4375.           "default": null,
  4376.           "name": "writer",
  4377.           "type": [
  4378.             {
  4379.               "type": "null"
  4380.             },
  4381.             {
  4382.               "$ref": "Array.String"
  4383.             }
  4384.           ]
  4385.         },
  4386.         {
  4387.           "$ref": "Optional.String",
  4388.           "default": null,
  4389.           "name": "firstaired"
  4390.         },
  4391.         {
  4392.           "$ref": "Optional.String",
  4393.           "default": null,
  4394.           "name": "productioncode"
  4395.         },
  4396.         {
  4397.           "$ref": "Optional.Integer",
  4398.           "default": null,
  4399.           "name": "season"
  4400.         },
  4401.         {
  4402.           "$ref": "Optional.Integer",
  4403.           "default": null,
  4404.           "name": "episode"
  4405.         },
  4406.         {
  4407.           "$ref": "Optional.String",
  4408.           "default": null,
  4409.           "name": "originaltitle"
  4410.         },
  4411.         {
  4412.           "$ref": "Optional.String",
  4413.           "default": null,
  4414.           "name": "thumbnail"
  4415.         },
  4416.         {
  4417.           "$ref": "Optional.String",
  4418.           "default": null,
  4419.           "name": "fanart"
  4420.         },
  4421.         {
  4422.           "default": null,
  4423.           "name": "art",
  4424.           "type": [
  4425.             {
  4426.               "type": "null"
  4427.             },
  4428.             {
  4429.               "$ref": "Media.Artwork.Set"
  4430.             }
  4431.           ]
  4432.         },
  4433.         {
  4434.           "default": null,
  4435.           "name": "resume",
  4436.           "type": [
  4437.             {
  4438.               "type": "null"
  4439.             },
  4440.             {
  4441.               "$ref": "Video.Resume"
  4442.             }
  4443.           ]
  4444.         }
  4445.       ],
  4446.       "returns": {
  4447.         "type": "string"
  4448.       },
  4449.       "type": "method"
  4450.     },
  4451.     "VideoLibrary.SetMovieDetails": {
  4452.       "description": "Update the given movie with the given details",
  4453.       "params": [
  4454.         {
  4455.           "$ref": "Library.Id",
  4456.           "name": "movieid",
  4457.           "required": true
  4458.         },
  4459.         {
  4460.           "$ref": "Optional.String",
  4461.           "default": null,
  4462.           "name": "title"
  4463.         },
  4464.         {
  4465.           "$ref": "Optional.Integer",
  4466.           "default": null,
  4467.           "name": "playcount"
  4468.         },
  4469.         {
  4470.           "$ref": "Optional.Integer",
  4471.           "default": null,
  4472.           "description": "Runtime in seconds",
  4473.           "name": "runtime"
  4474.         },
  4475.         {
  4476.           "default": null,
  4477.           "name": "director",
  4478.           "type": [
  4479.             {
  4480.               "type": "null"
  4481.             },
  4482.             {
  4483.               "$ref": "Array.String"
  4484.             }
  4485.           ]
  4486.         },
  4487.         {
  4488.           "default": null,
  4489.           "name": "studio",
  4490.           "type": [
  4491.             {
  4492.               "type": "null"
  4493.             },
  4494.             {
  4495.               "$ref": "Array.String"
  4496.             }
  4497.           ]
  4498.         },
  4499.         {
  4500.           "$ref": "Optional.Integer",
  4501.           "default": null,
  4502.           "name": "year"
  4503.         },
  4504.         {
  4505.           "$ref": "Optional.String",
  4506.           "default": null,
  4507.           "name": "plot"
  4508.         },
  4509.         {
  4510.           "default": null,
  4511.           "name": "genre",
  4512.           "type": [
  4513.             {
  4514.               "type": "null"
  4515.             },
  4516.             {
  4517.               "$ref": "Array.String"
  4518.             }
  4519.           ]
  4520.         },
  4521.         {
  4522.           "$ref": "Optional.Number",
  4523.           "default": null,
  4524.           "name": "rating"
  4525.         },
  4526.         {
  4527.           "$ref": "Optional.String",
  4528.           "default": null,
  4529.           "name": "mpaa"
  4530.         },
  4531.         {
  4532.           "$ref": "Optional.String",
  4533.           "default": null,
  4534.           "name": "imdbnumber"
  4535.         },
  4536.         {
  4537.           "$ref": "Optional.String",
  4538.           "default": null,
  4539.           "name": "votes"
  4540.         },
  4541.         {
  4542.           "$ref": "Optional.String",
  4543.           "default": null,
  4544.           "name": "lastplayed"
  4545.         },
  4546.         {
  4547.           "$ref": "Optional.String",
  4548.           "default": null,
  4549.           "name": "originaltitle"
  4550.         },
  4551.         {
  4552.           "$ref": "Optional.String",
  4553.           "default": null,
  4554.           "name": "trailer"
  4555.         },
  4556.         {
  4557.           "$ref": "Optional.String",
  4558.           "default": null,
  4559.           "name": "tagline"
  4560.         },
  4561.         {
  4562.           "$ref": "Optional.String",
  4563.           "default": null,
  4564.           "name": "plotoutline"
  4565.         },
  4566.         {
  4567.           "default": null,
  4568.           "name": "writer",
  4569.           "type": [
  4570.             {
  4571.               "type": "null"
  4572.             },
  4573.             {
  4574.               "$ref": "Array.String"
  4575.             }
  4576.           ]
  4577.         },
  4578.         {
  4579.           "default": null,
  4580.           "name": "country",
  4581.           "type": [
  4582.             {
  4583.               "type": "null"
  4584.             },
  4585.             {
  4586.               "$ref": "Array.String"
  4587.             }
  4588.           ]
  4589.         },
  4590.         {
  4591.           "$ref": "Optional.Integer",
  4592.           "default": null,
  4593.           "name": "top250"
  4594.         },
  4595.         {
  4596.           "$ref": "Optional.String",
  4597.           "default": null,
  4598.           "name": "sorttitle"
  4599.         },
  4600.         {
  4601.           "$ref": "Optional.String",
  4602.           "default": null,
  4603.           "name": "set"
  4604.         },
  4605.         {
  4606.           "default": null,
  4607.           "name": "showlink",
  4608.           "type": [
  4609.             {
  4610.               "type": "null"
  4611.             },
  4612.             {
  4613.               "$ref": "Array.String"
  4614.             }
  4615.           ]
  4616.         },
  4617.         {
  4618.           "$ref": "Optional.String",
  4619.           "default": null,
  4620.           "name": "thumbnail"
  4621.         },
  4622.         {
  4623.           "$ref": "Optional.String",
  4624.           "default": null,
  4625.           "name": "fanart"
  4626.         },
  4627.         {
  4628.           "default": null,
  4629.           "name": "tag",
  4630.           "type": [
  4631.             {
  4632.               "type": "null"
  4633.             },
  4634.             {
  4635.               "$ref": "Array.String"
  4636.             }
  4637.           ]
  4638.         },
  4639.         {
  4640.           "default": null,
  4641.           "name": "art",
  4642.           "type": [
  4643.             {
  4644.               "type": "null"
  4645.             },
  4646.             {
  4647.               "$ref": "Media.Artwork.Set"
  4648.             }
  4649.           ]
  4650.         },
  4651.         {
  4652.           "default": null,
  4653.           "name": "resume",
  4654.           "type": [
  4655.             {
  4656.               "type": "null"
  4657.             },
  4658.             {
  4659.               "$ref": "Video.Resume"
  4660.             }
  4661.           ]
  4662.         }
  4663.       ],
  4664.       "returns": {
  4665.         "type": "string"
  4666.       },
  4667.       "type": "method"
  4668.     },
  4669.     "VideoLibrary.SetMovieSetDetails": {
  4670.       "description": "Update the given movie set with the given details",
  4671.       "params": [
  4672.         {
  4673.           "$ref": "Library.Id",
  4674.           "name": "setid",
  4675.           "required": true
  4676.         },
  4677.         {
  4678.           "$ref": "Optional.String",
  4679.           "default": null,
  4680.           "name": "title"
  4681.         },
  4682.         {
  4683.           "default": null,
  4684.           "name": "art",
  4685.           "type": [
  4686.             {
  4687.               "type": "null"
  4688.             },
  4689.             {
  4690.               "$ref": "Media.Artwork.Set"
  4691.             }
  4692.           ]
  4693.         }
  4694.       ],
  4695.       "returns": {
  4696.         "type": "string"
  4697.       },
  4698.       "type": "method"
  4699.     },
  4700.     "VideoLibrary.SetMusicVideoDetails": {
  4701.       "description": "Update the given music video with the given details",
  4702.       "params": [
  4703.         {
  4704.           "$ref": "Library.Id",
  4705.           "name": "musicvideoid",
  4706.           "required": true
  4707.         },
  4708.         {
  4709.           "$ref": "Optional.String",
  4710.           "default": null,
  4711.           "name": "title"
  4712.         },
  4713.         {
  4714.           "$ref": "Optional.Integer",
  4715.           "default": null,
  4716.           "name": "playcount"
  4717.         },
  4718.         {
  4719.           "$ref": "Optional.Integer",
  4720.           "default": null,
  4721.           "description": "Runtime in seconds",
  4722.           "name": "runtime"
  4723.         },
  4724.         {
  4725.           "default": null,
  4726.           "name": "director",
  4727.           "type": [
  4728.             {
  4729.               "type": "null"
  4730.             },
  4731.             {
  4732.               "$ref": "Array.String"
  4733.             }
  4734.           ]
  4735.         },
  4736.         {
  4737.           "default": null,
  4738.           "name": "studio",
  4739.           "type": [
  4740.             {
  4741.               "type": "null"
  4742.             },
  4743.             {
  4744.               "$ref": "Array.String"
  4745.             }
  4746.           ]
  4747.         },
  4748.         {
  4749.           "$ref": "Optional.Integer",
  4750.           "default": null,
  4751.           "name": "year"
  4752.         },
  4753.         {
  4754.           "$ref": "Optional.String",
  4755.           "default": null,
  4756.           "name": "plot"
  4757.         },
  4758.         {
  4759.           "$ref": "Optional.String",
  4760.           "default": null,
  4761.           "name": "album"
  4762.         },
  4763.         {
  4764.           "default": null,
  4765.           "name": "artist",
  4766.           "type": [
  4767.             {
  4768.               "type": "null"
  4769.             },
  4770.             {
  4771.               "$ref": "Array.String"
  4772.             }
  4773.           ]
  4774.         },
  4775.         {
  4776.           "default": null,
  4777.           "name": "genre",
  4778.           "type": [
  4779.             {
  4780.               "type": "null"
  4781.             },
  4782.             {
  4783.               "$ref": "Array.String"
  4784.             }
  4785.           ]
  4786.         },
  4787.         {
  4788.           "$ref": "Optional.Integer",
  4789.           "default": null,
  4790.           "name": "track"
  4791.         },
  4792.         {
  4793.           "$ref": "Optional.String",
  4794.           "default": null,
  4795.           "name": "lastplayed"
  4796.         },
  4797.         {
  4798.           "$ref": "Optional.String",
  4799.           "default": null,
  4800.           "name": "thumbnail"
  4801.         },
  4802.         {
  4803.           "$ref": "Optional.String",
  4804.           "default": null,
  4805.           "name": "fanart"
  4806.         },
  4807.         {
  4808.           "default": null,
  4809.           "name": "tag",
  4810.           "type": [
  4811.             {
  4812.               "type": "null"
  4813.             },
  4814.             {
  4815.               "$ref": "Array.String"
  4816.             }
  4817.           ]
  4818.         },
  4819.         {
  4820.           "default": null,
  4821.           "name": "art",
  4822.           "type": [
  4823.             {
  4824.               "type": "null"
  4825.             },
  4826.             {
  4827.               "$ref": "Media.Artwork.Set"
  4828.             }
  4829.           ]
  4830.         },
  4831.         {
  4832.           "default": null,
  4833.           "name": "resume",
  4834.           "type": [
  4835.             {
  4836.               "type": "null"
  4837.             },
  4838.             {
  4839.               "$ref": "Video.Resume"
  4840.             }
  4841.           ]
  4842.         }
  4843.       ],
  4844.       "returns": {
  4845.         "type": "string"
  4846.       },
  4847.       "type": "method"
  4848.     },
  4849.     "VideoLibrary.SetSeasonDetails": {
  4850.       "description": "Update the given season with the given details",
  4851.       "params": [
  4852.         {
  4853.           "$ref": "Library.Id",
  4854.           "name": "seasonid",
  4855.           "required": true
  4856.         },
  4857.         {
  4858.           "default": null,
  4859.           "name": "art",
  4860.           "type": [
  4861.             {
  4862.               "type": "null"
  4863.             },
  4864.             {
  4865.               "$ref": "Media.Artwork.Set"
  4866.             }
  4867.           ]
  4868.         }
  4869.       ],
  4870.       "returns": {
  4871.         "type": "string"
  4872.       },
  4873.       "type": "method"
  4874.     },
  4875.     "VideoLibrary.SetTVShowDetails": {
  4876.       "description": "Update the given tvshow with the given details",
  4877.       "params": [
  4878.         {
  4879.           "$ref": "Library.Id",
  4880.           "name": "tvshowid",
  4881.           "required": true
  4882.         },
  4883.         {
  4884.           "$ref": "Optional.String",
  4885.           "default": null,
  4886.           "name": "title"
  4887.         },
  4888.         {
  4889.           "$ref": "Optional.Integer",
  4890.           "default": null,
  4891.           "name": "playcount"
  4892.         },
  4893.         {
  4894.           "default": null,
  4895.           "name": "studio",
  4896.           "type": [
  4897.             {
  4898.               "type": "null"
  4899.             },
  4900.             {
  4901.               "$ref": "Array.String"
  4902.             }
  4903.           ]
  4904.         },
  4905.         {
  4906.           "$ref": "Optional.String",
  4907.           "default": null,
  4908.           "name": "plot"
  4909.         },
  4910.         {
  4911.           "default": null,
  4912.           "name": "genre",
  4913.           "type": [
  4914.             {
  4915.               "type": "null"
  4916.             },
  4917.             {
  4918.               "$ref": "Array.String"
  4919.             }
  4920.           ]
  4921.         },
  4922.         {
  4923.           "$ref": "Optional.Number",
  4924.           "default": null,
  4925.           "name": "rating"
  4926.         },
  4927.         {
  4928.           "$ref": "Optional.String",
  4929.           "default": null,
  4930.           "name": "mpaa"
  4931.         },
  4932.         {
  4933.           "$ref": "Optional.String",
  4934.           "default": null,
  4935.           "name": "imdbnumber"
  4936.         },
  4937.         {
  4938.           "$ref": "Optional.String",
  4939.           "default": null,
  4940.           "name": "premiered"
  4941.         },
  4942.         {
  4943.           "$ref": "Optional.String",
  4944.           "default": null,
  4945.           "name": "votes"
  4946.         },
  4947.         {
  4948.           "$ref": "Optional.String",
  4949.           "default": null,
  4950.           "name": "lastplayed"
  4951.         },
  4952.         {
  4953.           "$ref": "Optional.String",
  4954.           "default": null,
  4955.           "name": "originaltitle"
  4956.         },
  4957.         {
  4958.           "$ref": "Optional.String",
  4959.           "default": null,
  4960.           "name": "sorttitle"
  4961.         },
  4962.         {
  4963.           "$ref": "Optional.String",
  4964.           "default": null,
  4965.           "name": "episodeguide"
  4966.         },
  4967.         {
  4968.           "$ref": "Optional.String",
  4969.           "default": null,
  4970.           "name": "thumbnail"
  4971.         },
  4972.         {
  4973.           "$ref": "Optional.String",
  4974.           "default": null,
  4975.           "name": "fanart"
  4976.         },
  4977.         {
  4978.           "default": null,
  4979.           "name": "tag",
  4980.           "type": [
  4981.             {
  4982.               "type": "null"
  4983.             },
  4984.             {
  4985.               "$ref": "Array.String"
  4986.             }
  4987.           ]
  4988.         },
  4989.         {
  4990.           "default": null,
  4991.           "name": "art",
  4992.           "type": [
  4993.             {
  4994.               "type": "null"
  4995.             },
  4996.             {
  4997.               "$ref": "Media.Artwork.Set"
  4998.             }
  4999.           ]
  5000.         }
  5001.       ],
  5002.       "returns": {
  5003.         "type": "string"
  5004.       },
  5005.       "type": "method"
  5006.     },
  5007.     "XBMC.GetInfoBooleans": {
  5008.       "description": "Retrieve info booleans about Kodi and the system",
  5009.       "params": [
  5010.         {
  5011.           "items": {
  5012.             "type": "string"
  5013.           },
  5014.           "minItems": 1,
  5015.           "name": "booleans",
  5016.           "required": true,
  5017.           "type": "array"
  5018.         }
  5019.       ],
  5020.       "returns": {
  5021.         "additionalProperties": {
  5022.           "default": "",
  5023.           "type": "string"
  5024.         },
  5025.         "description": "Object containing key-value pairs of the retrieved info booleans",
  5026.         "type": "object"
  5027.       },
  5028.       "type": "method"
  5029.     },
  5030.     "XBMC.GetInfoLabels": {
  5031.       "description": "Retrieve info labels about Kodi and the system",
  5032.       "params": [
  5033.         {
  5034.           "description": "See http://kodi.wiki/view/InfoLabels for a list of possible info labels",
  5035.           "items": {
  5036.             "type": "string"
  5037.           },
  5038.           "minItems": 1,
  5039.           "name": "labels",
  5040.           "required": true,
  5041.           "type": "array"
  5042.         }
  5043.       ],
  5044.       "returns": {
  5045.         "additionalProperties": {
  5046.           "default": "",
  5047.           "type": "string"
  5048.         },
  5049.         "description": "Object containing key-value pairs of the retrieved info labels",
  5050.         "type": "object"
  5051.       },
  5052.       "type": "method"
  5053.     }
  5054.   },
  5055.   "notifications": {
  5056.     "Application.OnVolumeChanged": {
  5057.       "description": "The volume of the application has changed.",
  5058.       "params": [
  5059.         {
  5060.           "name": "sender",
  5061.           "required": true,
  5062.           "type": "string"
  5063.         },
  5064.         {
  5065.           "name": "data",
  5066.           "properties": {
  5067.             "muted": {
  5068.               "required": true,
  5069.               "type": "boolean"
  5070.             },
  5071.             "volume": {
  5072.               "maximum": 100,
  5073.               "minimum": 0,
  5074.               "required": true,
  5075.               "type": "integer"
  5076.             }
  5077.           },
  5078.           "required": true,
  5079.           "type": "object"
  5080.         }
  5081.       ],
  5082.       "returns": null,
  5083.       "type": "notification"
  5084.     },
  5085.     "AudioLibrary.OnCleanFinished": {
  5086.       "description": "The audio library has been cleaned.",
  5087.       "params": [
  5088.         {
  5089.           "name": "sender",
  5090.           "required": true,
  5091.           "type": "string"
  5092.         },
  5093.         {
  5094.           "name": "data",
  5095.           "required": true,
  5096.           "type": "null"
  5097.         }
  5098.       ],
  5099.       "returns": null,
  5100.       "type": "notification"
  5101.     },
  5102.     "AudioLibrary.OnCleanStarted": {
  5103.       "description": "An audio library clean operation has started.",
  5104.       "params": [
  5105.         {
  5106.           "name": "sender",
  5107.           "required": true,
  5108.           "type": "string"
  5109.         },
  5110.         {
  5111.           "name": "data",
  5112.           "required": true,
  5113.           "type": "null"
  5114.         }
  5115.       ],
  5116.       "returns": null,
  5117.       "type": "notification"
  5118.     },
  5119.     "AudioLibrary.OnRemove": {
  5120.       "description": "An audio item has been removed.",
  5121.       "params": [
  5122.         {
  5123.           "name": "sender",
  5124.           "required": true,
  5125.           "type": "string"
  5126.         },
  5127.         {
  5128.           "name": "data",
  5129.           "properties": {
  5130.             "id": {
  5131.               "$ref": "Library.Id",
  5132.               "required": true
  5133.             },
  5134.             "transaction": {
  5135.               "$ref": "Optional.Boolean",
  5136.               "description": "True if the removal is being performed within a transaction."
  5137.             },
  5138.             "type": {
  5139.               "$ref": "Notifications.Library.Audio.Type",
  5140.               "required": true
  5141.             }
  5142.           },
  5143.           "required": true,
  5144.           "type": "object"
  5145.         }
  5146.       ],
  5147.       "returns": null,
  5148.       "type": "notification"
  5149.     },
  5150.     "AudioLibrary.OnScanFinished": {
  5151.       "description": "Scanning the audio library has been finished.",
  5152.       "params": [
  5153.         {
  5154.           "name": "sender",
  5155.           "required": true,
  5156.           "type": "string"
  5157.         },
  5158.         {
  5159.           "name": "data",
  5160.           "required": true,
  5161.           "type": "null"
  5162.         }
  5163.       ],
  5164.       "returns": null,
  5165.       "type": "notification"
  5166.     },
  5167.     "AudioLibrary.OnScanStarted": {
  5168.       "description": "An audio library scan has started.",
  5169.       "params": [
  5170.         {
  5171.           "name": "sender",
  5172.           "required": true,
  5173.           "type": "string"
  5174.         },
  5175.         {
  5176.           "name": "data",
  5177.           "required": true,
  5178.           "type": "null"
  5179.         }
  5180.       ],
  5181.       "returns": null,
  5182.       "type": "notification"
  5183.     },
  5184.     "AudioLibrary.OnUpdate": {
  5185.       "description": "An audio item has been updated.",
  5186.       "params": [
  5187.         {
  5188.           "name": "sender",
  5189.           "required": true,
  5190.           "type": "string"
  5191.         },
  5192.         {
  5193.           "name": "data",
  5194.           "properties": {
  5195.             "id": {
  5196.               "$ref": "Library.Id",
  5197.               "required": true
  5198.             },
  5199.             "transaction": {
  5200.               "$ref": "Optional.Boolean",
  5201.               "description": "True if the update is being performed within a transaction."
  5202.             },
  5203.             "type": {
  5204.               "enum": [
  5205.                 "song"
  5206.               ],
  5207.               "id": "Notifications.Library.Audio.Type",
  5208.               "required": true,
  5209.               "type": "string"
  5210.             }
  5211.           },
  5212.           "required": true,
  5213.           "type": "object"
  5214.         }
  5215.       ],
  5216.       "returns": null,
  5217.       "type": "notification"
  5218.     },
  5219.     "GUI.OnDPMSActivated": {
  5220.       "description": "Energy saving/DPMS has been activated.",
  5221.       "params": [
  5222.         {
  5223.           "name": "sender",
  5224.           "required": true,
  5225.           "type": "string"
  5226.         },
  5227.         {
  5228.           "name": "data",
  5229.           "required": true,
  5230.           "type": "null"
  5231.         }
  5232.       ],
  5233.       "returns": null,
  5234.       "type": "notification"
  5235.     },
  5236.     "GUI.OnDPMSDeactivated": {
  5237.       "description": "Energy saving/DPMS has been deactivated.",
  5238.       "params": [
  5239.         {
  5240.           "name": "sender",
  5241.           "required": true,
  5242.           "type": "string"
  5243.         },
  5244.         {
  5245.           "name": "data",
  5246.           "required": true,
  5247.           "type": "null"
  5248.         }
  5249.       ],
  5250.       "returns": null,
  5251.       "type": "notification"
  5252.     },
  5253.     "GUI.OnScreensaverActivated": {
  5254.       "description": "The screensaver has been activated.",
  5255.       "params": [
  5256.         {
  5257.           "name": "sender",
  5258.           "required": true,
  5259.           "type": "string"
  5260.         },
  5261.         {
  5262.           "name": "data",
  5263.           "required": true,
  5264.           "type": "null"
  5265.         }
  5266.       ],
  5267.       "returns": null,
  5268.       "type": "notification"
  5269.     },
  5270.     "GUI.OnScreensaverDeactivated": {
  5271.       "description": "The screensaver has been deactivated.",
  5272.       "params": [
  5273.         {
  5274.           "name": "sender",
  5275.           "required": true,
  5276.           "type": "string"
  5277.         },
  5278.         {
  5279.           "name": "data",
  5280.           "properties": {
  5281.             "shuttingdown": {
  5282.               "required": true,
  5283.               "type": "boolean"
  5284.             }
  5285.           },
  5286.           "required": true,
  5287.           "type": "object"
  5288.         }
  5289.       ],
  5290.       "returns": null,
  5291.       "type": "notification"
  5292.     },
  5293.     "Input.OnInputFinished": {
  5294.       "description": "The user has provided the requested input.",
  5295.       "params": [
  5296.         {
  5297.           "name": "sender",
  5298.           "required": true,
  5299.           "type": "string"
  5300.         },
  5301.         {
  5302.           "name": "data",
  5303.           "required": true,
  5304.           "type": "null"
  5305.         }
  5306.       ],
  5307.       "returns": null,
  5308.       "type": "notification"
  5309.     },
  5310.     "Input.OnInputRequested": {
  5311.       "description": "The user is requested to provide some information.",
  5312.       "params": [
  5313.         {
  5314.           "name": "sender",
  5315.           "required": true,
  5316.           "type": "string"
  5317.         },
  5318.         {
  5319.           "name": "data",
  5320.           "properties": {
  5321.             "title": {
  5322.               "type": "string"
  5323.             },
  5324.             "type": {
  5325.               "enum": [
  5326.                 "keyboard",
  5327.                 "time",
  5328.                 "date",
  5329.                 "ip",
  5330.                 "password",
  5331.                 "numericpassword",
  5332.                 "number",
  5333.                 "seconds"
  5334.               ],
  5335.               "required": true,
  5336.               "type": "string"
  5337.             },
  5338.             "value": {
  5339.               "required": true,
  5340.               "type": "string"
  5341.             }
  5342.           },
  5343.           "required": true,
  5344.           "type": "object"
  5345.         }
  5346.       ],
  5347.       "returns": null,
  5348.       "type": "notification"
  5349.     },
  5350.     "Player.OnPause": {
  5351.       "description": "Playback of a media item has been paused. If there is no ID available extra information will be provided.",
  5352.       "params": [
  5353.         {
  5354.           "name": "sender",
  5355.           "required": true,
  5356.           "type": "string"
  5357.         },
  5358.         {
  5359.           "$ref": "Player.Notifications.Data",
  5360.           "name": "data",
  5361.           "required": true
  5362.         }
  5363.       ],
  5364.       "returns": null,
  5365.       "type": "notification"
  5366.     },
  5367.     "Player.OnPlay": {
  5368.       "description": "Playback of a media item has been started or the playback speed has changed. If there is no ID available extra information will be provided.",
  5369.       "params": [
  5370.         {
  5371.           "name": "sender",
  5372.           "required": true,
  5373.           "type": "string"
  5374.         },
  5375.         {
  5376.           "$ref": "Player.Notifications.Data",
  5377.           "name": "data",
  5378.           "required": true
  5379.         }
  5380.       ],
  5381.       "returns": null,
  5382.       "type": "notification"
  5383.     },
  5384.     "Player.OnPropertyChanged": {
  5385.       "description": "A property of the playing items has changed.",
  5386.       "params": [
  5387.         {
  5388.           "name": "sender",
  5389.           "required": true,
  5390.           "type": "string"
  5391.         },
  5392.         {
  5393.           "name": "data",
  5394.           "properties": {
  5395.             "player": {
  5396.               "$ref": "Player.Notifications.Player",
  5397.               "required": true
  5398.             },
  5399.             "property": {
  5400.               "$ref": "Player.Property.Value"
  5401.             }
  5402.           },
  5403.           "required": true,
  5404.           "type": "object"
  5405.         }
  5406.       ],
  5407.       "returns": null,
  5408.       "type": "notification"
  5409.     },
  5410.     "Player.OnSeek": {
  5411.       "description": "The playback position has been changed. If there is no ID available extra information will be provided.",
  5412.       "params": [
  5413.         {
  5414.           "name": "sender",
  5415.           "required": true,
  5416.           "type": "string"
  5417.         },
  5418.         {
  5419.           "name": "data",
  5420.           "properties": {
  5421.             "item": {
  5422.               "$ref": "Notifications.Item"
  5423.             },
  5424.             "player": {
  5425.               "$ref": "Player.Notifications.Player.Seek",
  5426.               "required": true
  5427.             }
  5428.           },
  5429.           "required": true,
  5430.           "type": "object"
  5431.         }
  5432.       ],
  5433.       "returns": null,
  5434.       "type": "notification"
  5435.     },
  5436.     "Player.OnSpeedChanged": {
  5437.       "description": "Speed of the playback of a media item has been changed. If there is no ID available extra information will be provided.",
  5438.       "params": [
  5439.         {
  5440.           "name": "sender",
  5441.           "required": true,
  5442.           "type": "string"
  5443.         },
  5444.         {
  5445.           "$ref": "Player.Notifications.Data",
  5446.           "name": "data",
  5447.           "required": true
  5448.         }
  5449.       ],
  5450.       "returns": null,
  5451.       "type": "notification"
  5452.     },
  5453.     "Player.OnStop": {
  5454.       "description": "Playback of a media item has been stopped. If there is no ID available extra information will be provided.",
  5455.       "params": [
  5456.         {
  5457.           "name": "sender",
  5458.           "required": true,
  5459.           "type": "string"
  5460.         },
  5461.         {
  5462.           "name": "data",
  5463.           "properties": {
  5464.             "end": {
  5465.               "description": "Whether the player has reached the end of the playable item(s) or not",
  5466.               "required": true,
  5467.               "type": "boolean"
  5468.             },
  5469.             "item": {
  5470.               "$ref": "Notifications.Item"
  5471.             }
  5472.           },
  5473.           "required": true,
  5474.           "type": "object"
  5475.         }
  5476.       ],
  5477.       "returns": null,
  5478.       "type": "notification"
  5479.     },
  5480.     "Playlist.OnAdd": {
  5481.       "description": "A playlist item has been added.",
  5482.       "params": [
  5483.         {
  5484.           "name": "sender",
  5485.           "required": true,
  5486.           "type": "string"
  5487.         },
  5488.         {
  5489.           "name": "data",
  5490.           "properties": {
  5491.             "item": {
  5492.               "$ref": "Notifications.Item"
  5493.             },
  5494.             "playlistid": {
  5495.               "$ref": "Playlist.Id",
  5496.               "required": true
  5497.             },
  5498.             "position": {
  5499.               "$ref": "Playlist.Position"
  5500.             }
  5501.           },
  5502.           "required": true,
  5503.           "type": "object"
  5504.         }
  5505.       ],
  5506.       "returns": null,
  5507.       "type": "notification"
  5508.     },
  5509.     "Playlist.OnClear": {
  5510.       "description": "A playlist item has been cleared.",
  5511.       "params": [
  5512.         {
  5513.           "name": "sender",
  5514.           "required": true,
  5515.           "type": "string"
  5516.         },
  5517.         {
  5518.           "name": "data",
  5519.           "properties": {
  5520.             "playlistid": {
  5521.               "$ref": "Playlist.Id",
  5522.               "required": true
  5523.             }
  5524.           },
  5525.           "required": true,
  5526.           "type": "object"
  5527.         }
  5528.       ],
  5529.       "returns": null,
  5530.       "type": "notification"
  5531.     },
  5532.     "Playlist.OnRemove": {
  5533.       "description": "A playlist item has been removed.",
  5534.       "params": [
  5535.         {
  5536.           "name": "sender",
  5537.           "required": true,
  5538.           "type": "string"
  5539.         },
  5540.         {
  5541.           "name": "data",
  5542.           "properties": {
  5543.             "playlistid": {
  5544.               "$ref": "Playlist.Id",
  5545.               "required": true
  5546.             },
  5547.             "position": {
  5548.               "$ref": "Playlist.Position"
  5549.             }
  5550.           },
  5551.           "required": true,
  5552.           "type": "object"
  5553.         }
  5554.       ],
  5555.       "returns": null,
  5556.       "type": "notification"
  5557.     },
  5558.     "System.OnLowBattery": {
  5559.       "description": "The system is on low battery.",
  5560.       "params": [
  5561.         {
  5562.           "name": "sender",
  5563.           "required": true,
  5564.           "type": "string"
  5565.         },
  5566.         {
  5567.           "name": "data",
  5568.           "required": true,
  5569.           "type": "null"
  5570.         }
  5571.       ],
  5572.       "returns": null,
  5573.       "type": "notification"
  5574.     },
  5575.     "System.OnQuit": {
  5576.       "description": "Kodi will be closed.",
  5577.       "params": [
  5578.         {
  5579.           "name": "sender",
  5580.           "required": true,
  5581.           "type": "string"
  5582.         },
  5583.         {
  5584.           "name": "data",
  5585.           "properties": {
  5586.             "exitcode": {
  5587.               "minimum": 0,
  5588.               "required": true,
  5589.               "type": "integer"
  5590.             }
  5591.           },
  5592.           "required": true,
  5593.           "type": "object"
  5594.         }
  5595.       ],
  5596.       "returns": null,
  5597.       "type": "notification"
  5598.     },
  5599.     "System.OnRestart": {
  5600.       "description": "The system will be restarted.",
  5601.       "params": [
  5602.         {
  5603.           "name": "sender",
  5604.           "required": true,
  5605.           "type": "string"
  5606.         },
  5607.         {
  5608.           "name": "data",
  5609.           "required": true,
  5610.           "type": "null"
  5611.         }
  5612.       ],
  5613.       "returns": null,
  5614.       "type": "notification"
  5615.     },
  5616.     "System.OnSleep": {
  5617.       "description": "The system will be suspended.",
  5618.       "params": [
  5619.         {
  5620.           "name": "sender",
  5621.           "required": true,
  5622.           "type": "string"
  5623.         },
  5624.         {
  5625.           "name": "data",
  5626.           "required": true,
  5627.           "type": "null"
  5628.         }
  5629.       ],
  5630.       "returns": null,
  5631.       "type": "notification"
  5632.     },
  5633.     "System.OnWake": {
  5634.       "description": "The system woke up from suspension.",
  5635.       "params": [
  5636.         {
  5637.           "name": "sender",
  5638.           "required": true,
  5639.           "type": "string"
  5640.         },
  5641.         {
  5642.           "name": "data",
  5643.           "required": true,
  5644.           "type": "null"
  5645.         }
  5646.       ],
  5647.       "returns": null,
  5648.       "type": "notification"
  5649.     },
  5650.     "VideoLibrary.OnCleanFinished": {
  5651.       "description": "The video library has been cleaned.",
  5652.       "params": [
  5653.         {
  5654.           "name": "sender",
  5655.           "required": true,
  5656.           "type": "string"
  5657.         },
  5658.         {
  5659.           "name": "data",
  5660.           "required": true,
  5661.           "type": "null"
  5662.         }
  5663.       ],
  5664.       "returns": null,
  5665.       "type": "notification"
  5666.     },
  5667.     "VideoLibrary.OnCleanStarted": {
  5668.       "description": "A video library clean operation has started.",
  5669.       "params": [
  5670.         {
  5671.           "name": "sender",
  5672.           "required": true,
  5673.           "type": "string"
  5674.         },
  5675.         {
  5676.           "name": "data",
  5677.           "required": true,
  5678.           "type": "null"
  5679.         }
  5680.       ],
  5681.       "returns": null,
  5682.       "type": "notification"
  5683.     },
  5684.     "VideoLibrary.OnRemove": {
  5685.       "description": "A video item has been removed.",
  5686.       "params": [
  5687.         {
  5688.           "name": "sender",
  5689.           "required": true,
  5690.           "type": "string"
  5691.         },
  5692.         {
  5693.           "name": "data",
  5694.           "properties": {
  5695.             "id": {
  5696.               "$ref": "Library.Id",
  5697.               "required": true
  5698.             },
  5699.             "transaction": {
  5700.               "$ref": "Optional.Boolean",
  5701.               "description": "True if the removal is being performed within a transaction."
  5702.             },
  5703.             "type": {
  5704.               "$ref": "Notifications.Library.Video.Type",
  5705.               "required": true
  5706.             }
  5707.           },
  5708.           "required": true,
  5709.           "type": "object"
  5710.         }
  5711.       ],
  5712.       "returns": null,
  5713.       "type": "notification"
  5714.     },
  5715.     "VideoLibrary.OnScanFinished": {
  5716.       "description": "Scanning the video library has been finished.",
  5717.       "params": [
  5718.         {
  5719.           "name": "sender",
  5720.           "required": true,
  5721.           "type": "string"
  5722.         },
  5723.         {
  5724.           "name": "data",
  5725.           "required": true,
  5726.           "type": "null"
  5727.         }
  5728.       ],
  5729.       "returns": null,
  5730.       "type": "notification"
  5731.     },
  5732.     "VideoLibrary.OnScanStarted": {
  5733.       "description": "A video library scan has started.",
  5734.       "params": [
  5735.         {
  5736.           "name": "sender",
  5737.           "required": true,
  5738.           "type": "string"
  5739.         },
  5740.         {
  5741.           "name": "data",
  5742.           "required": true,
  5743.           "type": "null"
  5744.         }
  5745.       ],
  5746.       "returns": null,
  5747.       "type": "notification"
  5748.     },
  5749.     "VideoLibrary.OnUpdate": {
  5750.       "description": "A video item has been updated.",
  5751.       "params": [
  5752.         {
  5753.           "name": "sender",
  5754.           "required": true,
  5755.           "type": "string"
  5756.         },
  5757.         {
  5758.           "name": "data",
  5759.           "properties": {
  5760.             "id": {
  5761.               "$ref": "Library.Id",
  5762.               "required": true
  5763.             },
  5764.             "playcount": {
  5765.               "default": -1,
  5766.               "minimum": 0,
  5767.               "type": "integer"
  5768.             },
  5769.             "transaction": {
  5770.               "$ref": "Optional.Boolean",
  5771.               "description": "True if the update is being performed within a transaction."
  5772.             },
  5773.             "type": {
  5774.               "enum": [
  5775.                 "movie",
  5776.                 "tvshow",
  5777.                 "episode",
  5778.                 "musicvideo"
  5779.               ],
  5780.               "id": "Notifications.Library.Video.Type",
  5781.               "required": true,
  5782.               "type": "string"
  5783.             }
  5784.           },
  5785.           "required": true,
  5786.           "type": "object"
  5787.         }
  5788.       ],
  5789.       "returns": null,
  5790.       "type": "notification"
  5791.     }
  5792.   },
  5793.   "types": {
  5794.     "Addon.Content": {
  5795.       "default": "unknown",
  5796.       "enums": [
  5797.         "unknown",
  5798.         "video",
  5799.         "audio",
  5800.         "image",
  5801.         "executable"
  5802.       ],
  5803.       "id": "Addon.Content",
  5804.       "type": "string"
  5805.     },
  5806.     "Addon.Details": {
  5807.       "extends": "Item.Details.Base",
  5808.       "id": "Addon.Details",
  5809.       "properties": {
  5810.         "addonid": {
  5811.           "required": true,
  5812.           "type": "string"
  5813.         },
  5814.         "author": {
  5815.           "default": "",
  5816.           "type": "string"
  5817.         },
  5818.         "broken": {
  5819.           "default": null,
  5820.           "type": [
  5821.             {
  5822.               "type": "boolean"
  5823.             },
  5824.             {
  5825.               "type": "string"
  5826.             }
  5827.           ]
  5828.         },
  5829.         "dependencies": {
  5830.           "items": {
  5831.             "properties": {
  5832.               "addonid": {
  5833.                 "required": true,
  5834.                 "type": "string"
  5835.               },
  5836.               "optional": {
  5837.                 "required": true,
  5838.                 "type": "boolean"
  5839.               },
  5840.               "version": {
  5841.                 "required": true,
  5842.                 "type": "string"
  5843.               }
  5844.             },
  5845.             "type": "object"
  5846.           },
  5847.           "type": "array"
  5848.         },
  5849.         "description": {
  5850.           "default": "",
  5851.           "type": "string"
  5852.         },
  5853.         "disclaimer": {
  5854.           "default": "",
  5855.           "type": "string"
  5856.         },
  5857.         "enabled": {
  5858.           "default": false,
  5859.           "type": "boolean"
  5860.         },
  5861.         "extrainfo": {
  5862.           "items": {
  5863.             "properties": {
  5864.               "key": {
  5865.                 "required": true,
  5866.                 "type": "string"
  5867.               },
  5868.               "value": {
  5869.                 "required": true,
  5870.                 "type": "string"
  5871.               }
  5872.             },
  5873.             "type": "object"
  5874.           },
  5875.           "type": "array"
  5876.         },
  5877.         "fanart": {
  5878.           "default": "",
  5879.           "type": "string"
  5880.         },
  5881.         "name": {
  5882.           "default": "",
  5883.           "type": "string"
  5884.         },
  5885.         "path": {
  5886.           "default": "",
  5887.           "type": "string"
  5888.         },
  5889.         "rating": {
  5890.           "default": 0,
  5891.           "type": "integer"
  5892.         },
  5893.         "summary": {
  5894.           "default": "",
  5895.           "type": "string"
  5896.         },
  5897.         "thumbnail": {
  5898.           "default": "",
  5899.           "type": "string"
  5900.         },
  5901.         "type": {
  5902.           "$ref": "Addon.Types",
  5903.           "required": true
  5904.         },
  5905.         "version": {
  5906.           "default": "",
  5907.           "type": "string"
  5908.         }
  5909.       }
  5910.     },
  5911.     "Addon.Fields": {
  5912.       "extends": "Item.Fields.Base",
  5913.       "id": "Addon.Fields",
  5914.       "items": {
  5915.         "enums": [
  5916.           "name",
  5917.           "version",
  5918.           "summary",
  5919.           "description",
  5920.           "path",
  5921.           "author",
  5922.           "thumbnail",
  5923.           "disclaimer",
  5924.           "fanart",
  5925.           "dependencies",
  5926.           "broken",
  5927.           "extrainfo",
  5928.           "rating",
  5929.           "enabled"
  5930.         ],
  5931.         "type": "string"
  5932.       }
  5933.     },
  5934.     "Addon.Types": {
  5935.       "default": "unknown",
  5936.       "enums": [
  5937.         "unknown",
  5938.         "xbmc.metadata.scraper.albums",
  5939.         "xbmc.metadata.scraper.artists",
  5940.         "xbmc.metadata.scraper.movies",
  5941.         "xbmc.metadata.scraper.musicvideos",
  5942.         "xbmc.metadata.scraper.tvshows",
  5943.         "xbmc.ui.screensaver",
  5944.         "xbmc.player.musicviz",
  5945.         "xbmc.python.pluginsource",
  5946.         "xbmc.python.script",
  5947.         "xbmc.python.weather",
  5948.         "xbmc.python.subtitles",
  5949.         "xbmc.python.lyrics",
  5950.         "xbmc.gui.skin",
  5951.         "xbmc.gui.webinterface",
  5952.         "xbmc.pvrclient",
  5953.         "xbmc.addon.video",
  5954.         "xbmc.addon.audio",
  5955.         "xbmc.addon.image",
  5956.         "xbmc.addon.executable",
  5957.         "xbmc.service",
  5958.         "xbmc.subtitle.module"
  5959.       ],
  5960.       "id": "Addon.Types",
  5961.       "type": "string"
  5962.     },
  5963.     "Application.Property.Name": {
  5964.       "default": "volume",
  5965.       "enums": [
  5966.         "volume",
  5967.         "muted",
  5968.         "name",
  5969.         "version"
  5970.       ],
  5971.       "id": "Application.Property.Name",
  5972.       "type": "string"
  5973.     },
  5974.     "Application.Property.Value": {
  5975.       "id": "Application.Property.Value",
  5976.       "properties": {
  5977.         "muted": {
  5978.           "default": false,
  5979.           "type": "boolean"
  5980.         },
  5981.         "name": {
  5982.           "default": "",
  5983.           "minLength": 1,
  5984.           "type": "string"
  5985.         },
  5986.         "version": {
  5987.           "properties": {
  5988.             "major": {
  5989.               "minimum": 0,
  5990.               "required": true,
  5991.               "type": "integer"
  5992.             },
  5993.             "minor": {
  5994.               "minimum": 0,
  5995.               "required": true,
  5996.               "type": "integer"
  5997.             },
  5998.             "revision": {
  5999.               "default": null,
  6000.               "type": [
  6001.                 {
  6002.                   "type": "string"
  6003.                 },
  6004.                 {
  6005.                   "type": "integer"
  6006.                 }
  6007.               ]
  6008.             },
  6009.             "tag": {
  6010.               "enums": [
  6011.                 "prealpha",
  6012.                 "alpha",
  6013.                 "beta",
  6014.                 "releasecandidate",
  6015.                 "stable"
  6016.               ],
  6017.               "required": true,
  6018.               "type": "string"
  6019.             },
  6020.             "tagversion": {
  6021.               "default": "",
  6022.               "type": "string"
  6023.             }
  6024.           },
  6025.           "type": "object"
  6026.         },
  6027.         "volume": {
  6028.           "default": 0,
  6029.           "maximum": 100,
  6030.           "minimum": 0,
  6031.           "type": "integer"
  6032.         }
  6033.       },
  6034.       "type": "object"
  6035.     },
  6036.     "Array.Integer": {
  6037.       "id": "Array.Integer",
  6038.       "items": {
  6039.         "type": "integer"
  6040.       },
  6041.       "type": "array"
  6042.     },
  6043.     "Array.String": {
  6044.       "id": "Array.String",
  6045.       "items": {
  6046.         "minLength": 1,
  6047.         "type": "string"
  6048.       },
  6049.       "type": "array"
  6050.     },
  6051.     "Audio.Details.Album": {
  6052.       "extends": "Audio.Details.Media",
  6053.       "id": "Audio.Details.Album",
  6054.       "properties": {
  6055.         "albumid": {
  6056.           "$ref": "Library.Id",
  6057.           "required": true
  6058.         },
  6059.         "albumlabel": {
  6060.           "default": "",
  6061.           "type": "string"
  6062.         },
  6063.         "description": {
  6064.           "default": "",
  6065.           "type": "string"
  6066.         },
  6067.         "mood": {
  6068.           "$ref": "Array.String"
  6069.         },
  6070.         "playcount": {
  6071.           "default": 0,
  6072.           "type": "integer"
  6073.         },
  6074.         "style": {
  6075.           "$ref": "Array.String"
  6076.         },
  6077.         "theme": {
  6078.           "$ref": "Array.String"
  6079.         },
  6080.         "type": {
  6081.           "default": "",
  6082.           "type": "string"
  6083.         }
  6084.       }
  6085.     },
  6086.     "Audio.Details.Artist": {
  6087.       "extends": "Audio.Details.Base",
  6088.       "id": "Audio.Details.Artist",
  6089.       "properties": {
  6090.         "artist": {
  6091.           "required": true,
  6092.           "type": "string"
  6093.         },
  6094.         "artistid": {
  6095.           "$ref": "Library.Id",
  6096.           "required": true
  6097.         },
  6098.         "born": {
  6099.           "default": "",
  6100.           "type": "string"
  6101.         },
  6102.         "compilationartist": {
  6103.           "default": false,
  6104.           "type": "boolean"
  6105.         },
  6106.         "description": {
  6107.           "default": "",
  6108.           "type": "string"
  6109.         },
  6110.         "died": {
  6111.           "default": "",
  6112.           "type": "string"
  6113.         },
  6114.         "disbanded": {
  6115.           "default": "",
  6116.           "type": "string"
  6117.         },
  6118.         "formed": {
  6119.           "default": "",
  6120.           "type": "string"
  6121.         },
  6122.         "instrument": {
  6123.           "$ref": "Array.String"
  6124.         },
  6125.         "mood": {
  6126.           "$ref": "Array.String"
  6127.         },
  6128.         "musicbrainzartistid": {
  6129.           "default": "",
  6130.           "type": "string"
  6131.         },
  6132.         "style": {
  6133.           "$ref": "Array.String"
  6134.         },
  6135.         "yearsactive": {
  6136.           "$ref": "Array.String"
  6137.         }
  6138.       }
  6139.     },
  6140.     "Audio.Details.Base": {
  6141.       "extends": "Media.Details.Base",
  6142.       "id": "Audio.Details.Base",
  6143.       "properties": {
  6144.         "genre": {
  6145.           "$ref": "Array.String"
  6146.         }
  6147.       }
  6148.     },
  6149.     "Audio.Details.Media": {
  6150.       "extends": "Audio.Details.Base",
  6151.       "id": "Audio.Details.Media",
  6152.       "properties": {
  6153.         "artist": {
  6154.           "$ref": "Array.String"
  6155.         },
  6156.         "artistid": {
  6157.           "$ref": "Array.Integer"
  6158.         },
  6159.         "displayartist": {
  6160.           "default": "",
  6161.           "type": "string"
  6162.         },
  6163.         "genreid": {
  6164.           "$ref": "Array.Integer"
  6165.         },
  6166.         "musicbrainzalbumartistid": {
  6167.           "default": "",
  6168.           "type": "string"
  6169.         },
  6170.         "musicbrainzalbumid": {
  6171.           "default": "",
  6172.           "type": "string"
  6173.         },
  6174.         "rating": {
  6175.           "default": 0,
  6176.           "type": "integer"
  6177.         },
  6178.         "title": {
  6179.           "default": "",
  6180.           "type": "string"
  6181.         },
  6182.         "year": {
  6183.           "default": 0,
  6184.           "type": "integer"
  6185.         }
  6186.       }
  6187.     },
  6188.     "Audio.Details.Song": {
  6189.       "extends": "Audio.Details.Media",
  6190.       "id": "Audio.Details.Song",
  6191.       "properties": {
  6192.         "album": {
  6193.           "default": "",
  6194.           "type": "string"
  6195.         },
  6196.         "albumartist": {
  6197.           "$ref": "Array.String"
  6198.         },
  6199.         "albumartistid": {
  6200.           "$ref": "Array.Integer"
  6201.         },
  6202.         "albumid": {
  6203.           "$ref": "Library.Id",
  6204.           "default": -1
  6205.         },
  6206.         "comment": {
  6207.           "default": "",
  6208.           "type": "string"
  6209.         },
  6210.         "disc": {
  6211.           "default": 0,
  6212.           "type": "integer"
  6213.         },
  6214.         "duration": {
  6215.           "default": 0,
  6216.           "type": "integer"
  6217.         },
  6218.         "file": {
  6219.           "default": "",
  6220.           "type": "string"
  6221.         },
  6222.         "lastplayed": {
  6223.           "default": "",
  6224.           "type": "string"
  6225.         },
  6226.         "lyrics": {
  6227.           "default": "",
  6228.           "type": "string"
  6229.         },
  6230.         "musicbrainzartistid": {
  6231.           "default": "",
  6232.           "type": "string"
  6233.         },
  6234.         "musicbrainztrackid": {
  6235.           "default": "",
  6236.           "type": "string"
  6237.         },
  6238.         "playcount": {
  6239.           "default": 0,
  6240.           "type": "integer"
  6241.         },
  6242.         "songid": {
  6243.           "$ref": "Library.Id",
  6244.           "required": true
  6245.         },
  6246.         "track": {
  6247.           "default": 0,
  6248.           "type": "integer"
  6249.         }
  6250.       }
  6251.     },
  6252.     "Audio.Fields.Album": {
  6253.       "extends": "Item.Fields.Base",
  6254.       "id": "Audio.Fields.Album",
  6255.       "items": {
  6256.         "description": "Requesting the genreid and/or artistid field will result in increased response times",
  6257.         "enums": [
  6258.           "title",
  6259.           "description",
  6260.           "artist",
  6261.           "genre",
  6262.           "theme",
  6263.           "mood",
  6264.           "style",
  6265.           "type",
  6266.           "albumlabel",
  6267.           "rating",
  6268.           "year",
  6269.           "musicbrainzalbumid",
  6270.           "musicbrainzalbumartistid",
  6271.           "fanart",
  6272.           "thumbnail",
  6273.           "playcount",
  6274.           "genreid",
  6275.           "artistid",
  6276.           "displayartist"
  6277.         ],
  6278.         "type": "string"
  6279.       }
  6280.     },
  6281.     "Audio.Fields.Artist": {
  6282.       "extends": "Item.Fields.Base",
  6283.       "id": "Audio.Fields.Artist",
  6284.       "items": {
  6285.         "enums": [
  6286.           "instrument",
  6287.           "style",
  6288.           "mood",
  6289.           "born",
  6290.           "formed",
  6291.           "description",
  6292.           "genre",
  6293.           "died",
  6294.           "disbanded",
  6295.           "yearsactive",
  6296.           "musicbrainzartistid",
  6297.           "fanart",
  6298.           "thumbnail",
  6299.           "compilationartist"
  6300.         ],
  6301.         "type": "string"
  6302.       }
  6303.     },
  6304.     "Audio.Fields.Song": {
  6305.       "extends": "Item.Fields.Base",
  6306.       "id": "Audio.Fields.Song",
  6307.       "items": {
  6308.         "description": "Requesting the genreid, artistid and/or albumartistid field will result in increased response times",
  6309.         "enums": [
  6310.           "title",
  6311.           "artist",
  6312.           "albumartist",
  6313.           "genre",
  6314.           "year",
  6315.           "rating",
  6316.           "album",
  6317.           "track",
  6318.           "duration",
  6319.           "comment",
  6320.           "lyrics",
  6321.           "musicbrainztrackid",
  6322.           "musicbrainzartistid",
  6323.           "musicbrainzalbumid",
  6324.           "musicbrainzalbumartistid",
  6325.           "playcount",
  6326.           "fanart",
  6327.           "thumbnail",
  6328.           "file",
  6329.           "albumid",
  6330.           "lastplayed",
  6331.           "disc",
  6332.           "genreid",
  6333.           "artistid",
  6334.           "displayartist",
  6335.           "albumartistid"
  6336.         ],
  6337.         "type": "string"
  6338.       }
  6339.     },
  6340.     "Configuration": {
  6341.       "id": "Configuration",
  6342.       "properties": {
  6343.         "notifications": {
  6344.           "$ref": "Configuration.Notifications",
  6345.           "required": true
  6346.         }
  6347.       },
  6348.       "required": true,
  6349.       "type": "object"
  6350.     },
  6351.     "Configuration.Notifications": {
  6352.       "additionalProperties": false,
  6353.       "id": "Configuration.Notifications",
  6354.       "properties": {
  6355.         "application": {
  6356.           "required": true,
  6357.           "type": "boolean"
  6358.         },
  6359.         "audiolibrary": {
  6360.           "required": true,
  6361.           "type": "boolean"
  6362.         },
  6363.         "gui": {
  6364.           "required": true,
  6365.           "type": "boolean"
  6366.         },
  6367.         "input": {
  6368.           "required": true,
  6369.           "type": "boolean"
  6370.         },
  6371.         "other": {
  6372.           "required": true,
  6373.           "type": "boolean"
  6374.         },
  6375.         "player": {
  6376.           "required": true,
  6377.           "type": "boolean"
  6378.         },
  6379.         "playlist": {
  6380.           "required": true,
  6381.           "type": "boolean"
  6382.         },
  6383.         "pvr": {
  6384.           "required": true,
  6385.           "type": "boolean"
  6386.         },
  6387.         "system": {
  6388.           "required": true,
  6389.           "type": "boolean"
  6390.         },
  6391.         "videolibrary": {
  6392.           "required": true,
  6393.           "type": "boolean"
  6394.         }
  6395.       },
  6396.       "type": "object"
  6397.     },
  6398.     "Favourite.Details.Favourite": {
  6399.       "additionalProperties": false,
  6400.       "id": "Favourite.Details.Favourite",
  6401.       "properties": {
  6402.         "path": {
  6403.           "default": "",
  6404.           "type": "string"
  6405.         },
  6406.         "thumbnail": {
  6407.           "default": "",
  6408.           "type": "string"
  6409.         },
  6410.         "title": {
  6411.           "required": true,
  6412.           "type": "string"
  6413.         },
  6414.         "type": {
  6415.           "$ref": "Favourite.Type",
  6416.           "required": true
  6417.         },
  6418.         "window": {
  6419.           "default": "",
  6420.           "type": "string"
  6421.         },
  6422.         "windowparameter": {
  6423.           "default": "",
  6424.           "type": "string"
  6425.         }
  6426.       },
  6427.       "type": "object"
  6428.     },
  6429.     "Favourite.Fields.Favourite": {
  6430.       "extends": "Item.Fields.Base",
  6431.       "id": "Favourite.Fields.Favourite",
  6432.       "items": {
  6433.         "enums": [
  6434.           "window",
  6435.           "windowparameter",
  6436.           "thumbnail",
  6437.           "path"
  6438.         ],
  6439.         "type": "string"
  6440.       }
  6441.     },
  6442.     "Favourite.Type": {
  6443.       "default": "media",
  6444.       "enums": [
  6445.         "media",
  6446.         "window",
  6447.         "script",
  6448.         "unknown"
  6449.       ],
  6450.       "id": "Favourite.Type",
  6451.       "type": "string"
  6452.     },
  6453.     "Files.Media": {
  6454.       "default": "video",
  6455.       "enums": [
  6456.         "video",
  6457.         "music",
  6458.         "pictures",
  6459.         "files",
  6460.         "programs"
  6461.       ],
  6462.       "id": "Files.Media",
  6463.       "type": "string"
  6464.     },
  6465.     "GUI.Property.Name": {
  6466.       "default": "currentwindow",
  6467.       "enums": [
  6468.         "currentwindow",
  6469.         "currentcontrol",
  6470.         "skin",
  6471.         "fullscreen",
  6472.         "stereoscopicmode"
  6473.       ],
  6474.       "id": "GUI.Property.Name",
  6475.       "type": "string"
  6476.     },
  6477.     "GUI.Property.Value": {
  6478.       "id": "GUI.Property.Value",
  6479.       "properties": {
  6480.         "currentcontrol": {
  6481.           "properties": {
  6482.             "label": {
  6483.               "required": true,
  6484.               "type": "string"
  6485.             }
  6486.           },
  6487.           "type": "object"
  6488.         },
  6489.         "currentwindow": {
  6490.           "properties": {
  6491.             "id": {
  6492.               "required": true,
  6493.               "type": "integer"
  6494.             },
  6495.             "label": {
  6496.               "required": true,
  6497.               "type": "string"
  6498.             }
  6499.           },
  6500.           "type": "object"
  6501.         },
  6502.         "fullscreen": {
  6503.           "default": false,
  6504.           "type": "boolean"
  6505.         },
  6506.         "skin": {
  6507.           "properties": {
  6508.             "id": {
  6509.               "minLength": 1,
  6510.               "required": true,
  6511.               "type": "string"
  6512.             },
  6513.             "name": {
  6514.               "default": "",
  6515.               "type": "string"
  6516.             }
  6517.           },
  6518.           "type": "object"
  6519.         },
  6520.         "stereoscopicmode": {
  6521.           "$ref": "GUI.Stereoscopy.Mode",
  6522.           "default": null
  6523.         }
  6524.       },
  6525.       "type": "object"
  6526.     },
  6527.     "GUI.Stereoscopy.Mode": {
  6528.       "id": "GUI.Stereoscopy.Mode",
  6529.       "properties": {
  6530.         "label": {
  6531.           "required": true,
  6532.           "type": "string"
  6533.         },
  6534.         "mode": {
  6535.           "enums": [
  6536.             "off",
  6537.             "split_vertical",
  6538.             "split_horizontal",
  6539.             "row_interleaved",
  6540.             "hardware_based",
  6541.             "anaglyph_cyan_red",
  6542.             "anaglyph_green_magenta",
  6543.             "monoscopic"
  6544.           ],
  6545.           "required": true,
  6546.           "type": "string"
  6547.         }
  6548.       },
  6549.       "type": "object"
  6550.     },
  6551.     "GUI.Window": {
  6552.       "default": "home",
  6553.       "enums": [
  6554.         "home",
  6555.         "programs",
  6556.         "pictures",
  6557.         "filemanager",
  6558.         "files",
  6559.         "settings",
  6560.         "music",
  6561.         "video",
  6562.         "videos",
  6563.         "pvr",
  6564.         "tvchannels",
  6565.         "tvrecordings",
  6566.         "tvguide",
  6567.         "tvtimers",
  6568.         "tvsearch",
  6569.         "radiochannels",
  6570.         "radiorecordings",
  6571.         "radioguide",
  6572.         "radiotimers",
  6573.         "radiosearch",
  6574.         "pvrguideinfo",
  6575.         "pvrrecordinginfo",
  6576.         "pvrtimersetting",
  6577.         "pvrgroupmanager",
  6578.         "pvrchannelmanager",
  6579.         "pvrguidesearch",
  6580.         "pvrchannelscan",
  6581.         "pvrupdateprogress",
  6582.         "pvrosdchannels",
  6583.         "pvrosdguide",
  6584.         "pvrosddirector",
  6585.         "pvrosdcutter",
  6586.         "pvrosdteletext",
  6587.         "systeminfo",
  6588.         "testpattern",
  6589.         "screencalibration",
  6590.         "guicalibration",
  6591.         "picturessettings",
  6592.         "programssettings",
  6593.         "weathersettings",
  6594.         "musicsettings",
  6595.         "systemsettings",
  6596.         "videossettings",
  6597.         "networksettings",
  6598.         "servicesettings",
  6599.         "appearancesettings",
  6600.         "pvrsettings",
  6601.         "tvsettings",
  6602.         "scripts",
  6603.         "videofiles",
  6604.         "videolibrary",
  6605.         "videoplaylist",
  6606.         "loginscreen",
  6607.         "profiles",
  6608.         "skinsettings",
  6609.         "addonbrowser",
  6610.         "yesnodialog",
  6611.         "progressdialog",
  6612.         "virtualkeyboard",
  6613.         "volumebar",
  6614.         "submenu",
  6615.         "favourites",
  6616.         "contextmenu",
  6617.         "infodialog",
  6618.         "numericinput",
  6619.         "gamepadinput",
  6620.         "shutdownmenu",
  6621.         "mutebug",
  6622.         "playercontrols",
  6623.         "seekbar",
  6624.         "musicosd",
  6625.         "addonsettings",
  6626.         "visualisationsettings",
  6627.         "visualisationpresetlist",
  6628.         "osdvideosettings",
  6629.         "osdaudiosettings",
  6630.         "videobookmarks",
  6631.         "filebrowser",
  6632.         "networksetup",
  6633.         "mediasource",
  6634.         "profilesettings",
  6635.         "locksettings",
  6636.         "contentsettings",
  6637.         "songinformation",
  6638.         "smartplaylisteditor",
  6639.         "smartplaylistrule",
  6640.         "busydialog",
  6641.         "pictureinfo",
  6642.         "accesspoints",
  6643.         "fullscreeninfo",
  6644.         "karaokeselector",
  6645.         "karaokelargeselector",
  6646.         "sliderdialog",
  6647.         "addoninformation",
  6648.         "subtitlesearch",
  6649.         "musicplaylist",
  6650.         "musicfiles",
  6651.         "musiclibrary",
  6652.         "musicplaylisteditor",
  6653.         "teletext",
  6654.         "selectdialog",
  6655.         "musicinformation",
  6656.         "okdialog",
  6657.         "movieinformation",
  6658.         "textviewer",
  6659.         "fullscreenvideo",
  6660.         "fullscreenlivetv",
  6661.         "fullscreenradio",
  6662.         "visualisation",
  6663.         "slideshow",
  6664.         "filestackingdialog",
  6665.         "karaoke",
  6666.         "weather",
  6667.         "screensaver",
  6668.         "videoosd",
  6669.         "videomenu",
  6670.         "videotimeseek",
  6671.         "musicoverlay",
  6672.         "videooverlay",
  6673.         "startwindow",
  6674.         "startup",
  6675.         "peripherals",
  6676.         "peripheralsettings",
  6677.         "extendedprogressdialog",
  6678.         "mediafilter",
  6679.         "addon"
  6680.       ],
  6681.       "id": "GUI.Window",
  6682.       "type": "string"
  6683.     },
  6684.     "Global.IncrementDecrement": {
  6685.       "default": "increment",
  6686.       "enums": [
  6687.         "increment",
  6688.         "decrement"
  6689.       ],
  6690.       "id": "Global.IncrementDecrement",
  6691.       "type": "string"
  6692.     },
  6693.     "Global.String.NotEmpty": {
  6694.       "default": "",
  6695.       "id": "Global.String.NotEmpty",
  6696.       "minLength": 1,
  6697.       "type": "string"
  6698.     },
  6699.     "Global.Time": {
  6700.       "additionalProperties": false,
  6701.       "id": "Global.Time",
  6702.       "properties": {
  6703.         "hours": {
  6704.           "maximum": 23,
  6705.           "minimum": 0,
  6706.           "required": true,
  6707.           "type": "integer"
  6708.         },
  6709.         "milliseconds": {
  6710.           "maximum": 999,
  6711.           "minimum": 0,
  6712.           "required": true,
  6713.           "type": "integer"
  6714.         },
  6715.         "minutes": {
  6716.           "maximum": 59,
  6717.           "minimum": 0,
  6718.           "required": true,
  6719.           "type": "integer"
  6720.         },
  6721.         "seconds": {
  6722.           "maximum": 59,
  6723.           "minimum": 0,
  6724.           "required": true,
  6725.           "type": "integer"
  6726.         }
  6727.       },
  6728.       "type": "object"
  6729.     },
  6730.     "Global.Toggle": {
  6731.       "default": null,
  6732.       "id": "Global.Toggle",
  6733.       "type": [
  6734.         {
  6735.           "type": "boolean"
  6736.         },
  6737.         {
  6738.           "enums": [
  6739.             "toggle"
  6740.           ],
  6741.           "type": "string"
  6742.         }
  6743.       ]
  6744.     },
  6745.     "Global.Weekday": {
  6746.       "default": "monday",
  6747.       "enums": [
  6748.         "monday",
  6749.         "tuesday",
  6750.         "wednesday",
  6751.         "thursday",
  6752.         "friday",
  6753.         "saturday",
  6754.         "sunday"
  6755.       ],
  6756.       "id": "Global.Weekday",
  6757.       "type": "string"
  6758.     },
  6759.     "Input.Action": {
  6760.       "default": "left",
  6761.       "enums": [
  6762.         "left",
  6763.         "right",
  6764.         "up",
  6765.         "down",
  6766.         "pageup",
  6767.         "pagedown",
  6768.         "select",
  6769.         "highlight",
  6770.         "parentdir",
  6771.         "parentfolder",
  6772.         "back",
  6773.         "previousmenu",
  6774.         "info",
  6775.         "pause",
  6776.         "stop",
  6777.         "skipnext",
  6778.         "skipprevious",
  6779.         "fullscreen",
  6780.         "aspectratio",
  6781.         "stepforward",
  6782.         "stepback",
  6783.         "bigstepforward",
  6784.         "bigstepback",
  6785.         "chapterorbigstepforward",
  6786.         "chapterorbigstepback",
  6787.         "osd",
  6788.         "showsubtitles",
  6789.         "nextsubtitle",
  6790.         "cyclesubtitle",
  6791.         "codecinfo",
  6792.         "nextpicture",
  6793.         "previouspicture",
  6794.         "zoomout",
  6795.         "zoomin",
  6796.         "playlist",
  6797.         "queue",
  6798.         "zoomnormal",
  6799.         "zoomlevel1",
  6800.         "zoomlevel2",
  6801.         "zoomlevel3",
  6802.         "zoomlevel4",
  6803.         "zoomlevel5",
  6804.         "zoomlevel6",
  6805.         "zoomlevel7",
  6806.         "zoomlevel8",
  6807.         "zoomlevel9",
  6808.         "nextcalibration",
  6809.         "resetcalibration",
  6810.         "analogmove",
  6811.         "rotate",
  6812.         "rotateccw",
  6813.         "close",
  6814.         "subtitledelayminus",
  6815.         "subtitledelay",
  6816.         "subtitledelayplus",
  6817.         "audiodelayminus",
  6818.         "audiodelay",
  6819.         "audiodelayplus",
  6820.         "subtitleshiftup",
  6821.         "subtitleshiftdown",
  6822.         "subtitlealign",
  6823.         "audionextlanguage",
  6824.         "verticalshiftup",
  6825.         "verticalshiftdown",
  6826.         "nextresolution",
  6827.         "audiotoggledigital",
  6828.         "number0",
  6829.         "number1",
  6830.         "number2",
  6831.         "number3",
  6832.         "number4",
  6833.         "number5",
  6834.         "number6",
  6835.         "number7",
  6836.         "number8",
  6837.         "number9",
  6838.         "osdleft",
  6839.         "osdright",
  6840.         "osdup",
  6841.         "osddown",
  6842.         "osdselect",
  6843.         "osdvalueplus",
  6844.         "osdvalueminus",
  6845.         "smallstepback",
  6846.         "fastforward",
  6847.         "rewind",
  6848.         "play",
  6849.         "playpause",
  6850.         "switchplayer",
  6851.         "delete",
  6852.         "copy",
  6853.         "move",
  6854.         "mplayerosd",
  6855.         "hidesubmenu",
  6856.         "screenshot",
  6857.         "rename",
  6858.         "togglewatched",
  6859.         "scanitem",
  6860.         "reloadkeymaps",
  6861.         "volumeup",
  6862.         "volumedown",
  6863.         "mute",
  6864.         "backspace",
  6865.         "scrollup",
  6866.         "scrolldown",
  6867.         "analogfastforward",
  6868.         "analogrewind",
  6869.         "moveitemup",
  6870.         "moveitemdown",
  6871.         "contextmenu",
  6872.         "shift",
  6873.         "symbols",
  6874.         "cursorleft",
  6875.         "cursorright",
  6876.         "showtime",
  6877.         "analogseekforward",
  6878.         "analogseekback",
  6879.         "showpreset",
  6880.         "nextpreset",
  6881.         "previouspreset",
  6882.         "lockpreset",
  6883.         "randompreset",
  6884.         "increasevisrating",
  6885.         "decreasevisrating",
  6886.         "showvideomenu",
  6887.         "enter",
  6888.         "increaserating",
  6889.         "decreaserating",
  6890.         "togglefullscreen",
  6891.         "nextscene",
  6892.         "previousscene",
  6893.         "nextletter",
  6894.         "prevletter",
  6895.         "jumpsms2",
  6896.         "jumpsms3",
  6897.         "jumpsms4",
  6898.         "jumpsms5",
  6899.         "jumpsms6",
  6900.         "jumpsms7",
  6901.         "jumpsms8",
  6902.         "jumpsms9",
  6903.         "filter",
  6904.         "filterclear",
  6905.         "filtersms2",
  6906.         "filtersms3",
  6907.         "filtersms4",
  6908.         "filtersms5",
  6909.         "filtersms6",
  6910.         "filtersms7",
  6911.         "filtersms8",
  6912.         "filtersms9",
  6913.         "firstpage",
  6914.         "lastpage",
  6915.         "guiprofile",
  6916.         "red",
  6917.         "green",
  6918.         "yellow",
  6919.         "blue",
  6920.         "increasepar",
  6921.         "decreasepar",
  6922.         "volampup",
  6923.         "volampdown",
  6924.         "createbookmark",
  6925.         "createepisodebookmark",
  6926.         "settingsreset",
  6927.         "settingslevelchange",
  6928.         "stereomode",
  6929.         "nextstereomode",
  6930.         "previousstereomode",
  6931.         "togglestereomode",
  6932.         "stereomodetomono",
  6933.         "channelup",
  6934.         "channeldown",
  6935.         "previouschannelgroup",
  6936.         "nextchannelgroup",
  6937.         "playpvr",
  6938.         "playpvrtv",
  6939.         "playpvrradio",
  6940.         "record",
  6941.         "leftclick",
  6942.         "rightclick",
  6943.         "middleclick",
  6944.         "doubleclick",
  6945.         "longclick",
  6946.         "wheelup",
  6947.         "wheeldown",
  6948.         "mousedrag",
  6949.         "mousemove",
  6950.         "tap",
  6951.         "longpress",
  6952.         "pangesture",
  6953.         "zoomgesture",
  6954.         "rotategesture",
  6955.         "swipeleft",
  6956.         "swiperight",
  6957.         "swipeup",
  6958.         "swipedown",
  6959.         "noop"
  6960.       ],
  6961.       "id": "Input.Action",
  6962.       "type": "string"
  6963.     },
  6964.     "Item.Details.Base": {
  6965.       "id": "Item.Details.Base",
  6966.       "properties": {
  6967.         "label": {
  6968.           "required": true,
  6969.           "type": "string"
  6970.         }
  6971.       },
  6972.       "type": "object"
  6973.     },
  6974.     "Item.Fields.Base": {
  6975.       "id": "Item.Fields.Base",
  6976.       "items": {
  6977.         "type": "string"
  6978.       },
  6979.       "type": "array",
  6980.       "uniqueItems": true
  6981.     },
  6982.     "Library.Details.Genre": {
  6983.       "extends": "Item.Details.Base",
  6984.       "id": "Library.Details.Genre",
  6985.       "properties": {
  6986.         "genreid": {
  6987.           "$ref": "Library.Id",
  6988.           "required": true
  6989.         },
  6990.         "thumbnail": {
  6991.           "default": "",
  6992.           "type": "string"
  6993.         },
  6994.         "title": {
  6995.           "default": "",
  6996.           "type": "string"
  6997.         }
  6998.       }
  6999.     },
  7000.     "Library.Fields.Genre": {
  7001.       "extends": "Item.Fields.Base",
  7002.       "id": "Library.Fields.Genre",
  7003.       "items": {
  7004.         "enums": [
  7005.           "title",
  7006.           "thumbnail"
  7007.         ],
  7008.         "type": "string"
  7009.       }
  7010.     },
  7011.     "Library.Id": {
  7012.       "default": -1,
  7013.       "id": "Library.Id",
  7014.       "minimum": 1,
  7015.       "type": "integer"
  7016.     },
  7017.     "List.Amount": {
  7018.       "default": -1,
  7019.       "id": "List.Amount",
  7020.       "minimum": 0,
  7021.       "type": "integer"
  7022.     },
  7023.     "List.Fields.All": {
  7024.       "extends": "Item.Fields.Base",
  7025.       "id": "List.Fields.All",
  7026.       "items": {
  7027.         "enums": [
  7028.           "title",
  7029.           "artist",
  7030.           "albumartist",
  7031.           "genre",
  7032.           "year",
  7033.           "rating",
  7034.           "album",
  7035.           "track",
  7036.           "duration",
  7037.           "comment",
  7038.           "lyrics",
  7039.           "musicbrainztrackid",
  7040.           "musicbrainzartistid",
  7041.           "musicbrainzalbumid",
  7042.           "musicbrainzalbumartistid",
  7043.           "playcount",
  7044.           "fanart",
  7045.           "director",
  7046.           "trailer",
  7047.           "tagline",
  7048.           "plot",
  7049.           "plotoutline",
  7050.           "originaltitle",
  7051.           "lastplayed",
  7052.           "writer",
  7053.           "studio",
  7054.           "mpaa",
  7055.           "cast",
  7056.           "country",
  7057.           "imdbnumber",
  7058.           "premiered",
  7059.           "productioncode",
  7060.           "runtime",
  7061.           "set",
  7062.           "showlink",
  7063.           "streamdetails",
  7064.           "top250",
  7065.           "votes",
  7066.           "firstaired",
  7067.           "season",
  7068.           "episode",
  7069.           "showtitle",
  7070.           "thumbnail",
  7071.           "file",
  7072.           "resume",
  7073.           "artistid",
  7074.           "albumid",
  7075.           "tvshowid",
  7076.           "setid",
  7077.           "watchedepisodes",
  7078.           "disc",
  7079.           "tag",
  7080.           "art",
  7081.           "genreid",
  7082.           "displayartist",
  7083.           "albumartistid",
  7084.           "description",
  7085.           "theme",
  7086.           "mood",
  7087.           "style",
  7088.           "albumlabel",
  7089.           "sorttitle",
  7090.           "episodeguide",
  7091.           "uniqueid",
  7092.           "dateadded",
  7093.           "channel",
  7094.           "channeltype",
  7095.           "hidden",
  7096.           "locked",
  7097.           "channelnumber",
  7098.           "starttime",
  7099.           "endtime",
  7100.           "specialsortseason",
  7101.           "specialsortepisode"
  7102.         ],
  7103.         "type": "string"
  7104.       }
  7105.     },
  7106.     "List.Fields.Files": {
  7107.       "extends": "Item.Fields.Base",
  7108.       "id": "List.Fields.Files",
  7109.       "items": {
  7110.         "enums": [
  7111.           "title",
  7112.           "artist",
  7113.           "albumartist",
  7114.           "genre",
  7115.           "year",
  7116.           "rating",
  7117.           "album",
  7118.           "track",
  7119.           "duration",
  7120.           "comment",
  7121.           "lyrics",
  7122.           "musicbrainztrackid",
  7123.           "musicbrainzartistid",
  7124.           "musicbrainzalbumid",
  7125.           "musicbrainzalbumartistid",
  7126.           "playcount",
  7127.           "fanart",
  7128.           "director",
  7129.           "trailer",
  7130.           "tagline",
  7131.           "plot",
  7132.           "plotoutline",
  7133.           "originaltitle",
  7134.           "lastplayed",
  7135.           "writer",
  7136.           "studio",
  7137.           "mpaa",
  7138.           "cast",
  7139.           "country",
  7140.           "imdbnumber",
  7141.           "premiered",
  7142.           "productioncode",
  7143.           "runtime",
  7144.           "set",
  7145.           "showlink",
  7146.           "streamdetails",
  7147.           "top250",
  7148.           "votes",
  7149.           "firstaired",
  7150.           "season",
  7151.           "episode",
  7152.           "showtitle",
  7153.           "thumbnail",
  7154.           "file",
  7155.           "resume",
  7156.           "artistid",
  7157.           "albumid",
  7158.           "tvshowid",
  7159.           "setid",
  7160.           "watchedepisodes",
  7161.           "disc",
  7162.           "tag",
  7163.           "art",
  7164.           "genreid",
  7165.           "displayartist",
  7166.           "albumartistid",
  7167.           "description",
  7168.           "theme",
  7169.           "mood",
  7170.           "style",
  7171.           "albumlabel",
  7172.           "sorttitle",
  7173.           "episodeguide",
  7174.           "uniqueid",
  7175.           "dateadded",
  7176.           "size",
  7177.           "lastmodified",
  7178.           "mimetype",
  7179.           "specialsortseason",
  7180.           "specialsortepisode"
  7181.         ],
  7182.         "type": "string"
  7183.       }
  7184.     },
  7185.     "List.Filter.Albums": {
  7186.       "id": "List.Filter.Albums",
  7187.       "type": [
  7188.         {
  7189.           "properties": {
  7190.             "and": {
  7191.               "items": {
  7192.                 "$ref": "List.Filter.Albums"
  7193.               },
  7194.               "minItems": 1,
  7195.               "required": true,
  7196.               "type": "array"
  7197.             }
  7198.           },
  7199.           "type": "object"
  7200.         },
  7201.         {
  7202.           "properties": {
  7203.             "or": {
  7204.               "items": {
  7205.                 "$ref": "List.Filter.Albums"
  7206.               },
  7207.               "minItems": 1,
  7208.               "required": true,
  7209.               "type": "array"
  7210.             }
  7211.           },
  7212.           "type": "object"
  7213.         },
  7214.         {
  7215.           "$ref": "List.Filter.Rule.Albums"
  7216.         }
  7217.       ]
  7218.     },
  7219.     "List.Filter.Artists": {
  7220.       "id": "List.Filter.Artists",
  7221.       "type": [
  7222.         {
  7223.           "properties": {
  7224.             "and": {
  7225.               "items": {
  7226.                 "$ref": "List.Filter.Artists"
  7227.               },
  7228.               "minItems": 1,
  7229.               "required": true,
  7230.               "type": "array"
  7231.             }
  7232.           },
  7233.           "type": "object"
  7234.         },
  7235.         {
  7236.           "properties": {
  7237.             "or": {
  7238.               "items": {
  7239.                 "$ref": "List.Filter.Artists"
  7240.               },
  7241.               "minItems": 1,
  7242.               "required": true,
  7243.               "type": "array"
  7244.             }
  7245.           },
  7246.           "type": "object"
  7247.         },
  7248.         {
  7249.           "$ref": "List.Filter.Rule.Artists"
  7250.         }
  7251.       ]
  7252.     },
  7253.     "List.Filter.Episodes": {
  7254.       "id": "List.Filter.Episodes",
  7255.       "type": [
  7256.         {
  7257.           "properties": {
  7258.             "and": {
  7259.               "items": {
  7260.                 "$ref": "List.Filter.Episodes"
  7261.               },
  7262.               "minItems": 1,
  7263.               "required": true,
  7264.               "type": "array"
  7265.             }
  7266.           },
  7267.           "type": "object"
  7268.         },
  7269.         {
  7270.           "properties": {
  7271.             "or": {
  7272.               "items": {
  7273.                 "$ref": "List.Filter.Episodes"
  7274.               },
  7275.               "minItems": 1,
  7276.               "required": true,
  7277.               "type": "array"
  7278.             }
  7279.           },
  7280.           "type": "object"
  7281.         },
  7282.         {
  7283.           "$ref": "List.Filter.Rule.Episodes"
  7284.         }
  7285.       ]
  7286.     },
  7287.     "List.Filter.Fields.Albums": {
  7288.       "default": "genre",
  7289.       "enums": [
  7290.         "genre",
  7291.         "album",
  7292.         "artist",
  7293.         "albumartist",
  7294.         "year",
  7295.         "review",
  7296.         "themes",
  7297.         "moods",
  7298.         "styles",
  7299.         "type",
  7300.         "label",
  7301.         "rating",
  7302.         "playcount",
  7303.         "playlist",
  7304.         "virtualfolder"
  7305.       ],
  7306.       "id": "List.Filter.Fields.Albums",
  7307.       "type": "string"
  7308.     },
  7309.     "List.Filter.Fields.Artists": {
  7310.       "default": "artist",
  7311.       "enums": [
  7312.         "artist",
  7313.         "genre",
  7314.         "moods",
  7315.         "styles",
  7316.         "instruments",
  7317.         "biography",
  7318.         "born",
  7319.         "bandformed",
  7320.         "disbanded",
  7321.         "died",
  7322.         "playlist",
  7323.         "virtualfolder"
  7324.       ],
  7325.       "id": "List.Filter.Fields.Artists",
  7326.       "type": "string"
  7327.     },
  7328.     "List.Filter.Fields.Episodes": {
  7329.       "default": "title",
  7330.       "enums": [
  7331.         "title",
  7332.         "tvshow",
  7333.         "plot",
  7334.         "votes",
  7335.         "rating",
  7336.         "time",
  7337.         "writers",
  7338.         "airdate",
  7339.         "playcount",
  7340.         "lastplayed",
  7341.         "inprogress",
  7342.         "genre",
  7343.         "year",
  7344.         "director",
  7345.         "actor",
  7346.         "episode",
  7347.         "season",
  7348.         "filename",
  7349.         "path",
  7350.         "studio",
  7351.         "mpaarating",
  7352.         "dateadded",
  7353.         "videoresolution",
  7354.         "audiochannels",
  7355.         "videocodec",
  7356.         "audiocodec",
  7357.         "audiolanguage",
  7358.         "subtitlelanguage",
  7359.         "videoaspect",
  7360.         "playlist",
  7361.         "virtualfolder"
  7362.       ],
  7363.       "id": "List.Filter.Fields.Episodes",
  7364.       "type": "string"
  7365.     },
  7366.     "List.Filter.Fields.Movies": {
  7367.       "default": "title",
  7368.       "enums": [
  7369.         "title",
  7370.         "plot",
  7371.         "plotoutline",
  7372.         "tagline",
  7373.         "votes",
  7374.         "rating",
  7375.         "time",
  7376.         "writers",
  7377.         "playcount",
  7378.         "lastplayed",
  7379.         "inprogress",
  7380.         "genre",
  7381.         "country",
  7382.         "year",
  7383.         "director",
  7384.         "actor",
  7385.         "mpaarating",
  7386.         "top250",
  7387.         "studio",
  7388.         "hastrailer",
  7389.         "filename",
  7390.         "path",
  7391.         "set",
  7392.         "tag",
  7393.         "dateadded",
  7394.         "videoresolution",
  7395.         "audiochannels",
  7396.         "videocodec",
  7397.         "audiocodec",
  7398.         "audiolanguage",
  7399.         "subtitlelanguage",
  7400.         "videoaspect",
  7401.         "playlist",
  7402.         "virtualfolder"
  7403.       ],
  7404.       "id": "List.Filter.Fields.Movies",
  7405.       "type": "string"
  7406.     },
  7407.     "List.Filter.Fields.MusicVideos": {
  7408.       "default": "title",
  7409.       "enums": [
  7410.         "title",
  7411.         "genre",
  7412.         "album",
  7413.         "year",
  7414.         "artist",
  7415.         "filename",
  7416.         "path",
  7417.         "playcount",
  7418.         "lastplayed",
  7419.         "time",
  7420.         "director",
  7421.         "studio",
  7422.         "plot",
  7423.         "tag",
  7424.         "dateadded",
  7425.         "videoresolution",
  7426.         "audiochannels",
  7427.         "videocodec",
  7428.         "audiocodec",
  7429.         "audiolanguage",
  7430.         "subtitlelanguage",
  7431.         "videoaspect",
  7432.         "playlist",
  7433.         "virtualfolder"
  7434.       ],
  7435.       "id": "List.Filter.Fields.MusicVideos",
  7436.       "type": "string"
  7437.     },
  7438.     "List.Filter.Fields.Songs": {
  7439.       "default": "genre",
  7440.       "enums": [
  7441.         "genre",
  7442.         "album",
  7443.         "artist",
  7444.         "albumartist",
  7445.         "title",
  7446.         "year",
  7447.         "time",
  7448.         "tracknumber",
  7449.         "filename",
  7450.         "path",
  7451.         "playcount",
  7452.         "lastplayed",
  7453.         "rating",
  7454.         "comment",
  7455.         "playlist",
  7456.         "virtualfolder"
  7457.       ],
  7458.       "id": "List.Filter.Fields.Songs",
  7459.       "type": "string"
  7460.     },
  7461.     "List.Filter.Fields.TVShows": {
  7462.       "enums": [
  7463.         "title",
  7464.         "plot",
  7465.         "status",
  7466.         "votes",
  7467.         "rating",
  7468.         "year",
  7469.         "genre",
  7470.         "director",
  7471.         "actor",
  7472.         "numepisodes",
  7473.         "numwatched",
  7474.         "playcount",
  7475.         "path",
  7476.         "studio",
  7477.         "mpaarating",
  7478.         "dateadded",
  7479.         "lastplayed",
  7480.         "inprogress",
  7481.         "tag",
  7482.         "playlist",
  7483.         "virtualfolder"
  7484.       ],
  7485.       "id": "List.Filter.Fields.TVShows",
  7486.       "required": true,
  7487.       "type": "string"
  7488.     },
  7489.     "List.Filter.Fields.Textures": {
  7490.       "default": "textureid",
  7491.       "enums": [
  7492.         "textureid",
  7493.         "url",
  7494.         "cachedurl",
  7495.         "lasthashcheck",
  7496.         "imagehash",
  7497.         "width",
  7498.         "height",
  7499.         "usecount",
  7500.         "lastused"
  7501.       ],
  7502.       "id": "List.Filter.Fields.Textures",
  7503.       "type": "string"
  7504.     },
  7505.     "List.Filter.Movies": {
  7506.       "id": "List.Filter.Movies",
  7507.       "type": [
  7508.         {
  7509.           "properties": {
  7510.             "and": {
  7511.               "items": {
  7512.                 "$ref": "List.Filter.Movies"
  7513.               },
  7514.               "minItems": 1,
  7515.               "required": true,
  7516.               "type": "array"
  7517.             }
  7518.           },
  7519.           "type": "object"
  7520.         },
  7521.         {
  7522.           "properties": {
  7523.             "or": {
  7524.               "items": {
  7525.                 "$ref": "List.Filter.Movies"
  7526.               },
  7527.               "minItems": 1,
  7528.               "required": true,
  7529.               "type": "array"
  7530.             }
  7531.           },
  7532.           "type": "object"
  7533.         },
  7534.         {
  7535.           "$ref": "List.Filter.Rule.Movies"
  7536.         }
  7537.       ]
  7538.     },
  7539.     "List.Filter.MusicVideos": {
  7540.       "id": "List.Filter.MusicVideos",
  7541.       "type": [
  7542.         {
  7543.           "properties": {
  7544.             "and": {
  7545.               "items": {
  7546.                 "$ref": "List.Filter.MusicVideos"
  7547.               },
  7548.               "minItems": 1,
  7549.               "required": true,
  7550.               "type": "array"
  7551.             }
  7552.           },
  7553.           "type": "object"
  7554.         },
  7555.         {
  7556.           "properties": {
  7557.             "or": {
  7558.               "items": {
  7559.                 "$ref": "List.Filter.MusicVideos"
  7560.               },
  7561.               "minItems": 1,
  7562.               "required": true,
  7563.               "type": "array"
  7564.             }
  7565.           },
  7566.           "type": "object"
  7567.         },
  7568.         {
  7569.           "$ref": "List.Filter.Rule.MusicVideos"
  7570.         }
  7571.       ]
  7572.     },
  7573.     "List.Filter.Operators": {
  7574.       "default": "contains",
  7575.       "enums": [
  7576.         "contains",
  7577.         "doesnotcontain",
  7578.         "is",
  7579.         "isnot",
  7580.         "startswith",
  7581.         "endswith",
  7582.         "greaterthan",
  7583.         "lessthan",
  7584.         "after",
  7585.         "before",
  7586.         "inthelast",
  7587.         "notinthelast",
  7588.         "true",
  7589.         "false",
  7590.         "between"
  7591.       ],
  7592.       "id": "List.Filter.Operators",
  7593.       "type": "string"
  7594.     },
  7595.     "List.Filter.Rule": {
  7596.       "id": "List.Filter.Rule",
  7597.       "properties": {
  7598.         "operator": {
  7599.           "$ref": "List.Filter.Operators",
  7600.           "required": true
  7601.         },
  7602.         "value": {
  7603.           "required": true,
  7604.           "type": [
  7605.             {
  7606.               "type": "string"
  7607.             },
  7608.             {
  7609.               "items": {
  7610.                 "type": "string"
  7611.               },
  7612.               "type": "array"
  7613.             }
  7614.           ]
  7615.         }
  7616.       },
  7617.       "type": "object"
  7618.     },
  7619.     "List.Filter.Rule.Albums": {
  7620.       "extends": "List.Filter.Rule",
  7621.       "id": "List.Filter.Rule.Albums",
  7622.       "properties": {
  7623.         "field": {
  7624.           "$ref": "List.Filter.Fields.Albums",
  7625.           "required": true
  7626.         }
  7627.       }
  7628.     },
  7629.     "List.Filter.Rule.Artists": {
  7630.       "extends": "List.Filter.Rule",
  7631.       "id": "List.Filter.Rule.Artists",
  7632.       "properties": {
  7633.         "field": {
  7634.           "$ref": "List.Filter.Fields.Artists",
  7635.           "required": true
  7636.         }
  7637.       }
  7638.     },
  7639.     "List.Filter.Rule.Episodes": {
  7640.       "extends": "List.Filter.Rule",
  7641.       "id": "List.Filter.Rule.Episodes",
  7642.       "properties": {
  7643.         "field": {
  7644.           "$ref": "List.Filter.Fields.Episodes",
  7645.           "required": true
  7646.         }
  7647.       }
  7648.     },
  7649.     "List.Filter.Rule.Movies": {
  7650.       "extends": "List.Filter.Rule",
  7651.       "id": "List.Filter.Rule.Movies",
  7652.       "properties": {
  7653.         "field": {
  7654.           "$ref": "List.Filter.Fields.Movies",
  7655.           "required": true
  7656.         }
  7657.       }
  7658.     },
  7659.     "List.Filter.Rule.MusicVideos": {
  7660.       "extends": "List.Filter.Rule",
  7661.       "id": "List.Filter.Rule.MusicVideos",
  7662.       "properties": {
  7663.         "field": {
  7664.           "$ref": "List.Filter.Fields.MusicVideos",
  7665.           "required": true
  7666.         }
  7667.       }
  7668.     },
  7669.     "List.Filter.Rule.Songs": {
  7670.       "extends": "List.Filter.Rule",
  7671.       "id": "List.Filter.Rule.Songs",
  7672.       "properties": {
  7673.         "field": {
  7674.           "$ref": "List.Filter.Fields.Songs",
  7675.           "required": true
  7676.         }
  7677.       }
  7678.     },
  7679.     "List.Filter.Rule.TVShows": {
  7680.       "extends": "List.Filter.Rule",
  7681.       "id": "List.Filter.Rule.TVShows",
  7682.       "properties": {
  7683.         "field": {
  7684.           "$ref": "List.Filter.Fields.TVShows",
  7685.           "required": true
  7686.         }
  7687.       }
  7688.     },
  7689.     "List.Filter.Rule.Textures": {
  7690.       "extends": "List.Filter.Rule",
  7691.       "id": "List.Filter.Rule.Textures",
  7692.       "properties": {
  7693.         "field": {
  7694.           "$ref": "List.Filter.Fields.Textures",
  7695.           "required": true
  7696.         }
  7697.       }
  7698.     },
  7699.     "List.Filter.Songs": {
  7700.       "id": "List.Filter.Songs",
  7701.       "type": [
  7702.         {
  7703.           "properties": {
  7704.             "and": {
  7705.               "items": {
  7706.                 "$ref": "List.Filter.Songs"
  7707.               },
  7708.               "minItems": 1,
  7709.               "required": true,
  7710.               "type": "array"
  7711.             }
  7712.           },
  7713.           "type": "object"
  7714.         },
  7715.         {
  7716.           "properties": {
  7717.             "or": {
  7718.               "items": {
  7719.                 "$ref": "List.Filter.Songs"
  7720.               },
  7721.               "minItems": 1,
  7722.               "required": true,
  7723.               "type": "array"
  7724.             }
  7725.           },
  7726.           "type": "object"
  7727.         },
  7728.         {
  7729.           "$ref": "List.Filter.Rule.Songs"
  7730.         }
  7731.       ]
  7732.     },
  7733.     "List.Filter.TVShows": {
  7734.       "id": "List.Filter.TVShows",
  7735.       "type": [
  7736.         {
  7737.           "properties": {
  7738.             "and": {
  7739.               "items": {
  7740.                 "$ref": "List.Filter.TVShows"
  7741.               },
  7742.               "minItems": 1,
  7743.               "required": true,
  7744.               "type": "array"
  7745.             }
  7746.           },
  7747.           "type": "object"
  7748.         },
  7749.         {
  7750.           "properties": {
  7751.             "or": {
  7752.               "items": {
  7753.                 "$ref": "List.Filter.TVShows"
  7754.               },
  7755.               "minItems": 1,
  7756.               "required": true,
  7757.               "type": "array"
  7758.             }
  7759.           },
  7760.           "type": "object"
  7761.         },
  7762.         {
  7763.           "$ref": "List.Filter.Rule.TVShows"
  7764.         }
  7765.       ]
  7766.     },
  7767.     "List.Filter.Textures": {
  7768.       "id": "List.Filter.Textures",
  7769.       "type": [
  7770.         {
  7771.           "properties": {
  7772.             "and": {
  7773.               "items": {
  7774.                 "$ref": "List.Filter.Textures"
  7775.               },
  7776.               "minItems": 1,
  7777.               "required": true,
  7778.               "type": "array"
  7779.             }
  7780.           },
  7781.           "type": "object"
  7782.         },
  7783.         {
  7784.           "properties": {
  7785.             "or": {
  7786.               "items": {
  7787.                 "$ref": "List.Filter.Textures"
  7788.               },
  7789.               "minItems": 1,
  7790.               "required": true,
  7791.               "type": "array"
  7792.             }
  7793.           },
  7794.           "type": "object"
  7795.         },
  7796.         {
  7797.           "$ref": "List.Filter.Rule.Textures"
  7798.         }
  7799.       ]
  7800.     },
  7801.     "List.Item.All": {
  7802.       "extends": "List.Item.Base",
  7803.       "id": "List.Item.All",
  7804.       "properties": {
  7805.         "channel": {
  7806.           "default": "",
  7807.           "type": "string"
  7808.         },
  7809.         "channelnumber": {
  7810.           "default": 0,
  7811.           "type": "integer"
  7812.         },
  7813.         "channeltype": {
  7814.           "$ref": "PVR.Channel.Type",
  7815.           "default": "tv"
  7816.         },
  7817.         "endtime": {
  7818.           "default": "",
  7819.           "type": "string"
  7820.         },
  7821.         "hidden": {
  7822.           "default": false,
  7823.           "type": "boolean"
  7824.         },
  7825.         "locked": {
  7826.           "default": false,
  7827.           "type": "boolean"
  7828.         },
  7829.         "starttime": {
  7830.           "default": "",
  7831.           "type": "string"
  7832.         }
  7833.       }
  7834.     },
  7835.     "List.Item.Base": {
  7836.       "extends": [
  7837.         "Video.Details.File",
  7838.         "Audio.Details.Media"
  7839.       ],
  7840.       "id": "List.Item.Base",
  7841.       "properties": {
  7842.         "album": {
  7843.           "default": "",
  7844.           "type": "string"
  7845.         },
  7846.         "albumartist": {
  7847.           "$ref": "Array.String"
  7848.         },
  7849.         "albumartistid": {
  7850.           "$ref": "Array.Integer"
  7851.         },
  7852.         "albumid": {
  7853.           "$ref": "Library.Id",
  7854.           "default": -1
  7855.         },
  7856.         "albumlabel": {
  7857.           "default": "",
  7858.           "type": "string"
  7859.         },
  7860.         "cast": {
  7861.           "$ref": "Video.Cast"
  7862.         },
  7863.         "comment": {
  7864.           "default": "",
  7865.           "type": "string"
  7866.         },
  7867.         "country": {
  7868.           "$ref": "Array.String"
  7869.         },
  7870.         "description": {
  7871.           "default": "",
  7872.           "type": "string"
  7873.         },
  7874.         "disc": {
  7875.           "default": 0,
  7876.           "type": "integer"
  7877.         },
  7878.         "duration": {
  7879.           "default": 0,
  7880.           "type": "integer"
  7881.         },
  7882.         "episode": {
  7883.           "default": 0,
  7884.           "type": "integer"
  7885.         },
  7886.         "episodeguide": {
  7887.           "default": "",
  7888.           "type": "string"
  7889.         },
  7890.         "firstaired": {
  7891.           "default": "",
  7892.           "type": "string"
  7893.         },
  7894.         "id": {
  7895.           "$ref": "Library.Id",
  7896.           "default": -1
  7897.         },
  7898.         "imdbnumber": {
  7899.           "default": "",
  7900.           "type": "string"
  7901.         },
  7902.         "lyrics": {
  7903.           "default": "",
  7904.           "type": "string"
  7905.         },
  7906.         "mood": {
  7907.           "$ref": "Array.String"
  7908.         },
  7909.         "mpaa": {
  7910.           "default": "",
  7911.           "type": "string"
  7912.         },
  7913.         "musicbrainzartistid": {
  7914.           "default": "",
  7915.           "type": "string"
  7916.         },
  7917.         "musicbrainztrackid": {
  7918.           "default": "",
  7919.           "type": "string"
  7920.         },
  7921.         "originaltitle": {
  7922.           "default": "",
  7923.           "type": "string"
  7924.         },
  7925.         "plotoutline": {
  7926.           "default": "",
  7927.           "type": "string"
  7928.         },
  7929.         "premiered": {
  7930.           "default": "",
  7931.           "type": "string"
  7932.         },
  7933.         "productioncode": {
  7934.           "default": "",
  7935.           "type": "string"
  7936.         },
  7937.         "season": {
  7938.           "default": 0,
  7939.           "type": "integer"
  7940.         },
  7941.         "set": {
  7942.           "default": "",
  7943.           "type": "string"
  7944.         },
  7945.         "setid": {
  7946.           "$ref": "Library.Id",
  7947.           "default": -1
  7948.         },
  7949.         "showlink": {
  7950.           "$ref": "Array.String"
  7951.         },
  7952.         "showtitle": {
  7953.           "default": "",
  7954.           "type": "string"
  7955.         },
  7956.         "sorttitle": {
  7957.           "default": "",
  7958.           "type": "string"
  7959.         },
  7960.         "specialsortepisode": {
  7961.           "default": 0,
  7962.           "type": "integer"
  7963.         },
  7964.         "specialsortseason": {
  7965.           "default": 0,
  7966.           "type": "integer"
  7967.         },
  7968.         "studio": {
  7969.           "$ref": "Array.String"
  7970.         },
  7971.         "style": {
  7972.           "$ref": "Array.String"
  7973.         },
  7974.         "tag": {
  7975.           "$ref": "Array.String"
  7976.         },
  7977.         "tagline": {
  7978.           "default": "",
  7979.           "type": "string"
  7980.         },
  7981.         "theme": {
  7982.           "$ref": "Array.String"
  7983.         },
  7984.         "top250": {
  7985.           "default": 0,
  7986.           "type": "integer"
  7987.         },
  7988.         "track": {
  7989.           "default": 0,
  7990.           "type": "integer"
  7991.         },
  7992.         "trailer": {
  7993.           "default": "",
  7994.           "type": "string"
  7995.         },
  7996.         "tvshowid": {
  7997.           "$ref": "Library.Id",
  7998.           "default": -1
  7999.         },
  8000.         "type": {
  8001.           "default": "unknown",
  8002.           "enums": [
  8003.             "unknown",
  8004.             "movie",
  8005.             "episode",
  8006.             "musicvideo",
  8007.             "song",
  8008.             "picture",
  8009.             "channel"
  8010.           ],
  8011.           "type": "string"
  8012.         },
  8013.         "uniqueid": {
  8014.           "additionalProperties": {
  8015.             "default": "",
  8016.             "minLength": 1,
  8017.             "type": "string"
  8018.           },
  8019.           "type": "object"
  8020.         },
  8021.         "votes": {
  8022.           "default": "",
  8023.           "type": "string"
  8024.         },
  8025.         "watchedepisodes": {
  8026.           "default": 0,
  8027.           "type": "integer"
  8028.         },
  8029.         "writer": {
  8030.           "$ref": "Array.String"
  8031.         }
  8032.       }
  8033.     },
  8034.     "List.Item.File": {
  8035.       "extends": "List.Item.Base",
  8036.       "id": "List.Item.File",
  8037.       "properties": {
  8038.         "file": {
  8039.           "required": true,
  8040.           "type": "string"
  8041.         },
  8042.         "filetype": {
  8043.           "enums": [
  8044.             "file",
  8045.             "directory"
  8046.           ],
  8047.           "required": true,
  8048.           "type": "string"
  8049.         },
  8050.         "lastmodified": {
  8051.           "default": "",
  8052.           "type": "string"
  8053.         },
  8054.         "mimetype": {
  8055.           "default": "",
  8056.           "type": "string"
  8057.         },
  8058.         "size": {
  8059.           "default": 0,
  8060.           "description": "Size of the file in bytes",
  8061.           "type": "integer"
  8062.         }
  8063.       }
  8064.     },
  8065.     "List.Items.Sources": {
  8066.       "id": "List.Items.Sources",
  8067.       "items": {
  8068.         "extends": "Item.Details.Base",
  8069.         "properties": {
  8070.           "file": {
  8071.             "required": true,
  8072.             "type": "string"
  8073.           }
  8074.         }
  8075.       },
  8076.       "type": "array"
  8077.     },
  8078.     "List.Limits": {
  8079.       "additionalProperties": false,
  8080.       "id": "List.Limits",
  8081.       "properties": {
  8082.         "end": {
  8083.           "$ref": "List.Amount",
  8084.           "default": -1,
  8085.           "description": "Index of the last item to return"
  8086.         },
  8087.         "start": {
  8088.           "default": 0,
  8089.           "description": "Index of the first item to return",
  8090.           "minimum": 0,
  8091.           "type": "integer"
  8092.         }
  8093.       },
  8094.       "type": "object"
  8095.     },
  8096.     "List.LimitsReturned": {
  8097.       "additionalProperties": false,
  8098.       "id": "List.LimitsReturned",
  8099.       "properties": {
  8100.         "end": {
  8101.           "$ref": "List.Amount",
  8102.           "default": -1
  8103.         },
  8104.         "start": {
  8105.           "default": 0,
  8106.           "minimum": 0,
  8107.           "type": "integer"
  8108.         },
  8109.         "total": {
  8110.           "minimum": 0,
  8111.           "required": true,
  8112.           "type": "integer"
  8113.         }
  8114.       },
  8115.       "type": "object"
  8116.     },
  8117.     "List.Sort": {
  8118.       "id": "List.Sort",
  8119.       "properties": {
  8120.         "ignorearticle": {
  8121.           "default": false,
  8122.           "type": "boolean"
  8123.         },
  8124.         "method": {
  8125.           "default": "none",
  8126.           "enums": [
  8127.             "none",
  8128.             "label",
  8129.             "date",
  8130.             "size",
  8131.             "file",
  8132.             "path",
  8133.             "drivetype",
  8134.             "title",
  8135.             "track",
  8136.             "time",
  8137.             "artist",
  8138.             "album",
  8139.             "albumtype",
  8140.             "genre",
  8141.             "country",
  8142.             "year",
  8143.             "rating",
  8144.             "votes",
  8145.             "top250",
  8146.             "programcount",
  8147.             "playlist",
  8148.             "episode",
  8149.             "season",
  8150.             "totalepisodes",
  8151.             "watchedepisodes",
  8152.             "tvshowstatus",
  8153.             "tvshowtitle",
  8154.             "sorttitle",
  8155.             "productioncode",
  8156.             "mpaa",
  8157.             "studio",
  8158.             "dateadded",
  8159.             "lastplayed",
  8160.             "playcount",
  8161.             "listeners",
  8162.             "bitrate",
  8163.             "random"
  8164.           ],
  8165.           "type": "string"
  8166.         },
  8167.         "order": {
  8168.           "default": "ascending",
  8169.           "enums": [
  8170.             "ascending",
  8171.             "descending"
  8172.           ],
  8173.           "type": "string"
  8174.         }
  8175.       },
  8176.       "type": "object"
  8177.     },
  8178.     "Media.Artwork": {
  8179.       "additionalProperties": {
  8180.         "$ref": "Global.String.NotEmpty",
  8181.         "default": ""
  8182.       },
  8183.       "id": "Media.Artwork",
  8184.       "properties": {
  8185.         "banner": {
  8186.           "$ref": "Global.String.NotEmpty",
  8187.           "default": ""
  8188.         },
  8189.         "fanart": {
  8190.           "$ref": "Global.String.NotEmpty",
  8191.           "default": ""
  8192.         },
  8193.         "poster": {
  8194.           "$ref": "Global.String.NotEmpty",
  8195.           "default": ""
  8196.         },
  8197.         "thumb": {
  8198.           "$ref": "Global.String.NotEmpty",
  8199.           "default": ""
  8200.         }
  8201.       },
  8202.       "type": "object"
  8203.     },
  8204.     "Media.Artwork.Set": {
  8205.       "additionalProperties": {
  8206.         "default": null,
  8207.         "type": [
  8208.           {
  8209.             "type": "null"
  8210.           },
  8211.           {
  8212.             "$ref": "Global.String.NotEmpty"
  8213.           }
  8214.         ]
  8215.       },
  8216.       "id": "Media.Artwork.Set",
  8217.       "properties": {
  8218.         "banner": {
  8219.           "default": "",
  8220.           "type": [
  8221.             {
  8222.               "type": "null"
  8223.             },
  8224.             {
  8225.               "$ref": "Global.String.NotEmpty"
  8226.             }
  8227.           ]
  8228.         },
  8229.         "fanart": {
  8230.           "default": "",
  8231.           "type": [
  8232.             {
  8233.               "type": "null"
  8234.             },
  8235.             {
  8236.               "$ref": "Global.String.NotEmpty"
  8237.             }
  8238.           ]
  8239.         },
  8240.         "poster": {
  8241.           "default": "",
  8242.           "type": [
  8243.             {
  8244.               "type": "null"
  8245.             },
  8246.             {
  8247.               "$ref": "Global.String.NotEmpty"
  8248.             }
  8249.           ]
  8250.         },
  8251.         "thumb": {
  8252.           "default": "",
  8253.           "type": [
  8254.             {
  8255.               "type": "null"
  8256.             },
  8257.             {
  8258.               "$ref": "Global.String.NotEmpty"
  8259.             }
  8260.           ]
  8261.         }
  8262.       },
  8263.       "type": "object"
  8264.     },
  8265.     "Media.Details.Base": {
  8266.       "extends": "Item.Details.Base",
  8267.       "id": "Media.Details.Base",
  8268.       "properties": {
  8269.         "fanart": {
  8270.           "default": "",
  8271.           "type": "string"
  8272.         },
  8273.         "thumbnail": {
  8274.           "default": "",
  8275.           "type": "string"
  8276.         }
  8277.       }
  8278.     },
  8279.     "Notifications.Item": {
  8280.       "id": "Notifications.Item",
  8281.       "type": [
  8282.         {
  8283.           "description": "An unknown item does not have any additional information.",
  8284.           "properties": {
  8285.             "type": {
  8286.               "$ref": "Notifications.Item.Type",
  8287.               "required": true
  8288.             }
  8289.           },
  8290.           "type": "object"
  8291.         },
  8292.         {
  8293.           "description": "An item known to the database has an identification.",
  8294.           "properties": {
  8295.             "id": {
  8296.               "$ref": "Library.Id",
  8297.               "required": true
  8298.             },
  8299.             "type": {
  8300.               "$ref": "Notifications.Item.Type",
  8301.               "required": true
  8302.             }
  8303.           },
  8304.           "type": "object"
  8305.         },
  8306.         {
  8307.           "description": "A movie item has a title and may have a release year.",
  8308.           "properties": {
  8309.             "title": {
  8310.               "required": true,
  8311.               "type": "string"
  8312.             },
  8313.             "type": {
  8314.               "$ref": "Notifications.Item.Type",
  8315.               "required": true
  8316.             },
  8317.             "year": {
  8318.               "default": 0,
  8319.               "type": "integer"
  8320.             }
  8321.           },
  8322.           "type": "object"
  8323.         },
  8324.         {
  8325.           "description": "A tv episode has a title and may have an episode number, season number and the title of the show it belongs to.",
  8326.           "properties": {
  8327.             "episode": {
  8328.               "default": 0,
  8329.               "type": "integer"
  8330.             },
  8331.             "season": {
  8332.               "default": 0,
  8333.               "type": "integer"
  8334.             },
  8335.             "showtitle": {
  8336.               "default": "",
  8337.               "type": "string"
  8338.             },
  8339.             "title": {
  8340.               "required": true,
  8341.               "type": "string"
  8342.             },
  8343.             "type": {
  8344.               "$ref": "Notifications.Item.Type",
  8345.               "required": true
  8346.             }
  8347.           },
  8348.           "type": "object"
  8349.         },
  8350.         {
  8351.           "description": "A music video has a title and may have an album and an artist.",
  8352.           "properties": {
  8353.             "album": {
  8354.               "default": "",
  8355.               "type": "string"
  8356.             },
  8357.             "artist": {
  8358.               "default": "",
  8359.               "type": "string"
  8360.             },
  8361.             "title": {
  8362.               "required": true,
  8363.               "type": "string"
  8364.             },
  8365.             "type": {
  8366.               "$ref": "Notifications.Item.Type",
  8367.               "required": true
  8368.             }
  8369.           },
  8370.           "type": "object"
  8371.         },
  8372.         {
  8373.           "description": "A song has a title and may have an album, an artist and a track number.",
  8374.           "properties": {
  8375.             "album": {
  8376.               "default": "",
  8377.               "type": "string"
  8378.             },
  8379.             "artist": {
  8380.               "default": "",
  8381.               "type": "string"
  8382.             },
  8383.             "title": {
  8384.               "required": true,
  8385.               "type": "string"
  8386.             },
  8387.             "track": {
  8388.               "default": 0,
  8389.               "type": "integer"
  8390.             },
  8391.             "type": {
  8392.               "$ref": "Notifications.Item.Type",
  8393.               "required": true
  8394.             }
  8395.           },
  8396.           "type": "object"
  8397.         },
  8398.         {
  8399.           "description": "A picture has a file path.",
  8400.           "properties": {
  8401.             "file": {
  8402.               "required": true,
  8403.               "type": "string"
  8404.             },
  8405.             "type": {
  8406.               "$ref": "Notifications.Item.Type",
  8407.               "required": true
  8408.             }
  8409.           },
  8410.           "type": "object"
  8411.         },
  8412.         {
  8413.           "description": "A PVR channel is either a radio or tv channel and has a title.",
  8414.           "properties": {
  8415.             "channeltype": {
  8416.               "$ref": "PVR.Channel.Type",
  8417.               "required": true
  8418.             },
  8419.             "id": {
  8420.               "$ref": "Library.Id",
  8421.               "required": true
  8422.             },
  8423.             "title": {
  8424.               "required": true,
  8425.               "type": "string"
  8426.             },
  8427.             "type": {
  8428.               "$ref": "Notifications.Item.Type",
  8429.               "required": true
  8430.             }
  8431.           },
  8432.           "type": "object"
  8433.         }
  8434.       ]
  8435.     },
  8436.     "Notifications.Item.Type": {
  8437.       "default": "unknown",
  8438.       "enums": [
  8439.         "unknown",
  8440.         "movie",
  8441.         "episode",
  8442.         "musicvideo",
  8443.         "song",
  8444.         "picture",
  8445.         "channel"
  8446.       ],
  8447.       "id": "Notifications.Item.Type",
  8448.       "type": "string"
  8449.     },
  8450.     "Optional.Boolean": {
  8451.       "default": null,
  8452.       "id": "Optional.Boolean",
  8453.       "type": [
  8454.         {
  8455.           "type": "null"
  8456.         },
  8457.         {
  8458.           "type": "boolean"
  8459.         }
  8460.       ]
  8461.     },
  8462.     "Optional.Integer": {
  8463.       "default": null,
  8464.       "id": "Optional.Integer",
  8465.       "type": [
  8466.         {
  8467.           "type": "null"
  8468.         },
  8469.         {
  8470.           "type": "integer"
  8471.         }
  8472.       ]
  8473.     },
  8474.     "Optional.Number": {
  8475.       "default": null,
  8476.       "id": "Optional.Number",
  8477.       "type": [
  8478.         {
  8479.           "type": "null"
  8480.         },
  8481.         {
  8482.           "type": "number"
  8483.         }
  8484.       ]
  8485.     },
  8486.     "Optional.String": {
  8487.       "default": null,
  8488.       "id": "Optional.String",
  8489.       "type": [
  8490.         {
  8491.           "type": "null"
  8492.         },
  8493.         {
  8494.           "type": "string"
  8495.         }
  8496.       ]
  8497.     },
  8498.     "PVR.Channel.Type": {
  8499.       "default": "tv",
  8500.       "enums": [
  8501.         "tv",
  8502.         "radio"
  8503.       ],
  8504.       "id": "PVR.Channel.Type",
  8505.       "type": "string"
  8506.     },
  8507.     "PVR.ChannelGroup.Id": {
  8508.       "default": null,
  8509.       "id": "PVR.ChannelGroup.Id",
  8510.       "type": [
  8511.         {
  8512.           "$ref": "Library.Id"
  8513.         },
  8514.         {
  8515.           "enums": [
  8516.             "alltv",
  8517.             "allradio"
  8518.           ],
  8519.           "type": "string"
  8520.         }
  8521.       ]
  8522.     },
  8523.     "PVR.Details.Broadcast": {
  8524.       "extends": "Item.Details.Base",
  8525.       "id": "PVR.Details.Broadcast",
  8526.       "properties": {
  8527.         "broadcastid": {
  8528.           "$ref": "Library.Id",
  8529.           "required": true
  8530.         },
  8531.         "endtime": {
  8532.           "default": "",
  8533.           "type": "string"
  8534.         },
  8535.         "episodename": {
  8536.           "default": "",
  8537.           "type": "string"
  8538.         },
  8539.         "episodenum": {
  8540.           "default": 0,
  8541.           "type": "integer"
  8542.         },
  8543.         "episodepart": {
  8544.           "default": 0,
  8545.           "type": "integer"
  8546.         },
  8547.         "firstaired": {
  8548.           "default": "",
  8549.           "type": "string"
  8550.         },
  8551.         "genre": {
  8552.           "default": "",
  8553.           "type": "string"
  8554.         },
  8555.         "hastimer": {
  8556.           "default": false,
  8557.           "type": "boolean"
  8558.         },
  8559.         "isactive": {
  8560.           "default": false,
  8561.           "type": "boolean"
  8562.         },
  8563.         "parentalrating": {
  8564.           "default": 0,
  8565.           "type": "integer"
  8566.         },
  8567.         "plot": {
  8568.           "default": "",
  8569.           "type": "string"
  8570.         },
  8571.         "plotoutline": {
  8572.           "default": "",
  8573.           "type": "string"
  8574.         },
  8575.         "progress": {
  8576.           "default": 0,
  8577.           "type": "integer"
  8578.         },
  8579.         "progresspercentage": {
  8580.           "default": 0,
  8581.           "type": "number"
  8582.         },
  8583.         "rating": {
  8584.           "default": 0,
  8585.           "type": "integer"
  8586.         },
  8587.         "runtime": {
  8588.           "default": 0,
  8589.           "type": "integer"
  8590.         },
  8591.         "starttime": {
  8592.           "default": "",
  8593.           "type": "string"
  8594.         },
  8595.         "thumbnail": {
  8596.           "default": "",
  8597.           "type": "string"
  8598.         },
  8599.         "title": {
  8600.           "default": "",
  8601.           "type": "string"
  8602.         },
  8603.         "wasactive": {
  8604.           "default": false,
  8605.           "type": "boolean"
  8606.         }
  8607.       }
  8608.     },
  8609.     "PVR.Details.Channel": {
  8610.       "extends": "Item.Details.Base",
  8611.       "id": "PVR.Details.Channel",
  8612.       "properties": {
  8613.         "broadcastnext": {
  8614.           "$ref": "PVR.Details.Broadcast",
  8615.           "default": null
  8616.         },
  8617.         "broadcastnow": {
  8618.           "$ref": "PVR.Details.Broadcast",
  8619.           "default": null
  8620.         },
  8621.         "channel": {
  8622.           "default": "",
  8623.           "type": "string"
  8624.         },
  8625.         "channelid": {
  8626.           "$ref": "Library.Id",
  8627.           "required": true
  8628.         },
  8629.         "channeltype": {
  8630.           "$ref": "PVR.Channel.Type",
  8631.           "default": "tv"
  8632.         },
  8633.         "hidden": {
  8634.           "default": false,
  8635.           "type": "boolean"
  8636.         },
  8637.         "lastplayed": {
  8638.           "default": "",
  8639.           "type": "string"
  8640.         },
  8641.         "locked": {
  8642.           "default": false,
  8643.           "type": "boolean"
  8644.         },
  8645.         "thumbnail": {
  8646.           "default": "",
  8647.           "type": "string"
  8648.         }
  8649.       }
  8650.     },
  8651.     "PVR.Details.ChannelGroup": {
  8652.       "extends": "Item.Details.Base",
  8653.       "id": "PVR.Details.ChannelGroup",
  8654.       "properties": {
  8655.         "channelgroupid": {
  8656.           "$ref": "Library.Id",
  8657.           "required": true
  8658.         },
  8659.         "channeltype": {
  8660.           "$ref": "PVR.Channel.Type",
  8661.           "required": true
  8662.         }
  8663.       }
  8664.     },
  8665.     "PVR.Details.ChannelGroup.Extended": {
  8666.       "extends": "PVR.Details.ChannelGroup",
  8667.       "id": "PVR.Details.ChannelGroup.Extended",
  8668.       "properties": {
  8669.         "channels": {
  8670.           "items": {
  8671.             "$ref": "PVR.Details.Channel"
  8672.           },
  8673.           "type": "array"
  8674.         },
  8675.         "limits": {
  8676.           "$ref": "List.LimitsReturned",
  8677.           "required": true
  8678.         }
  8679.       }
  8680.     },
  8681.     "PVR.Details.Recording": {
  8682.       "extends": "Item.Details.Base",
  8683.       "id": "PVR.Details.Recording",
  8684.       "properties": {
  8685.         "art": {
  8686.           "$ref": "Media.Artwork"
  8687.         },
  8688.         "channel": {
  8689.           "default": "",
  8690.           "type": "string"
  8691.         },
  8692.         "directory": {
  8693.           "default": "",
  8694.           "type": "string"
  8695.         },
  8696.         "endtime": {
  8697.           "default": "",
  8698.           "type": "string"
  8699.         },
  8700.         "file": {
  8701.           "default": "",
  8702.           "type": "string"
  8703.         },
  8704.         "genre": {
  8705.           "default": "",
  8706.           "type": "string"
  8707.         },
  8708.         "icon": {
  8709.           "default": "",
  8710.           "type": "string"
  8711.         },
  8712.         "lifetime": {
  8713.           "default": 0,
  8714.           "type": "integer"
  8715.         },
  8716.         "playcount": {
  8717.           "default": 0,
  8718.           "type": "integer"
  8719.         },
  8720.         "plot": {
  8721.           "default": "",
  8722.           "type": "string"
  8723.         },
  8724.         "plotoutline": {
  8725.           "default": "",
  8726.           "type": "string"
  8727.         },
  8728.         "recordingid": {
  8729.           "$ref": "Library.Id",
  8730.           "required": true
  8731.         },
  8732.         "resume": {
  8733.           "$ref": "Video.Resume"
  8734.         },
  8735.         "runtime": {
  8736.           "default": 0,
  8737.           "type": "integer"
  8738.         },
  8739.         "starttime": {
  8740.           "default": "",
  8741.           "type": "string"
  8742.         },
  8743.         "streamurl": {
  8744.           "default": "",
  8745.           "type": "string"
  8746.         },
  8747.         "title": {
  8748.           "default": "",
  8749.           "type": "string"
  8750.         }
  8751.       }
  8752.     },
  8753.     "PVR.Details.Timer": {
  8754.       "extends": "Item.Details.Base",
  8755.       "id": "PVR.Details.Timer",
  8756.       "properties": {
  8757.         "channelid": {
  8758.           "$ref": "Library.Id",
  8759.           "default": -1
  8760.         },
  8761.         "directory": {
  8762.           "default": "",
  8763.           "type": "string"
  8764.         },
  8765.         "endmargin": {
  8766.           "default": 0,
  8767.           "type": "integer"
  8768.         },
  8769.         "endtime": {
  8770.           "default": "",
  8771.           "type": "string"
  8772.         },
  8773.         "file": {
  8774.           "default": "",
  8775.           "type": "string"
  8776.         },
  8777.         "firstday": {
  8778.           "default": "",
  8779.           "type": "string"
  8780.         },
  8781.         "isradio": {
  8782.           "default": false,
  8783.           "type": "boolean"
  8784.         },
  8785.         "lifetime": {
  8786.           "default": 0,
  8787.           "type": "integer"
  8788.         },
  8789.         "priority": {
  8790.           "default": 0,
  8791.           "type": "integer"
  8792.         },
  8793.         "repeating": {
  8794.           "default": false,
  8795.           "type": "boolean"
  8796.         },
  8797.         "runtime": {
  8798.           "default": 0,
  8799.           "type": "integer"
  8800.         },
  8801.         "startmargin": {
  8802.           "default": 0,
  8803.           "type": "integer"
  8804.         },
  8805.         "starttime": {
  8806.           "default": "",
  8807.           "type": "string"
  8808.         },
  8809.         "state": {
  8810.           "$ref": "PVR.TimerState",
  8811.           "default": "unknown"
  8812.         },
  8813.         "summary": {
  8814.           "default": "",
  8815.           "type": "string"
  8816.         },
  8817.         "timerid": {
  8818.           "$ref": "Library.Id",
  8819.           "required": true
  8820.         },
  8821.         "title": {
  8822.           "default": "",
  8823.           "type": "string"
  8824.         },
  8825.         "weekdays": {
  8826.           "items": {
  8827.             "$ref": "Global.Weekday"
  8828.           },
  8829.           "type": "array",
  8830.           "uniqueItems": true
  8831.         }
  8832.       }
  8833.     },
  8834.     "PVR.Fields.Broadcast": {
  8835.       "extends": "Item.Fields.Base",
  8836.       "id": "PVR.Fields.Broadcast",
  8837.       "items": {
  8838.         "enums": [
  8839.           "title",
  8840.           "plot",
  8841.           "plotoutline",
  8842.           "starttime",
  8843.           "endtime",
  8844.           "runtime",
  8845.           "progress",
  8846.           "progresspercentage",
  8847.           "genre",
  8848.           "episodename",
  8849.           "episodenum",
  8850.           "episodepart",
  8851.           "firstaired",
  8852.           "hastimer",
  8853.           "isactive",
  8854.           "parentalrating",
  8855.           "wasactive",
  8856.           "thumbnail",
  8857.           "rating"
  8858.         ],
  8859.         "type": "string"
  8860.       }
  8861.     },
  8862.     "PVR.Fields.Channel": {
  8863.       "extends": "Item.Fields.Base",
  8864.       "id": "PVR.Fields.Channel",
  8865.       "items": {
  8866.         "enums": [
  8867.           "thumbnail",
  8868.           "channeltype",
  8869.           "hidden",
  8870.           "locked",
  8871.           "channel",
  8872.           "lastplayed",
  8873.           "broadcastnow",
  8874.           "broadcastnext"
  8875.         ],
  8876.         "type": "string"
  8877.       }
  8878.     },
  8879.     "PVR.Fields.Recording": {
  8880.       "extends": "Item.Fields.Base",
  8881.       "id": "PVR.Fields.Recording",
  8882.       "items": {
  8883.         "enums": [
  8884.           "title",
  8885.           "plot",
  8886.           "plotoutline",
  8887.           "genre",
  8888.           "playcount",
  8889.           "resume",
  8890.           "channel",
  8891.           "starttime",
  8892.           "endtime",
  8893.           "runtime",
  8894.           "lifetime",
  8895.           "icon",
  8896.           "art",
  8897.           "streamurl",
  8898.           "file",
  8899.           "directory"
  8900.         ],
  8901.         "type": "string"
  8902.       }
  8903.     },
  8904.     "PVR.Fields.Timer": {
  8905.       "extends": "Item.Fields.Base",
  8906.       "id": "PVR.Fields.Timer",
  8907.       "items": {
  8908.         "enums": [
  8909.           "title",
  8910.           "summary",
  8911.           "channelid",
  8912.           "isradio",
  8913.           "repeating",
  8914.           "starttime",
  8915.           "endtime",
  8916.           "runtime",
  8917.           "lifetime",
  8918.           "firstday",
  8919.           "weekdays",
  8920.           "priority",
  8921.           "startmargin",
  8922.           "endmargin",
  8923.           "state",
  8924.           "file",
  8925.           "directory"
  8926.         ],
  8927.         "type": "string"
  8928.       }
  8929.     },
  8930.     "PVR.Property.Name": {
  8931.       "default": "available",
  8932.       "enums": [
  8933.         "available",
  8934.         "recording",
  8935.         "scanning"
  8936.       ],
  8937.       "id": "PVR.Property.Name",
  8938.       "type": "string"
  8939.     },
  8940.     "PVR.Property.Value": {
  8941.       "id": "PVR.Property.Value",
  8942.       "properties": {
  8943.         "available": {
  8944.           "default": false,
  8945.           "type": "boolean"
  8946.         },
  8947.         "recording": {
  8948.           "default": false,
  8949.           "type": "boolean"
  8950.         },
  8951.         "scanning": {
  8952.           "default": false,
  8953.           "type": "boolean"
  8954.         }
  8955.       },
  8956.       "type": "object"
  8957.     },
  8958.     "PVR.TimerState": {
  8959.       "default": "unknown",
  8960.       "enums": [
  8961.         "unknown",
  8962.         "new",
  8963.         "scheduled",
  8964.         "recording",
  8965.         "completed",
  8966.         "aborted",
  8967.         "cancelled",
  8968.         "conflict_ok",
  8969.         "conflict_notok",
  8970.         "error"
  8971.       ],
  8972.       "id": "PVR.TimerState",
  8973.       "type": "string"
  8974.     },
  8975.     "Player.Audio.Stream": {
  8976.       "id": "Player.Audio.Stream",
  8977.       "properties": {
  8978.         "bitrate": {
  8979.           "required": true,
  8980.           "type": "integer"
  8981.         },
  8982.         "channels": {
  8983.           "required": true,
  8984.           "type": "integer"
  8985.         },
  8986.         "codec": {
  8987.           "required": true,
  8988.           "type": "string"
  8989.         },
  8990.         "index": {
  8991.           "minimum": 0,
  8992.           "required": true,
  8993.           "type": "integer"
  8994.         },
  8995.         "language": {
  8996.           "required": true,
  8997.           "type": "string"
  8998.         },
  8999.         "name": {
  9000.           "required": true,
  9001.           "type": "string"
  9002.         }
  9003.       },
  9004.       "type": "object"
  9005.     },
  9006.     "Player.Id": {
  9007.       "default": -1,
  9008.       "id": "Player.Id",
  9009.       "maximum": 2,
  9010.       "minimum": 0,
  9011.       "type": "integer"
  9012.     },
  9013.     "Player.Notifications.Data": {
  9014.       "id": "Player.Notifications.Data",
  9015.       "properties": {
  9016.         "item": {
  9017.           "$ref": "Notifications.Item",
  9018.           "required": true
  9019.         },
  9020.         "player": {
  9021.           "$ref": "Player.Notifications.Player",
  9022.           "required": true
  9023.         }
  9024.       },
  9025.       "type": "object"
  9026.     },
  9027.     "Player.Notifications.Player": {
  9028.       "id": "Player.Notifications.Player",
  9029.       "properties": {
  9030.         "playerid": {
  9031.           "$ref": "Player.Id",
  9032.           "required": true
  9033.         },
  9034.         "speed": {
  9035.           "default": 0,
  9036.           "type": "integer"
  9037.         }
  9038.       },
  9039.       "type": "object"
  9040.     },
  9041.     "Player.Notifications.Player.Seek": {
  9042.       "extends": "Player.Notifications.Player",
  9043.       "id": "Player.Notifications.Player.Seek",
  9044.       "properties": {
  9045.         "seekoffset": {
  9046.           "$ref": "Global.Time"
  9047.         },
  9048.         "time": {
  9049.           "$ref": "Global.Time"
  9050.         }
  9051.       }
  9052.     },
  9053.     "Player.Position.Percentage": {
  9054.       "default": 0,
  9055.       "id": "Player.Position.Percentage",
  9056.       "maximum": 100,
  9057.       "minimum": 0,
  9058.       "type": "number"
  9059.     },
  9060.     "Player.Position.Time": {
  9061.       "additionalProperties": false,
  9062.       "id": "Player.Position.Time",
  9063.       "properties": {
  9064.         "hours": {
  9065.           "default": 0,
  9066.           "maximum": 23,
  9067.           "minimum": 0,
  9068.           "type": "integer"
  9069.         },
  9070.         "milliseconds": {
  9071.           "default": 0,
  9072.           "maximum": 999,
  9073.           "minimum": 0,
  9074.           "type": "integer"
  9075.         },
  9076.         "minutes": {
  9077.           "default": 0,
  9078.           "maximum": 59,
  9079.           "minimum": 0,
  9080.           "type": "integer"
  9081.         },
  9082.         "seconds": {
  9083.           "default": 0,
  9084.           "maximum": 59,
  9085.           "minimum": 0,
  9086.           "type": "integer"
  9087.         }
  9088.       },
  9089.       "type": "object"
  9090.     },
  9091.     "Player.Property.Name": {
  9092.       "default": "type",
  9093.       "enums": [
  9094.         "type",
  9095.         "partymode",
  9096.         "speed",
  9097.         "time",
  9098.         "percentage",
  9099.         "totaltime",
  9100.         "playlistid",
  9101.         "position",
  9102.         "repeat",
  9103.         "shuffled",
  9104.         "canseek",
  9105.         "canchangespeed",
  9106.         "canmove",
  9107.         "canzoom",
  9108.         "canrotate",
  9109.         "canshuffle",
  9110.         "canrepeat",
  9111.         "currentaudiostream",
  9112.         "audiostreams",
  9113.         "subtitleenabled",
  9114.         "currentsubtitle",
  9115.         "subtitles",
  9116.         "live"
  9117.       ],
  9118.       "id": "Player.Property.Name",
  9119.       "type": "string"
  9120.     },
  9121.     "Player.Property.Value": {
  9122.       "id": "Player.Property.Value",
  9123.       "properties": {
  9124.         "audiostreams": {
  9125.           "items": {
  9126.             "$ref": "Player.Audio.Stream"
  9127.           },
  9128.           "type": "array"
  9129.         },
  9130.         "canchangespeed": {
  9131.           "default": false,
  9132.           "type": "boolean"
  9133.         },
  9134.         "canmove": {
  9135.           "default": false,
  9136.           "type": "boolean"
  9137.         },
  9138.         "canrepeat": {
  9139.           "default": false,
  9140.           "type": "boolean"
  9141.         },
  9142.         "canrotate": {
  9143.           "default": false,
  9144.           "type": "boolean"
  9145.         },
  9146.         "canseek": {
  9147.           "default": false,
  9148.           "type": "boolean"
  9149.         },
  9150.         "canshuffle": {
  9151.           "default": false,
  9152.           "type": "boolean"
  9153.         },
  9154.         "canzoom": {
  9155.           "default": false,
  9156.           "type": "boolean"
  9157.         },
  9158.         "currentaudiostream": {
  9159.           "$ref": "Player.Audio.Stream"
  9160.         },
  9161.         "currentsubtitle": {
  9162.           "$ref": "Player.Subtitle"
  9163.         },
  9164.         "live": {
  9165.           "default": false,
  9166.           "type": "boolean"
  9167.         },
  9168.         "partymode": {
  9169.           "default": false,
  9170.           "type": "boolean"
  9171.         },
  9172.         "percentage": {
  9173.           "$ref": "Player.Position.Percentage",
  9174.           "default": 0
  9175.         },
  9176.         "playlistid": {
  9177.           "$ref": "Playlist.Id",
  9178.           "default": -1
  9179.         },
  9180.         "position": {
  9181.           "$ref": "Playlist.Position",
  9182.           "default": -1
  9183.         },
  9184.         "repeat": {
  9185.           "$ref": "Player.Repeat",
  9186.           "default": "off"
  9187.         },
  9188.         "shuffled": {
  9189.           "default": false,
  9190.           "type": "boolean"
  9191.         },
  9192.         "speed": {
  9193.           "default": 0,
  9194.           "type": "integer"
  9195.         },
  9196.         "subtitleenabled": {
  9197.           "default": false,
  9198.           "type": "boolean"
  9199.         },
  9200.         "subtitles": {
  9201.           "items": {
  9202.             "$ref": "Player.Subtitle"
  9203.           },
  9204.           "type": "array"
  9205.         },
  9206.         "time": {
  9207.           "$ref": "Global.Time"
  9208.         },
  9209.         "totaltime": {
  9210.           "$ref": "Global.Time"
  9211.         },
  9212.         "type": {
  9213.           "$ref": "Player.Type",
  9214.           "default": "video"
  9215.         }
  9216.       },
  9217.       "type": "object"
  9218.     },
  9219.     "Player.Repeat": {
  9220.       "default": "off",
  9221.       "enums": [
  9222.         "off",
  9223.         "one",
  9224.         "all"
  9225.       ],
  9226.       "id": "Player.Repeat",
  9227.       "type": "string"
  9228.     },
  9229.     "Player.Speed": {
  9230.       "id": "Player.Speed",
  9231.       "properties": {
  9232.         "speed": {
  9233.           "default": 0,
  9234.           "type": "integer"
  9235.         }
  9236.       },
  9237.       "required": true,
  9238.       "type": "object"
  9239.     },
  9240.     "Player.Subtitle": {
  9241.       "id": "Player.Subtitle",
  9242.       "properties": {
  9243.         "index": {
  9244.           "minimum": 0,
  9245.           "required": true,
  9246.           "type": "integer"
  9247.         },
  9248.         "language": {
  9249.           "required": true,
  9250.           "type": "string"
  9251.         },
  9252.         "name": {
  9253.           "required": true,
  9254.           "type": "string"
  9255.         }
  9256.       },
  9257.       "type": "object"
  9258.     },
  9259.     "Player.Type": {
  9260.       "default": "video",
  9261.       "enums": [
  9262.         "video",
  9263.         "audio",
  9264.         "picture"
  9265.       ],
  9266.       "id": "Player.Type",
  9267.       "type": "string"
  9268.     },
  9269.     "Playlist.Id": {
  9270.       "default": -1,
  9271.       "id": "Playlist.Id",
  9272.       "maximum": 2,
  9273.       "minimum": 0,
  9274.       "type": "integer"
  9275.     },
  9276.     "Playlist.Item": {
  9277.       "id": "Playlist.Item",
  9278.       "type": [
  9279.         {
  9280.           "additionalProperties": false,
  9281.           "properties": {
  9282.             "file": {
  9283.               "description": "Path to a file (not a directory) to be added to the playlist",
  9284.               "required": true,
  9285.               "type": "string"
  9286.             }
  9287.           },
  9288.           "type": "object"
  9289.         },
  9290.         {
  9291.           "additionalProperties": false,
  9292.           "properties": {
  9293.             "directory": {
  9294.               "required": true,
  9295.               "type": "string"
  9296.             },
  9297.             "media": {
  9298.               "$ref": "Files.Media",
  9299.               "default": "files"
  9300.             },
  9301.             "recursive": {
  9302.               "default": false,
  9303.               "type": "boolean"
  9304.             }
  9305.           },
  9306.           "type": "object"
  9307.         },
  9308.         {
  9309.           "additionalProperties": false,
  9310.           "properties": {
  9311.             "movieid": {
  9312.               "$ref": "Library.Id",
  9313.               "required": true
  9314.             }
  9315.           },
  9316.           "type": "object"
  9317.         },
  9318.         {
  9319.           "additionalProperties": false,
  9320.           "properties": {
  9321.             "episodeid": {
  9322.               "$ref": "Library.Id",
  9323.               "required": true
  9324.             }
  9325.           },
  9326.           "type": "object"
  9327.         },
  9328.         {
  9329.           "additionalProperties": false,
  9330.           "properties": {
  9331.             "musicvideoid": {
  9332.               "$ref": "Library.Id",
  9333.               "required": true
  9334.             }
  9335.           },
  9336.           "type": "object"
  9337.         },
  9338.         {
  9339.           "additionalProperties": false,
  9340.           "properties": {
  9341.             "artistid": {
  9342.               "$ref": "Library.Id",
  9343.               "required": true
  9344.             }
  9345.           },
  9346.           "type": "object"
  9347.         },
  9348.         {
  9349.           "additionalProperties": false,
  9350.           "properties": {
  9351.             "albumid": {
  9352.               "$ref": "Library.Id",
  9353.               "required": true
  9354.             }
  9355.           },
  9356.           "type": "object"
  9357.         },
  9358.         {
  9359.           "additionalProperties": false,
  9360.           "properties": {
  9361.             "songid": {
  9362.               "$ref": "Library.Id",
  9363.               "required": true
  9364.             }
  9365.           },
  9366.           "type": "object"
  9367.         },
  9368.         {
  9369.           "additionalProperties": false,
  9370.           "properties": {
  9371.             "genreid": {
  9372.               "$ref": "Library.Id",
  9373.               "description": "Identification of a genre from the AudioLibrary",
  9374.               "required": true
  9375.             }
  9376.           },
  9377.           "type": "object"
  9378.         }
  9379.       ]
  9380.     },
  9381.     "Playlist.Position": {
  9382.       "default": -1,
  9383.       "id": "Playlist.Position",
  9384.       "minimum": 0,
  9385.       "type": "integer"
  9386.     },
  9387.     "Playlist.Property.Name": {
  9388.       "default": "type",
  9389.       "enums": [
  9390.         "type",
  9391.         "size"
  9392.       ],
  9393.       "id": "Playlist.Property.Name",
  9394.       "type": "string"
  9395.     },
  9396.     "Playlist.Property.Value": {
  9397.       "id": "Playlist.Property.Value",
  9398.       "properties": {
  9399.         "size": {
  9400.           "default": 0,
  9401.           "minimum": 0,
  9402.           "type": "integer"
  9403.         },
  9404.         "type": {
  9405.           "$ref": "Playlist.Type",
  9406.           "default": "unknown"
  9407.         }
  9408.       },
  9409.       "type": "object"
  9410.     },
  9411.     "Playlist.Type": {
  9412.       "default": "unknown",
  9413.       "enums": [
  9414.         "unknown",
  9415.         "video",
  9416.         "audio",
  9417.         "picture",
  9418.         "mixed"
  9419.       ],
  9420.       "id": "Playlist.Type",
  9421.       "type": "string"
  9422.     },
  9423.     "Profiles.Details.Profile": {
  9424.       "extends": "Item.Details.Base",
  9425.       "id": "Profiles.Details.Profile",
  9426.       "properties": {
  9427.         "lockmode": {
  9428.           "default": 0,
  9429.           "type": "integer"
  9430.         },
  9431.         "thumbnail": {
  9432.           "default": "",
  9433.           "type": "string"
  9434.         }
  9435.       }
  9436.     },
  9437.     "Profiles.Fields.Profile": {
  9438.       "extends": "Item.Fields.Base",
  9439.       "id": "Profiles.Fields.Profile",
  9440.       "items": {
  9441.         "enums": [
  9442.           "thumbnail",
  9443.           "lockmode"
  9444.         ],
  9445.         "type": "string"
  9446.       }
  9447.     },
  9448.     "Profiles.Password": {
  9449.       "id": "Profiles.Password",
  9450.       "properties": {
  9451.         "encryption": {
  9452.           "default": "md5",
  9453.           "description": "Password Encryption",
  9454.           "enums": [
  9455.             "none",
  9456.             "md5"
  9457.           ],
  9458.           "type": "string"
  9459.         },
  9460.         "value": {
  9461.           "description": "Password",
  9462.           "required": true,
  9463.           "type": "string"
  9464.         }
  9465.       },
  9466.       "type": "object"
  9467.     },
  9468.     "Setting.Details.Base": {
  9469.       "id": "Setting.Details.Base",
  9470.       "properties": {
  9471.         "help": {
  9472.           "default": "",
  9473.           "type": "string"
  9474.         },
  9475.         "id": {
  9476.           "minLength": 1,
  9477.           "required": true,
  9478.           "type": "string"
  9479.         },
  9480.         "label": {
  9481.           "required": true,
  9482.           "type": "string"
  9483.         }
  9484.       },
  9485.       "type": "object"
  9486.     },
  9487.     "Setting.Details.Category": {
  9488.       "additionalProperties": false,
  9489.       "extends": "Setting.Details.Base",
  9490.       "id": "Setting.Details.Category",
  9491.       "properties": {
  9492.         "groups": {
  9493.           "items": {
  9494.             "$ref": "Setting.Details.Group"
  9495.           },
  9496.           "minItems": 1,
  9497.           "type": "array",
  9498.           "uniqueItems": true
  9499.         }
  9500.       }
  9501.     },
  9502.     "Setting.Details.Control": {
  9503.       "id": "Setting.Details.Control",
  9504.       "type": [
  9505.         {
  9506.           "$ref": "Setting.Details.ControlCheckmark"
  9507.         },
  9508.         {
  9509.           "$ref": "Setting.Details.ControlSpinner"
  9510.         },
  9511.         {
  9512.           "$ref": "Setting.Details.ControlEdit"
  9513.         },
  9514.         {
  9515.           "$ref": "Setting.Details.ControlButton"
  9516.         },
  9517.         {
  9518.           "$ref": "Setting.Details.ControlList"
  9519.         },
  9520.         {
  9521.           "$ref": "Setting.Details.ControlSlider"
  9522.         },
  9523.         {
  9524.           "$ref": "Setting.Details.ControlRange"
  9525.         }
  9526.       ]
  9527.     },
  9528.     "Setting.Details.ControlBase": {
  9529.       "id": "Setting.Details.ControlBase",
  9530.       "properties": {
  9531.         "delayed": {
  9532.           "required": true,
  9533.           "type": "boolean"
  9534.         },
  9535.         "format": {
  9536.           "required": true,
  9537.           "type": "string"
  9538.         },
  9539.         "type": {
  9540.           "required": true,
  9541.           "type": "string"
  9542.         }
  9543.       },
  9544.       "type": "object"
  9545.     },
  9546.     "Setting.Details.ControlButton": {
  9547.       "extends": "Setting.Details.ControlHeading",
  9548.       "id": "Setting.Details.ControlButton",
  9549.       "properties": {
  9550.         "type": {
  9551.           "enums": [
  9552.             "button"
  9553.           ],
  9554.           "required": true,
  9555.           "type": "string"
  9556.         }
  9557.       }
  9558.     },
  9559.     "Setting.Details.ControlCheckmark": {
  9560.       "extends": "Setting.Details.ControlBase",
  9561.       "id": "Setting.Details.ControlCheckmark",
  9562.       "properties": {
  9563.         "format": {
  9564.           "enums": [
  9565.             "boolean"
  9566.           ],
  9567.           "required": true,
  9568.           "type": "string"
  9569.         },
  9570.         "type": {
  9571.           "enums": [
  9572.             "toggle"
  9573.           ],
  9574.           "required": true,
  9575.           "type": "string"
  9576.         }
  9577.       }
  9578.     },
  9579.     "Setting.Details.ControlEdit": {
  9580.       "extends": "Setting.Details.ControlHeading",
  9581.       "id": "Setting.Details.ControlEdit",
  9582.       "properties": {
  9583.         "hidden": {
  9584.           "required": true,
  9585.           "type": "boolean"
  9586.         },
  9587.         "type": {
  9588.           "enums": [
  9589.             "edit"
  9590.           ],
  9591.           "required": true,
  9592.           "type": "string"
  9593.         },
  9594.         "verifynewvalue": {
  9595.           "required": true,
  9596.           "type": "boolean"
  9597.         }
  9598.       }
  9599.     },
  9600.     "Setting.Details.ControlHeading": {
  9601.       "extends": "Setting.Details.ControlBase",
  9602.       "id": "Setting.Details.ControlHeading",
  9603.       "properties": {
  9604.         "heading": {
  9605.           "default": "",
  9606.           "type": "string"
  9607.         }
  9608.       }
  9609.     },
  9610.     "Setting.Details.ControlList": {
  9611.       "extends": "Setting.Details.ControlHeading",
  9612.       "id": "Setting.Details.ControlList",
  9613.       "properties": {
  9614.         "multiselect": {
  9615.           "required": true,
  9616.           "type": "boolean"
  9617.         },
  9618.         "type": {
  9619.           "enums": [
  9620.             "list"
  9621.           ],
  9622.           "required": true,
  9623.           "type": "string"
  9624.         }
  9625.       }
  9626.     },
  9627.     "Setting.Details.ControlRange": {
  9628.       "extends": "Setting.Details.ControlBase",
  9629.       "id": "Setting.Details.ControlRange",
  9630.       "properties": {
  9631.         "formatlabel": {
  9632.           "required": true,
  9633.           "type": "string"
  9634.         },
  9635.         "formatvalue": {
  9636.           "required": true,
  9637.           "type": "string"
  9638.         },
  9639.         "type": {
  9640.           "enums": [
  9641.             "range"
  9642.           ],
  9643.           "required": true,
  9644.           "type": "string"
  9645.         }
  9646.       }
  9647.     },
  9648.     "Setting.Details.ControlSlider": {
  9649.       "extends": "Setting.Details.ControlHeading",
  9650.       "id": "Setting.Details.ControlSlider",
  9651.       "properties": {
  9652.         "formatlabel": {
  9653.           "required": true,
  9654.           "type": "string"
  9655.         },
  9656.         "popup": {
  9657.           "required": true,
  9658.           "type": "boolean"
  9659.         },
  9660.         "type": {
  9661.           "enums": [
  9662.             "slider"
  9663.           ],
  9664.           "required": true,
  9665.           "type": "string"
  9666.         }
  9667.       }
  9668.     },
  9669.     "Setting.Details.ControlSpinner": {
  9670.       "extends": "Setting.Details.ControlBase",
  9671.       "id": "Setting.Details.ControlSpinner",
  9672.       "properties": {
  9673.         "formatlabel": {
  9674.           "default": "",
  9675.           "type": "string"
  9676.         },
  9677.         "minimumlabel": {
  9678.           "default": "",
  9679.           "type": "string"
  9680.         },
  9681.         "type": {
  9682.           "enums": [
  9683.             "spinner"
  9684.           ],
  9685.           "required": true,
  9686.           "type": "string"
  9687.         }
  9688.       }
  9689.     },
  9690.     "Setting.Details.Group": {
  9691.       "additionalProperties": false,
  9692.       "id": "Setting.Details.Group",
  9693.       "properties": {
  9694.         "id": {
  9695.           "minLength": 1,
  9696.           "required": true,
  9697.           "type": "string"
  9698.         },
  9699.         "settings": {
  9700.           "items": {
  9701.             "$ref": "Setting.Details.Setting"
  9702.           },
  9703.           "minItems": 1,
  9704.           "type": "array",
  9705.           "uniqueItems": true
  9706.         }
  9707.       },
  9708.       "type": "object"
  9709.     },
  9710.     "Setting.Details.Section": {
  9711.       "additionalProperties": false,
  9712.       "extends": "Setting.Details.Base",
  9713.       "id": "Setting.Details.Section",
  9714.       "properties": {
  9715.         "categories": {
  9716.           "items": {
  9717.             "$ref": "Setting.Details.Category"
  9718.           },
  9719.           "minItems": 1,
  9720.           "type": "array",
  9721.           "uniqueItems": true
  9722.         }
  9723.       }
  9724.     },
  9725.     "Setting.Details.Setting": {
  9726.       "id": "Setting.Details.Setting",
  9727.       "type": [
  9728.         {
  9729.           "$ref": "Setting.Details.SettingBool"
  9730.         },
  9731.         {
  9732.           "$ref": "Setting.Details.SettingInt"
  9733.         },
  9734.         {
  9735.           "$ref": "Setting.Details.SettingNumber"
  9736.         },
  9737.         {
  9738.           "$ref": "Setting.Details.SettingString"
  9739.         },
  9740.         {
  9741.           "$ref": "Setting.Details.SettingAction"
  9742.         },
  9743.         {
  9744.           "$ref": "Setting.Details.SettingList"
  9745.         },
  9746.         {
  9747.           "$ref": "Setting.Details.SettingPath"
  9748.         },
  9749.         {
  9750.           "$ref": "Setting.Details.SettingAddon"
  9751.         }
  9752.       ]
  9753.     },
  9754.     "Setting.Details.SettingAction": {
  9755.       "additionalProperties": false,
  9756.       "extends": "Setting.Details.SettingBase",
  9757.       "id": "Setting.Details.SettingAction"
  9758.     },
  9759.     "Setting.Details.SettingAddon": {
  9760.       "additionalProperties": false,
  9761.       "extends": "Setting.Details.SettingString",
  9762.       "id": "Setting.Details.SettingAddon",
  9763.       "properties": {
  9764.         "addontype": {
  9765.           "$ref": "Addon.Types",
  9766.           "required": true
  9767.         }
  9768.       }
  9769.     },
  9770.     "Setting.Details.SettingBase": {
  9771.       "additionalProperties": false,
  9772.       "extends": "Setting.Details.Base",
  9773.       "id": "Setting.Details.SettingBase",
  9774.       "properties": {
  9775.         "control": {
  9776.           "$ref": "Setting.Details.Control"
  9777.         },
  9778.         "enabled": {
  9779.           "required": true,
  9780.           "type": "boolean"
  9781.         },
  9782.         "level": {
  9783.           "required": true,
  9784.           "type": "integer"
  9785.         },
  9786.         "parent": {
  9787.           "default": "",
  9788.           "type": "string"
  9789.         },
  9790.         "type": {
  9791.           "$ref": "Setting.Type",
  9792.           "required": true
  9793.         }
  9794.       }
  9795.     },
  9796.     "Setting.Details.SettingBool": {
  9797.       "additionalProperties": false,
  9798.       "extends": "Setting.Details.SettingBase",
  9799.       "id": "Setting.Details.SettingBool",
  9800.       "properties": {
  9801.         "default": {
  9802.           "required": true,
  9803.           "type": "boolean"
  9804.         },
  9805.         "value": {
  9806.           "required": true,
  9807.           "type": "boolean"
  9808.         }
  9809.       }
  9810.     },
  9811.     "Setting.Details.SettingInt": {
  9812.       "additionalProperties": false,
  9813.       "extends": "Setting.Details.SettingBase",
  9814.       "id": "Setting.Details.SettingInt",
  9815.       "properties": {
  9816.         "default": {
  9817.           "required": true,
  9818.           "type": "integer"
  9819.         },
  9820.         "maximum": {
  9821.           "default": 0,
  9822.           "type": "integer"
  9823.         },
  9824.         "minimum": {
  9825.           "default": 0,
  9826.           "type": "integer"
  9827.         },
  9828.         "options": {
  9829.           "items": {
  9830.             "properties": {
  9831.               "label": {
  9832.                 "required": true,
  9833.                 "type": "string"
  9834.               },
  9835.               "value": {
  9836.                 "required": true,
  9837.                 "type": "integer"
  9838.               }
  9839.             },
  9840.             "type": "object"
  9841.           },
  9842.           "type": "array"
  9843.         },
  9844.         "step": {
  9845.           "default": 0,
  9846.           "type": "integer"
  9847.         },
  9848.         "value": {
  9849.           "required": true,
  9850.           "type": "integer"
  9851.         }
  9852.       }
  9853.     },
  9854.     "Setting.Details.SettingList": {
  9855.       "additionalProperties": false,
  9856.       "extends": "Setting.Details.SettingBase",
  9857.       "id": "Setting.Details.SettingList",
  9858.       "properties": {
  9859.         "default": {
  9860.           "$ref": "Setting.Value.List",
  9861.           "required": true
  9862.         },
  9863.         "definition": {
  9864.           "$ref": "Setting.Details.Setting",
  9865.           "required": true
  9866.         },
  9867.         "delimiter": {
  9868.           "required": true,
  9869.           "type": "string"
  9870.         },
  9871.         "elementtype": {
  9872.           "$ref": "Setting.Type",
  9873.           "required": true
  9874.         },
  9875.         "maximumitems": {
  9876.           "default": 0,
  9877.           "type": "integer"
  9878.         },
  9879.         "minimumitems": {
  9880.           "default": 0,
  9881.           "type": "integer"
  9882.         },
  9883.         "value": {
  9884.           "$ref": "Setting.Value.List",
  9885.           "required": true
  9886.         }
  9887.       }
  9888.     },
  9889.     "Setting.Details.SettingNumber": {
  9890.       "additionalProperties": false,
  9891.       "extends": "Setting.Details.SettingBase",
  9892.       "id": "Setting.Details.SettingNumber",
  9893.       "properties": {
  9894.         "default": {
  9895.           "required": true,
  9896.           "type": "number"
  9897.         },
  9898.         "maximum": {
  9899.           "required": true,
  9900.           "type": "number"
  9901.         },
  9902.         "minimum": {
  9903.           "required": true,
  9904.           "type": "number"
  9905.         },
  9906.         "step": {
  9907.           "required": true,
  9908.           "type": "number"
  9909.         },
  9910.         "value": {
  9911.           "required": true,
  9912.           "type": "number"
  9913.         }
  9914.       }
  9915.     },
  9916.     "Setting.Details.SettingPath": {
  9917.       "additionalProperties": false,
  9918.       "extends": "Setting.Details.SettingString",
  9919.       "id": "Setting.Details.SettingPath",
  9920.       "properties": {
  9921.         "sources": {
  9922.           "items": {
  9923.             "type": "string"
  9924.           },
  9925.           "type": "array"
  9926.         },
  9927.         "writable": {
  9928.           "required": true,
  9929.           "type": "boolean"
  9930.         }
  9931.       }
  9932.     },
  9933.     "Setting.Details.SettingString": {
  9934.       "extends": "Setting.Details.SettingBase",
  9935.       "id": "Setting.Details.SettingString",
  9936.       "properties": {
  9937.         "allowempty": {
  9938.           "required": true,
  9939.           "type": "boolean"
  9940.         },
  9941.         "default": {
  9942.           "required": true,
  9943.           "type": "string"
  9944.         },
  9945.         "options": {
  9946.           "items": {
  9947.             "properties": {
  9948.               "label": {
  9949.                 "required": true,
  9950.                 "type": "string"
  9951.               },
  9952.               "value": {
  9953.                 "required": true,
  9954.                 "type": "string"
  9955.               }
  9956.             },
  9957.             "type": "object"
  9958.           },
  9959.           "type": "array"
  9960.         },
  9961.         "value": {
  9962.           "required": true,
  9963.           "type": "string"
  9964.         }
  9965.       }
  9966.     },
  9967.     "Setting.Level": {
  9968.       "default": "basic",
  9969.       "enums": [
  9970.         "basic",
  9971.         "standard",
  9972.         "advanced",
  9973.         "expert"
  9974.       ],
  9975.       "id": "Setting.Level",
  9976.       "type": "string"
  9977.     },
  9978.     "Setting.Type": {
  9979.       "default": "boolean",
  9980.       "enums": [
  9981.         "boolean",
  9982.         "integer",
  9983.         "number",
  9984.         "string",
  9985.         "action",
  9986.         "list",
  9987.         "path",
  9988.         "addon"
  9989.       ],
  9990.       "id": "Setting.Type",
  9991.       "type": "string"
  9992.     },
  9993.     "Setting.Value": {
  9994.       "default": null,
  9995.       "id": "Setting.Value",
  9996.       "type": [
  9997.         {
  9998.           "type": "boolean"
  9999.         },
  10000.         {
  10001.           "type": "integer"
  10002.         },
  10003.         {
  10004.           "type": "number"
  10005.         },
  10006.         {
  10007.           "type": "string"
  10008.         }
  10009.       ]
  10010.     },
  10011.     "Setting.Value.Extended": {
  10012.       "default": null,
  10013.       "id": "Setting.Value.Extended",
  10014.       "type": [
  10015.         {
  10016.           "type": "boolean"
  10017.         },
  10018.         {
  10019.           "type": "integer"
  10020.         },
  10021.         {
  10022.           "type": "number"
  10023.         },
  10024.         {
  10025.           "type": "string"
  10026.         },
  10027.         {
  10028.           "$ref": "Setting.Value.List"
  10029.         }
  10030.       ]
  10031.     },
  10032.     "Setting.Value.List": {
  10033.       "id": "Setting.Value.List",
  10034.       "items": {
  10035.         "$ref": "Setting.Value"
  10036.       },
  10037.       "type": "array"
  10038.     },
  10039.     "System.Property.Name": {
  10040.       "default": "canshutdown",
  10041.       "enums": [
  10042.         "canshutdown",
  10043.         "cansuspend",
  10044.         "canhibernate",
  10045.         "canreboot"
  10046.       ],
  10047.       "id": "System.Property.Name",
  10048.       "type": "string"
  10049.     },
  10050.     "System.Property.Value": {
  10051.       "id": "System.Property.Value",
  10052.       "properties": {
  10053.         "canhibernate": {
  10054.           "default": false,
  10055.           "type": "boolean"
  10056.         },
  10057.         "canreboot": {
  10058.           "default": false,
  10059.           "type": "boolean"
  10060.         },
  10061.         "canshutdown": {
  10062.           "default": false,
  10063.           "type": "boolean"
  10064.         },
  10065.         "cansuspend": {
  10066.           "default": false,
  10067.           "type": "boolean"
  10068.         }
  10069.       },
  10070.       "type": "object"
  10071.     },
  10072.     "Textures.Details.Size": {
  10073.       "id": "Textures.Details.Size",
  10074.       "properties": {
  10075.         "height": {
  10076.           "default": 0,
  10077.           "description": "Height of texture",
  10078.           "type": "integer"
  10079.         },
  10080.         "lastused": {
  10081.           "default": "",
  10082.           "description": "Date of last use",
  10083.           "type": "string"
  10084.         },
  10085.         "size": {
  10086.           "default": 0,
  10087.           "description": "Size of the texture (1 == largest)",
  10088.           "type": "integer"
  10089.         },
  10090.         "usecount": {
  10091.           "default": 0,
  10092.           "description": "Number of uses",
  10093.           "type": "integer"
  10094.         },
  10095.         "width": {
  10096.           "default": 0,
  10097.           "description": "Width of texture",
  10098.           "type": "integer"
  10099.         }
  10100.       },
  10101.       "type": "object"
  10102.     },
  10103.     "Textures.Details.Texture": {
  10104.       "id": "Textures.Details.Texture",
  10105.       "properties": {
  10106.         "cachedurl": {
  10107.           "default": "",
  10108.           "description": "Cached URL on disk",
  10109.           "type": "string"
  10110.         },
  10111.         "imagehash": {
  10112.           "default": "",
  10113.           "description": "Hash of image",
  10114.           "type": "string"
  10115.         },
  10116.         "lasthashcheck": {
  10117.           "default": "",
  10118.           "description": "Last time source was checked for changes",
  10119.           "type": "string"
  10120.         },
  10121.         "sizes": {
  10122.           "items": {
  10123.             "$ref": "Textures.Details.Size"
  10124.           },
  10125.           "type": "array"
  10126.         },
  10127.         "textureid": {
  10128.           "$ref": "Library.Id",
  10129.           "default": -1
  10130.         },
  10131.         "url": {
  10132.           "default": "",
  10133.           "description": "Original source URL",
  10134.           "type": "string"
  10135.         }
  10136.       },
  10137.       "type": "object"
  10138.     },
  10139.     "Textures.Fields.Texture": {
  10140.       "extends": "Item.Fields.Base",
  10141.       "id": "Textures.Fields.Texture",
  10142.       "items": {
  10143.         "enums": [
  10144.           "url",
  10145.           "cachedurl",
  10146.           "lasthashcheck",
  10147.           "imagehash",
  10148.           "sizes"
  10149.         ],
  10150.         "type": "string"
  10151.       }
  10152.     },
  10153.     "Video.Cast": {
  10154.       "id": "Video.Cast",
  10155.       "items": {
  10156.         "additionalProperties": false,
  10157.         "properties": {
  10158.           "name": {
  10159.             "required": true,
  10160.             "type": "string"
  10161.           },
  10162.           "order": {
  10163.             "required": true,
  10164.             "type": "integer"
  10165.           },
  10166.           "role": {
  10167.             "required": true,
  10168.             "type": "string"
  10169.           },
  10170.           "thumbnail": {
  10171.             "default": "",
  10172.             "type": "string"
  10173.           }
  10174.         },
  10175.         "type": "object"
  10176.       },
  10177.       "type": "array"
  10178.     },
  10179.     "Video.Details.Base": {
  10180.       "extends": "Media.Details.Base",
  10181.       "id": "Video.Details.Base",
  10182.       "properties": {
  10183.         "art": {
  10184.           "$ref": "Media.Artwork"
  10185.         },
  10186.         "playcount": {
  10187.           "default": 0,
  10188.           "type": "integer"
  10189.         }
  10190.       }
  10191.     },
  10192.     "Video.Details.Episode": {
  10193.       "extends": "Video.Details.File",
  10194.       "id": "Video.Details.Episode",
  10195.       "properties": {
  10196.         "cast": {
  10197.           "$ref": "Video.Cast"
  10198.         },
  10199.         "episode": {
  10200.           "default": 0,
  10201.           "type": "integer"
  10202.         },
  10203.         "episodeid": {
  10204.           "$ref": "Library.Id",
  10205.           "required": true
  10206.         },
  10207.         "firstaired": {
  10208.           "default": "",
  10209.           "type": "string"
  10210.         },
  10211.         "originaltitle": {
  10212.           "default": "",
  10213.           "type": "string"
  10214.         },
  10215.         "productioncode": {
  10216.           "default": "",
  10217.           "type": "string"
  10218.         },
  10219.         "rating": {
  10220.           "default": 0,
  10221.           "type": "number"
  10222.         },
  10223.         "season": {
  10224.           "default": 0,
  10225.           "type": "integer"
  10226.         },
  10227.         "showtitle": {
  10228.           "default": "",
  10229.           "type": "string"
  10230.         },
  10231.         "specialsortepisode": {
  10232.           "default": 0,
  10233.           "type": "integer"
  10234.         },
  10235.         "specialsortseason": {
  10236.           "default": 0,
  10237.           "type": "integer"
  10238.         },
  10239.         "tvshowid": {
  10240.           "$ref": "Library.Id",
  10241.           "default": -1
  10242.         },
  10243.         "uniqueid": {
  10244.           "additionalProperties": {
  10245.             "default": "",
  10246.             "minLength": 1,
  10247.             "type": "string"
  10248.           },
  10249.           "type": "object"
  10250.         },
  10251.         "votes": {
  10252.           "default": "",
  10253.           "type": "string"
  10254.         },
  10255.         "writer": {
  10256.           "$ref": "Array.String"
  10257.         }
  10258.       }
  10259.     },
  10260.     "Video.Details.File": {
  10261.       "extends": "Video.Details.Item",
  10262.       "id": "Video.Details.File",
  10263.       "properties": {
  10264.         "director": {
  10265.           "$ref": "Array.String"
  10266.         },
  10267.         "resume": {
  10268.           "$ref": "Video.Resume"
  10269.         },
  10270.         "runtime": {
  10271.           "default": 0,
  10272.           "description": "Runtime in seconds",
  10273.           "type": "integer"
  10274.         },
  10275.         "streamdetails": {
  10276.           "$ref": "Video.Streams"
  10277.         }
  10278.       }
  10279.     },
  10280.     "Video.Details.Item": {
  10281.       "extends": "Video.Details.Media",
  10282.       "id": "Video.Details.Item",
  10283.       "properties": {
  10284.         "dateadded": {
  10285.           "default": "",
  10286.           "type": "string"
  10287.         },
  10288.         "file": {
  10289.           "default": "",
  10290.           "type": "string"
  10291.         },
  10292.         "lastplayed": {
  10293.           "default": "",
  10294.           "type": "string"
  10295.         },
  10296.         "plot": {
  10297.           "default": "",
  10298.           "type": "string"
  10299.         }
  10300.       }
  10301.     },
  10302.     "Video.Details.Media": {
  10303.       "extends": "Video.Details.Base",
  10304.       "id": "Video.Details.Media",
  10305.       "properties": {
  10306.         "title": {
  10307.           "default": "",
  10308.           "type": "string"
  10309.         }
  10310.       }
  10311.     },
  10312.     "Video.Details.Movie": {
  10313.       "extends": "Video.Details.File",
  10314.       "id": "Video.Details.Movie",
  10315.       "properties": {
  10316.         "cast": {
  10317.           "$ref": "Video.Cast"
  10318.         },
  10319.         "country": {
  10320.           "$ref": "Array.String"
  10321.         },
  10322.         "genre": {
  10323.           "$ref": "Array.String"
  10324.         },
  10325.         "imdbnumber": {
  10326.           "default": "",
  10327.           "type": "string"
  10328.         },
  10329.         "movieid": {
  10330.           "$ref": "Library.Id",
  10331.           "required": true
  10332.         },
  10333.         "mpaa": {
  10334.           "default": "",
  10335.           "type": "string"
  10336.         },
  10337.         "originaltitle": {
  10338.           "default": "",
  10339.           "type": "string"
  10340.         },
  10341.         "plotoutline": {
  10342.           "default": "",
  10343.           "type": "string"
  10344.         },
  10345.         "rating": {
  10346.           "default": 0,
  10347.           "type": "number"
  10348.         },
  10349.         "set": {
  10350.           "default": "",
  10351.           "type": "string"
  10352.         },
  10353.         "setid": {
  10354.           "$ref": "Library.Id",
  10355.           "default": -1
  10356.         },
  10357.         "showlink": {
  10358.           "$ref": "Array.String"
  10359.         },
  10360.         "sorttitle": {
  10361.           "default": "",
  10362.           "type": "string"
  10363.         },
  10364.         "studio": {
  10365.           "$ref": "Array.String"
  10366.         },
  10367.         "tag": {
  10368.           "$ref": "Array.String"
  10369.         },
  10370.         "tagline": {
  10371.           "default": "",
  10372.           "type": "string"
  10373.         },
  10374.         "top250": {
  10375.           "default": 0,
  10376.           "type": "integer"
  10377.         },
  10378.         "trailer": {
  10379.           "default": "",
  10380.           "type": "string"
  10381.         },
  10382.         "votes": {
  10383.           "default": "",
  10384.           "type": "string"
  10385.         },
  10386.         "writer": {
  10387.           "$ref": "Array.String"
  10388.         },
  10389.         "year": {
  10390.           "default": 0,
  10391.           "type": "integer"
  10392.         }
  10393.       }
  10394.     },
  10395.     "Video.Details.MovieSet": {
  10396.       "extends": "Video.Details.Media",
  10397.       "id": "Video.Details.MovieSet",
  10398.       "properties": {
  10399.         "setid": {
  10400.           "$ref": "Library.Id",
  10401.           "required": true
  10402.         }
  10403.       }
  10404.     },
  10405.     "Video.Details.MovieSet.Extended": {
  10406.       "extends": "Video.Details.MovieSet",
  10407.       "id": "Video.Details.MovieSet.Extended",
  10408.       "properties": {
  10409.         "limits": {
  10410.           "$ref": "List.LimitsReturned",
  10411.           "required": true
  10412.         },
  10413.         "movies": {
  10414.           "items": {
  10415.             "$ref": "Video.Details.Movie"
  10416.           },
  10417.           "type": "array"
  10418.         }
  10419.       }
  10420.     },
  10421.     "Video.Details.MusicVideo": {
  10422.       "extends": "Video.Details.File",
  10423.       "id": "Video.Details.MusicVideo",
  10424.       "properties": {
  10425.         "album": {
  10426.           "default": "",
  10427.           "type": "string"
  10428.         },
  10429.         "artist": {
  10430.           "$ref": "Array.String"
  10431.         },
  10432.         "genre": {
  10433.           "$ref": "Array.String"
  10434.         },
  10435.         "musicvideoid": {
  10436.           "$ref": "Library.Id",
  10437.           "required": true
  10438.         },
  10439.         "studio": {
  10440.           "$ref": "Array.String"
  10441.         },
  10442.         "tag": {
  10443.           "$ref": "Array.String"
  10444.         },
  10445.         "track": {
  10446.           "default": 0,
  10447.           "type": "integer"
  10448.         },
  10449.         "year": {
  10450.           "default": 0,
  10451.           "type": "integer"
  10452.         }
  10453.       }
  10454.     },
  10455.     "Video.Details.Season": {
  10456.       "extends": "Video.Details.Base",
  10457.       "id": "Video.Details.Season",
  10458.       "properties": {
  10459.         "episode": {
  10460.           "default": 0,
  10461.           "type": "integer"
  10462.         },
  10463.         "season": {
  10464.           "required": true,
  10465.           "type": "integer"
  10466.         },
  10467.         "seasonid": {
  10468.           "$ref": "Library.Id",
  10469.           "required": true
  10470.         },
  10471.         "showtitle": {
  10472.           "default": "",
  10473.           "type": "string"
  10474.         },
  10475.         "tvshowid": {
  10476.           "$ref": "Library.Id",
  10477.           "default": -1
  10478.         },
  10479.         "watchedepisodes": {
  10480.           "default": 0,
  10481.           "type": "integer"
  10482.         }
  10483.       }
  10484.     },
  10485.     "Video.Details.TVShow": {
  10486.       "extends": "Video.Details.Item",
  10487.       "id": "Video.Details.TVShow",
  10488.       "properties": {
  10489.         "cast": {
  10490.           "$ref": "Video.Cast"
  10491.         },
  10492.         "episode": {
  10493.           "default": 0,
  10494.           "type": "integer"
  10495.         },
  10496.         "episodeguide": {
  10497.           "default": "",
  10498.           "type": "string"
  10499.         },
  10500.         "genre": {
  10501.           "$ref": "Array.String"
  10502.         },
  10503.         "imdbnumber": {
  10504.           "default": "",
  10505.           "type": "string"
  10506.         },
  10507.         "mpaa": {
  10508.           "default": "",
  10509.           "type": "string"
  10510.         },
  10511.         "originaltitle": {
  10512.           "default": "",
  10513.           "type": "string"
  10514.         },
  10515.         "premiered": {
  10516.           "default": "",
  10517.           "type": "string"
  10518.         },
  10519.         "rating": {
  10520.           "default": 0,
  10521.           "type": "number"
  10522.         },
  10523.         "season": {
  10524.           "default": 0,
  10525.           "type": "integer"
  10526.         },
  10527.         "sorttitle": {
  10528.           "default": "",
  10529.           "type": "string"
  10530.         },
  10531.         "studio": {
  10532.           "$ref": "Array.String"
  10533.         },
  10534.         "tag": {
  10535.           "$ref": "Array.String"
  10536.         },
  10537.         "tvshowid": {
  10538.           "$ref": "Library.Id",
  10539.           "required": true
  10540.         },
  10541.         "votes": {
  10542.           "default": "",
  10543.           "type": "string"
  10544.         },
  10545.         "watchedepisodes": {
  10546.           "default": 0,
  10547.           "type": "integer"
  10548.         },
  10549.         "year": {
  10550.           "default": 0,
  10551.           "type": "integer"
  10552.         }
  10553.       }
  10554.     },
  10555.     "Video.Fields.Episode": {
  10556.       "extends": "Item.Fields.Base",
  10557.       "id": "Video.Fields.Episode",
  10558.       "items": {
  10559.         "description": "Requesting the cast field will result in increased response times",
  10560.         "enums": [
  10561.           "title",
  10562.           "plot",
  10563.           "votes",
  10564.           "rating",
  10565.           "writer",
  10566.           "firstaired",
  10567.           "playcount",
  10568.           "runtime",
  10569.           "director",
  10570.           "productioncode",
  10571.           "season",
  10572.           "episode",
  10573.           "originaltitle",
  10574.           "showtitle",
  10575.           "cast",
  10576.           "streamdetails",
  10577.           "lastplayed",
  10578.           "fanart",
  10579.           "thumbnail",
  10580.           "file",
  10581.           "resume",
  10582.           "tvshowid",
  10583.           "dateadded",
  10584.           "uniqueid",
  10585.           "art",
  10586.           "specialsortseason",
  10587.           "specialsortepisode"
  10588.         ],
  10589.         "type": "string"
  10590.       }
  10591.     },
  10592.     "Video.Fields.Movie": {
  10593.       "extends": "Item.Fields.Base",
  10594.       "id": "Video.Fields.Movie",
  10595.       "items": {
  10596.         "description": "Requesting the cast, showlink and/or tag field will result in increased response times",
  10597.         "enums": [
  10598.           "title",
  10599.           "genre",
  10600.           "year",
  10601.           "rating",
  10602.           "director",
  10603.           "trailer",
  10604.           "tagline",
  10605.           "plot",
  10606.           "plotoutline",
  10607.           "originaltitle",
  10608.           "lastplayed",
  10609.           "playcount",
  10610.           "writer",
  10611.           "studio",
  10612.           "mpaa",
  10613.           "cast",
  10614.           "country",
  10615.           "imdbnumber",
  10616.           "runtime",
  10617.           "set",
  10618.           "showlink",
  10619.           "streamdetails",
  10620.           "top250",
  10621.           "votes",
  10622.           "fanart",
  10623.           "thumbnail",
  10624.           "file",
  10625.           "sorttitle",
  10626.           "resume",
  10627.           "setid",
  10628.           "dateadded",
  10629.           "tag",
  10630.           "art"
  10631.         ],
  10632.         "type": "string"
  10633.       }
  10634.     },
  10635.     "Video.Fields.MovieSet": {
  10636.       "extends": "Item.Fields.Base",
  10637.       "id": "Video.Fields.MovieSet",
  10638.       "items": {
  10639.         "enums": [
  10640.           "title",
  10641.           "playcount",
  10642.           "fanart",
  10643.           "thumbnail",
  10644.           "art"
  10645.         ],
  10646.         "type": "string"
  10647.       }
  10648.     },
  10649.     "Video.Fields.MusicVideo": {
  10650.       "extends": "Item.Fields.Base",
  10651.       "id": "Video.Fields.MusicVideo",
  10652.       "items": {
  10653.         "enums": [
  10654.           "title",
  10655.           "playcount",
  10656.           "runtime",
  10657.           "director",
  10658.           "studio",
  10659.           "year",
  10660.           "plot",
  10661.           "album",
  10662.           "artist",
  10663.           "genre",
  10664.           "track",
  10665.           "streamdetails",
  10666.           "lastplayed",
  10667.           "fanart",
  10668.           "thumbnail",
  10669.           "file",
  10670.           "resume",
  10671.           "dateadded",
  10672.           "tag",
  10673.           "art"
  10674.         ],
  10675.         "type": "string"
  10676.       }
  10677.     },
  10678.     "Video.Fields.Season": {
  10679.       "extends": "Item.Fields.Base",
  10680.       "id": "Video.Fields.Season",
  10681.       "items": {
  10682.         "enums": [
  10683.           "season",
  10684.           "showtitle",
  10685.           "playcount",
  10686.           "episode",
  10687.           "fanart",
  10688.           "thumbnail",
  10689.           "tvshowid",
  10690.           "watchedepisodes",
  10691.           "art"
  10692.         ],
  10693.         "type": "string"
  10694.       }
  10695.     },
  10696.     "Video.Fields.TVShow": {
  10697.       "extends": "Item.Fields.Base",
  10698.       "id": "Video.Fields.TVShow",
  10699.       "items": {
  10700.         "description": "Requesting the cast field will result in increased response times",
  10701.         "enums": [
  10702.           "title",
  10703.           "genre",
  10704.           "year",
  10705.           "rating",
  10706.           "plot",
  10707.           "studio",
  10708.           "mpaa",
  10709.           "cast",
  10710.           "playcount",
  10711.           "episode",
  10712.           "imdbnumber",
  10713.           "premiered",
  10714.           "votes",
  10715.           "lastplayed",
  10716.           "fanart",
  10717.           "thumbnail",
  10718.           "file",
  10719.           "originaltitle",
  10720.           "sorttitle",
  10721.           "episodeguide",
  10722.           "season",
  10723.           "watchedepisodes",
  10724.           "dateadded",
  10725.           "tag",
  10726.           "art"
  10727.         ],
  10728.         "type": "string"
  10729.       }
  10730.     },
  10731.     "Video.Resume": {
  10732.       "additionalProperties": false,
  10733.       "id": "Video.Resume",
  10734.       "properties": {
  10735.         "position": {
  10736.           "default": 0,
  10737.           "minimum": 0,
  10738.           "type": "number"
  10739.         },
  10740.         "total": {
  10741.           "default": 0,
  10742.           "minimum": 0,
  10743.           "type": "number"
  10744.         }
  10745.       },
  10746.       "type": "object"
  10747.     },
  10748.     "Video.Streams": {
  10749.       "additionalProperties": false,
  10750.       "id": "Video.Streams",
  10751.       "properties": {
  10752.         "audio": {
  10753.           "items": {
  10754.             "additionalProperties": false,
  10755.             "properties": {
  10756.               "channels": {
  10757.                 "default": 0,
  10758.                 "type": "integer"
  10759.               },
  10760.               "codec": {
  10761.                 "default": "",
  10762.                 "type": "string"
  10763.               },
  10764.               "language": {
  10765.                 "default": "",
  10766.                 "type": "string"
  10767.               }
  10768.             },
  10769.             "type": "object"
  10770.           },
  10771.           "minItems": 1,
  10772.           "type": "array"
  10773.         },
  10774.         "subtitle": {
  10775.           "items": {
  10776.             "additionalProperties": false,
  10777.             "properties": {
  10778.               "language": {
  10779.                 "default": "",
  10780.                 "type": "string"
  10781.               }
  10782.             },
  10783.             "type": "object"
  10784.           },
  10785.           "minItems": 1,
  10786.           "type": "array"
  10787.         },
  10788.         "video": {
  10789.           "items": {
  10790.             "additionalProperties": false,
  10791.             "properties": {
  10792.               "aspect": {
  10793.                 "default": 0,
  10794.                 "type": "number"
  10795.               },
  10796.               "codec": {
  10797.                 "default": "",
  10798.                 "type": "string"
  10799.               },
  10800.               "duration": {
  10801.                 "default": 0,
  10802.                 "type": "integer"
  10803.               },
  10804.               "height": {
  10805.                 "default": 0,
  10806.                 "type": "integer"
  10807.               },
  10808.               "width": {
  10809.                 "default": 0,
  10810.                 "type": "integer"
  10811.               }
  10812.             },
  10813.             "type": "object"
  10814.           },
  10815.           "minItems": 1,
  10816.           "type": "array"
  10817.         }
  10818.       },
  10819.       "type": "object"
  10820.     }
  10821.   },
  10822.   "version": "6.21.2"
  10823. }
');