User:Ronie: Difference between revisions

From Official Kodi Wiki
Jump to navigation Jump to search
No edit summary
No edit summary
Line 1: Line 1:
{{mininav|[[Development]]|[[JSON-RPC API]]}}
{{mininav|[[Development]]|[[JSON-RPC API]]}}Version 12 is the current development version of Kodi's JSON-RPC API and will be published with the release of v19.<br />This document has been updated to version 11.8.1. Recent changes are announced on the [https://forum.kodi.tv/forumdisplay.php?fid=174 forum]
Version 12 is the current development version of Kodi's JSON-RPC API and will be published with the release of v19 (Matrix).<br />
This document has been updated to version 11.8.1. Recent changes are announced on the [https://forum.kodi.tv/showthread.php?tid=352779 forum]
 
It comes with support for [http://en.wikipedia.org/wiki/WebSocket WebSockets] as an alternative transport for third party clients. Using WebSockets will allow webinterfaces (which are currently restricted to the HTTP transport only) to get access to a bidirectional transport with Kodi's JSON-RPC API and can therefore also profit from additional features like notifications.
It comes with support for [http://en.wikipedia.org/wiki/WebSocket WebSockets] as an alternative transport for third party clients. Using WebSockets will allow webinterfaces (which are currently restricted to the HTTP transport only) to get access to a bidirectional transport with Kodi's JSON-RPC API and can therefore also profit from additional features like notifications.


Line 199: Line 196:
</pre>
</pre>
|}
|}
 
== Methods ===== Addons ======= Addons.ExecuteAddon ====Executes the given addon with the given parameters (if possible)<br />'''Permissions:'''* ExecuteAddon'''Parameters:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA"># ''string'' addonid<br /># [''mixed: object|array|string'' params = ""]<br /># [''boolean'' wait = False]<br /></div>'''Returns:''' <div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">'''Type:''' ''string''<br /></div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
== Methods ==
=== Addons ===
==== Addons.ExecuteAddon ====
Executes the given addon with the given parameters (if possible)<br />
'''Permissions:'''
* ExecuteAddon
'''Parameters:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
# ''string'' addonid<br />
# [''mixed: object|array|string'' params = ""]<br />
# [''boolean'' wait = False]<br />
</div>
'''Returns:'''  
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
'''Type:''' ''string''<br />
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
  "type": "method",
   "description": "Executes the given addon with the given parameters (if possible)",
   "description": "Executes the given addon with the given parameters (if possible)",
  "transport": "Response",
  "permission": "ExecuteAddon",
   "params": [
   "params": [
     {
     {
       "name": "addonid",
       "name": "addonid",
       "type": "string",
       "required": true,
       "required": true
       "type": "string"
     },
     },
     {
     {
      "default": "",
       "name": "params",
       "name": "params",
       "type": [
       "type": [
         {
         {
          "type": "object",
           "additionalProperties": {
           "additionalProperties": {
            "default": "",
             "type": "string"
             "type": "string"
           }
           },
          "type": "object"
         },
         },
         {
         {
          "type": "array",
           "items": {
           "items": {
             "type": "string"
             "type": "string"
           }
           },
          "type": "array"
         },
         },
         {
         {
          "type": "string",
           "description": "URL path (must start with / or ?",
           "description": "URL path (must start with / or ?"
          "type": "string"
         }
         }
       ],
       ]
      "default": ""
     },
     },
     {
     {
      "default": false,
       "name": "wait",
       "name": "wait",
       "type": "boolean",
       "type": "boolean"
      "default": false
     }
     }
   ],
   ],
   "returns": "string"
  "permission": "ExecuteAddon",
}
   "returns": {
</syntaxhighlight>}}
    "type": "string"
==== Addons.GetAddonDetails ====
  },
Gets the details of a specific addon<br />
  "type": "method"
'''Permissions:'''
}</syntaxhighlight>}}==== Addons.GetAddonDetails ====Gets the details of a specific addon<br />'''Permissions:'''* ReadData'''Parameters:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA"># ''string'' addonid<br /># [''[[#Addon.Fields|Addon.Fields]]'' properties]<br /></div>'''Returns:''' <div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">'''Type:''' ''object''<br />'''Properties:'''# ''[[#Addon.Details|Addon.Details]]'' addon<br /># ''[[#List.LimitsReturned|List.LimitsReturned]]'' limits<br /></div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
* ReadData
'''Parameters:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
# ''string'' addonid<br />
# [''[[#Addon.Fields|Addon.Fields]]'' properties]<br />
</div>
'''Returns:'''  
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
'''Type:''' ''object''<br />
'''Properties:'''
# ''[[#List.LimitsReturned|List.LimitsReturned]]'' limits<br />
# ''[[#Addon.Details|Addon.Details]]'' addon<br />
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
  "type": "method",
   "description": "Gets the details of a specific addon",
   "description": "Gets the details of a specific addon",
  "transport": "Response",
  "permission": "ReadData",
   "params": [
   "params": [
     {
     {
       "name": "addonid",
       "name": "addonid",
       "type": "string",
       "required": true,
       "required": true
       "type": "string"
     },
     },
     {
     {
       "name": "properties",
       "$ref": "Addon.Fields",
       "$ref": "Addon.Fields"
       "name": "properties"
     }
     }
   ],
   ],
  "permission": "ReadData",
   "returns": {
   "returns": {
    "type": "object",
     "properties": {
     "properties": {
      "addon": {
        "$ref": "Addon.Details",
        "required": true
      },
       "limits": {
       "limits": {
         "$ref": "List.LimitsReturned",
         "$ref": "List.LimitsReturned",
        "required": true
      },
      "addon": {
        "$ref": "Addon.Details",
         "required": true
         "required": true
       }
       }
     }
     },
   }
    "type": "object"
}
   },
</syntaxhighlight>}}
  "type": "method"
==== Addons.GetAddons ====
}</syntaxhighlight>}}==== Addons.GetAddons ====Gets all available addons<br />'''Permissions:'''* ReadData'''Parameters:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA"># [''[[#Addon.Types|Addon.Types]]'' type = unknown]<br /># [''[[#Addon.Content|Addon.Content]]'' content = unknown] (Content provided by the addon. Only considered for plugins and scripts.)<br /># [''mixed: boolean|string'' enabled = all]<br /># [''[[#Addon.Fields|Addon.Fields]]'' properties]<br /># [''[[#List.Limits|List.Limits]]'' limits]<br /># [''mixed: boolean|string'' installed = True]<br /></div>'''Returns:''' <div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">'''Type:''' ''object''<br />'''Properties:'''# [''array[[#Addon.Details|Addon.Details]]'' addons]<br /># ''[[#List.LimitsReturned|List.LimitsReturned]]'' limits<br /></div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
Gets all available addons<br />
'''Permissions:'''
* ReadData
'''Parameters:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
# [''[[#Addon.Types|Addon.Types]]'' type]<br />
# [''[[#Addon.Content|Addon.Content]]'' content] (Content provided by the addon. Only considered for plugins and scripts.)<br />
# [''mixed: boolean|string'' enabled = all]<br />
# [''[[#Addon.Fields|Addon.Fields]]'' properties]<br />
# [''[[#List.Limits|List.Limits]]'' limits]<br />
# [''mixed: boolean|string'' installed = True]<br />
</div>
'''Returns:'''  
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
'''Type:''' ''object''<br />
'''Properties:'''
# ''[[#List.LimitsReturned|List.LimitsReturned]]'' limits<br />
# [''array[[#Addon.Details|Addon.Details]]'' addons]<br />
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
  "type": "method",
   "description": "Gets all available addons",
   "description": "Gets all available addons",
  "transport": "Response",
  "permission": "ReadData",
   "params": [
   "params": [
     {
     {
       "name": "type",
       "$ref": "Addon.Types",
       "$ref": "Addon.Types"
      "default": "unknown",
       "name": "type"
     },
     },
     {
     {
      "name": "content",
       "$ref": "Addon.Content",
       "$ref": "Addon.Content",
       "description": "Content provided by the addon. Only considered for plugins and scripts."
      "default": "unknown",
       "description": "Content provided by the addon. Only considered for plugins and scripts.",
      "name": "content"
     },
     },
     {
     {
      "default": "all",
       "name": "enabled",
       "name": "enabled",
       "type": [
       "type": [
Line 350: Line 288:
         },
         },
         {
         {
           "type": "string",
           "enums": [
          "enum": [
             "all"
             "all"
           ]
           ],
          "type": "string"
         }
         }
       ],
       ]
      "default": "all"
     },
     },
     {
     {
       "name": "properties",
       "$ref": "Addon.Fields",
       "$ref": "Addon.Fields"
       "name": "properties"
     },
     },
     {
     {
       "name": "limits",
       "$ref": "List.Limits",
       "$ref": "List.Limits"
       "name": "limits"
     },
     },
     {
     {
      "default": true,
       "name": "installed",
       "name": "installed",
       "type": [
       "type": [
Line 373: Line 311:
         },
         },
         {
         {
           "type": "string",
           "enums": [
          "enum": [
             "all"
             "all"
           ]
           ],
          "type": "string"
         }
         }
       ],
       ]
      "default": true
     }
     }
   ],
   ],
  "permission": "ReadData",
   "returns": {
   "returns": {
    "type": "object",
     "properties": {
     "properties": {
      "addons": {
        "items": {
          "$ref": "Addon.Details"
        },
        "type": "array"
      },
       "limits": {
       "limits": {
         "$ref": "List.LimitsReturned",
         "$ref": "List.LimitsReturned",
         "required": true
         "required": true
      },
      "addons": {
        "type": "array",
        "items": {
          "$ref": "Addon.Details"
        }
       }
       }
     }
     },
   }
    "type": "object"
}
   },
</syntaxhighlight>}}
  "type": "method"
==== Addons.SetAddonEnabled ====
}</syntaxhighlight>}}==== Addons.SetAddonEnabled ====Enables/Disables a specific addon<br />'''Permissions:'''* ManageAddon'''Parameters:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA"># ''string'' addonid<br /># ''[[#Global.Toggle|Global.Toggle]]'' enabled<br /></div>'''Returns:''' <div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">'''Type:''' ''string''<br /></div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
Enables/Disables a specific addon<br />
'''Permissions:'''
* ManageAddon
'''Parameters:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
# ''string'' addonid<br />
# ''[[#Global.Toggle|Global.Toggle]]'' enabled<br />
</div>
'''Returns:'''  
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
'''Type:''' ''string''<br />
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
  "type": "method",
   "description": "Enables/Disables a specific addon",
   "description": "Enables/Disables a specific addon",
  "transport": "Response",
  "permission": "ManageAddon",
   "params": [
   "params": [
     {
     {
       "name": "addonid",
       "name": "addonid",
       "type": "string",
       "required": true,
       "required": true
       "type": "string"
     },
     },
     {
     {
      "$ref": "Global.Toggle",
       "name": "enabled",
       "name": "enabled",
      "$ref": "Global.Toggle",
       "required": true
       "required": true
     }
     }
   ],
   ],
   "returns": "string"
  "permission": "ManageAddon",
}
   "returns": {
</syntaxhighlight>}}
    "type": "string"
=== Application ===
  },
==== Application.GetProperties ====
  "type": "method"
Retrieves the values of the given properties<br />
}</syntaxhighlight>}}=== Application ======= Application.GetProperties ====Retrieves the values of the given properties<br />'''Permissions:'''* ReadData'''Parameters:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA"># ''array'' properties<br /></div>'''Returns:''' <div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">'''Type:''' ''[[#Application.Property.Value|Application.Property.Value]]''<br /></div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
'''Permissions:'''
* ReadData
'''Parameters:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
# ''array'' properties<br />
</div>
'''Returns:'''  
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
'''Type:''' ''[[#Application.Property.Value|Application.Property.Value]]''<br />
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
  "type": "method",
   "description": "Retrieves the values of the given properties",
   "description": "Retrieves the values of the given properties",
  "transport": "Response",
  "permission": "ReadData",
   "params": [
   "params": [
     {
     {
      "items": {
        "$ref": "Application.Property.Name"
      },
       "name": "properties",
       "name": "properties",
      "required": true,
       "type": "array",
       "type": "array",
       "uniqueItems": true,
       "uniqueItems": true
      "required": true,
      "items": {
        "$ref": "Application.Property.Name"
      }
     }
     }
   ],
   ],
  "permission": "ReadData",
   "returns": {
   "returns": {
     "$ref": "Application.Property.Value",
     "$ref": "Application.Property.Value"
    "required": true
  },
  }
  "type": "method"
}
}</syntaxhighlight>}}==== Application.Quit ====Quit application<br />'''Permissions:'''* ControlPower'''Returns:''' <div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">'''Type:''' ''string''<br /></div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
</syntaxhighlight>}}
==== Application.Quit ====
Quit application<br />
'''Permissions:'''
* ControlPower
'''Returns:'''  
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
'''Type:''' ''string''<br />
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
  "type": "method",
   "description": "Quit application",
   "description": "Quit application",
   "transport": "Response",
   "params": [],
   "permission": "ControlPower",
   "permission": "ControlPower",
   "params": [],
   "returns": {
   "returns": "string"
    "type": "string"
}
  },
</syntaxhighlight>}}
   "type": "method"
==== Application.SetMute ====
}</syntaxhighlight>}}==== Application.SetMute ====Toggle mute/unmute<br />'''Permissions:'''* ControlPlayback'''Parameters:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA"># ''[[#Global.Toggle|Global.Toggle]]'' mute<br /></div>'''Returns:''' <div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">'''Type:''' ''boolean (Mute state)''<br /></div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
Toggle mute/unmute<br />
'''Permissions:'''
* ControlPlayback
'''Parameters:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
# ''[[#Global.Toggle|Global.Toggle]]'' mute<br />
</div>
'''Returns:'''  
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
'''Type:''' ''boolean (Mute state)''<br />
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
  "type": "method",
   "description": "Toggle mute/unmute",
   "description": "Toggle mute/unmute",
  "transport": "Response",
  "permission": "ControlPlayback",
   "params": [
   "params": [
     {
     {
      "$ref": "Global.Toggle",
       "name": "mute",
       "name": "mute",
       "required": true,
       "required": true
      "$ref": "Global.Toggle"
     }
     }
   ],
   ],
  "permission": "ControlPlayback",
   "returns": {
   "returns": {
     "type": "boolean",
     "description": "Mute state",
     "description": "Mute state"
     "type": "boolean"
   }
   },
}
  "type": "method"
</syntaxhighlight>}}
}</syntaxhighlight>}}==== Application.SetVolume ====Set the current volume<br />'''Permissions:'''* ControlPlayback'''Parameters:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA"># ''mixed: integer|[[#Global.IncrementDecrement|Global.IncrementDecrement]]'' volume<br /></div>'''Returns:''' <div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">'''Type:''' ''integer''<br /></div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
==== Application.SetVolume ====
Set the current volume<br />
'''Permissions:'''
* ControlPlayback
'''Parameters:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
# ''mixed: integer|[[#Global.IncrementDecrement|Global.IncrementDecrement]]'' volume<br />
</div>
'''Returns:'''  
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
'''Type:''' ''integer''<br />
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
  "type": "method",
   "description": "Set the current volume",
   "description": "Set the current volume",
  "transport": "Response",
  "permission": "ControlPlayback",
   "params": [
   "params": [
     {
     {
       "name": "volume",
       "name": "volume",
      "required": true,
       "type": [
       "type": [
         {
         {
           "type": "integer",
           "maximum": 100,
           "minimum": 0,
           "minimum": 0,
           "maximum": 100,
           "type": "integer"
          "required": true
         },
         },
         {
         {
           "$ref": "Global.IncrementDecrement",
           "$ref": "Global.IncrementDecrement"
          "required": true
         }
         }
       ],
       ]
      "required": true
     }
     }
   ],
   ],
   "returns": "integer"
  "permission": "ControlPlayback",
}
   "returns": {
</syntaxhighlight>}}
    "type": "integer"
=== AudioLibrary ===
  },
==== AudioLibrary.Clean ====
  "type": "method"
Cleans the audio library from non-existent items<br />
}</syntaxhighlight>}}=== AudioLibrary ======= AudioLibrary.Clean ====Cleans the audio library from non-existent items<br />'''Permissions:'''* RemoveData'''Parameters:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA"># [''boolean'' showdialogs = True] (Whether or not to show the progress bar or any other GUI dialog)<br /></div>'''Returns:''' <div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">'''Type:''' ''string''<br /></div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
'''Permissions:'''
* RemoveData
'''Parameters:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
# [''boolean'' showdialogs = True] (Whether or not to show the progress bar or any other GUI dialog)<br />
</div>
'''Returns:'''  
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
'''Type:''' ''string''<br />
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
  "type": "method",
   "description": "Cleans the audio library from non-existent items",
   "description": "Cleans the audio library from non-existent items",
  "transport": "Response",
  "permission": "RemoveData",
   "params": [
   "params": [
     {
     {
      "default": true,
      "description": "Whether or not to show the progress bar or any other GUI dialog",
       "name": "showdialogs",
       "name": "showdialogs",
       "type": "boolean",
       "type": "boolean"
      "default": true,
      "description": "Whether or not to show the progress bar or any other GUI dialog"
     }
     }
   ],
   ],
   "returns": "string"
  "permission": "RemoveData",
}
   "returns": {
</syntaxhighlight>}}
    "type": "string"
==== AudioLibrary.Export ====
  },
Exports all items from the audio library<br />
  "type": "method"
'''Permissions:'''
}</syntaxhighlight>}}==== AudioLibrary.Export ====Exports all items from the audio library<br />'''Permissions:'''* WriteFile'''Parameters:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA"># [''mixed: object|object'' options]<br /></div>'''Returns:''' <div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">'''Type:''' ''string''<br /></div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
* WriteFile
'''Parameters:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
# [''mixed: object|object'' options]<br />
</div>
'''Returns:'''  
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
'''Type:''' ''string''<br />
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
  "type": "method",
   "description": "Exports all items from the audio library",
   "description": "Exports all items from the audio library",
  "transport": "Response",
  "permission": "WriteFile",
   "params": [
   "params": [
     {
     {
Line 610: Line 441:
       "type": [
       "type": [
         {
         {
          "type": "object",
          "required": true,
           "additionalProperties": false,
           "additionalProperties": false,
           "properties": {
           "properties": {
             "path": {
             "path": {
               "type": "string",
               "description": "Path to the directory to where the data should be exported",
              "minLength": 1,
               "required": true,
               "required": true,
               "minLength": 1,
               "type": "string"
              "description": "Path to the directory to where the data should be exported"
             }
             }
           }
           },
          "type": "object"
         },
         },
         {
         {
          "type": "object",
          "required": true,
           "additionalProperties": false,
           "additionalProperties": false,
           "properties": {
           "properties": {
             "overwrite": {
             "images": {
              "type": "boolean",
               "default": false,
               "default": false,
               "description": "Whether to overwrite existing exported files"
               "description": "Whether to export thumbnails and fanart images",
              "type": "boolean"
             },
             },
             "images": {
             "overwrite": {
              "type": "boolean",
               "default": false,
               "default": false,
               "description": "Whether to export thumbnails and fanart images"
               "description": "Whether to overwrite existing exported files",
              "type": "boolean"
             }
             }
           }
           },
          "type": "object"
         }
         }
       ]
       ]
     }
     }
   ],
   ],
   "returns": "string"
  "permission": "WriteFile",
}
   "returns": {
</syntaxhighlight>}}
    "type": "string"
==== AudioLibrary.GetAlbumDetails ====
  },
Retrieve details about a specific album<br />
  "type": "method"
'''Permissions:'''
}</syntaxhighlight>}}==== AudioLibrary.GetAlbumDetails ====Retrieve details about a specific album<br />'''Permissions:'''* ReadData'''Parameters:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA"># ''[[#Library.Id|Library.Id]]'' albumid<br /># [''[[#Audio.Fields.Album|Audio.Fields.Album]]'' properties]<br /></div>'''Returns:''' <div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">'''Type:''' ''object''<br />'''Properties:'''# [''[[#Audio.Details.Album|Audio.Details.Album]]'' albumdetails]<br /></div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
* ReadData
'''Parameters:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
# ''[[#Library.Id|Library.Id]]'' albumid<br />
# [''[[#Audio.Fields.Album|Audio.Fields.Album]]'' properties]<br />
</div>
'''Returns:'''  
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
'''Type:''' ''object''<br />
'''Properties:'''
# [''[[#Audio.Details.Album|Audio.Details.Album]]'' albumdetails]<br />
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
  "type": "method",
   "description": "Retrieve details about a specific album",
   "description": "Retrieve details about a specific album",
  "transport": "Response",
  "permission": "ReadData",
   "params": [
   "params": [
     {
     {
      "$ref": "Library.Id",
       "name": "albumid",
       "name": "albumid",
      "$ref": "Library.Id",
       "required": true
       "required": true
     },
     },
     {
     {
       "name": "properties",
       "$ref": "Audio.Fields.Album",
       "$ref": "Audio.Fields.Album"
       "name": "properties"
     }
     }
   ],
   ],
  "permission": "ReadData",
   "returns": {
   "returns": {
    "type": "object",
     "properties": {
     "properties": {
       "albumdetails": {
       "albumdetails": {
         "$ref": "Audio.Details.Album"
         "$ref": "Audio.Details.Album"
       }
       }
     }
     },
   }
    "type": "object"
}
   },
</syntaxhighlight>}}
  "type": "method"
==== AudioLibrary.GetAlbums ====
}</syntaxhighlight>}}==== AudioLibrary.GetAlbums ====Retrieve all albums from specified artist (and role) or that has songs of the specified genre<br />'''Permissions:'''* ReadData'''Parameters:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA"># [''[[#Audio.Fields.Album|Audio.Fields.Album]]'' properties]<br /># [''[[#List.Limits|List.Limits]]'' limits]<br /># [''[[#List.Sort|List.Sort]]'' sort]<br /># [''mixed: object|object|object|object|object|object|object|object|[[#List.Filter.Albums|List.Filter.Albums]]'' filter]<br /># [''boolean'' includesingles = False]<br /># [''boolean'' allroles = False] (Whether or not to include all roles when filtering by artist, rather than the default of excluding other contributions. When true it overrides any role filter value.)<br /></div>'''Returns:''' <div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">'''Type:''' ''object''<br />'''Properties:'''# [''array[[#Audio.Details.Album|Audio.Details.Album]]'' albums]<br /># ''[[#List.LimitsReturned|List.LimitsReturned]]'' limits<br /></div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
Retrieve all albums from specified artist (and role) or that has songs of the specified genre<br />
'''Permissions:'''
* ReadData
'''Parameters:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
# [''[[#Audio.Fields.Album|Audio.Fields.Album]]'' properties]<br />
# [''[[#List.Limits|List.Limits]]'' limits]<br />
# [''[[#List.Sort|List.Sort]]'' sort]<br />
# [''mixed: object|object|object|object|object|object|object|object|[[#List.Filter.Albums|List.Filter.Albums]]'' filter]<br />
# [''boolean'' includesingles = False]<br />
# [''boolean'' allroles = False] (Whether or not to include all roles when filtering by artist, rather than the default of excluding other contributions. When true it overrides any role filter value.)<br />
</div>
'''Returns:'''  
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
'''Type:''' ''object''<br />
'''Properties:'''
# ''[[#List.LimitsReturned|List.LimitsReturned]]'' limits<br />
# [''array[[#Audio.Details.Album|Audio.Details.Album]]'' albums]<br />
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
  "type": "method",
   "description": "Retrieve all albums from specified artist (and role) or that has songs of the specified genre",
   "description": "Retrieve all albums from specified artist (and role) or that has songs of the specified genre",
  "transport": "Response",
  "permission": "ReadData",
   "params": [
   "params": [
     {
     {
       "name": "properties",
       "$ref": "Audio.Fields.Album",
       "$ref": "Audio.Fields.Album"
       "name": "properties"
     },
     },
     {
     {
       "name": "limits",
       "$ref": "List.Limits",
       "$ref": "List.Limits"
       "name": "limits"
     },
     },
     {
     {
       "name": "sort",
       "$ref": "List.Sort",
       "$ref": "List.Sort"
       "name": "sort"
     },
     },
     {
     {
Line 730: Line 518:
       "type": [
       "type": [
         {
         {
           "type": "object",
           "additionalProperties": false,
           "properties": {
           "properties": {
             "genreid": {
             "genreid": {
               "$ref": "Library.Id",
               "$ref": "Library.Id",
              "required": true,
               "description": "Song genre. Filter for existence of songs with this genre",
               "description": "Song genre. Filter for existence of songs with this genre"
              "required": true
             }
             }
           },
           },
           "additionalProperties": false
           "type": "object"
         },
         },
         {
         {
           "type": "object",
           "additionalProperties": false,
           "properties": {
           "properties": {
             "genre": {
             "genre": {
               "type": "string",
               "description": "Song genre. Filter for existence of songs with this genre",
               "minLength": 1,
               "minLength": 1,
               "required": true,
               "required": true,
               "description": "Song genre. Filter for existence of songs with this genre"
               "type": "string"
             }
             }
           },
           },
           "additionalProperties": false
           "type": "object"
         },
         },
         {
         {
           "type": "object",
           "additionalProperties": false,
           "properties": {
           "properties": {
             "artistid": {
             "artistid": {
Line 760: Line 548:
             }
             }
           },
           },
           "additionalProperties": false
           "type": "object"
         },
         },
         {
         {
           "type": "object",
           "additionalProperties": false,
           "properties": {
           "properties": {
             "artistid": {
             "artistid": {
Line 774: Line 562:
             }
             }
           },
           },
           "additionalProperties": false
           "type": "object"
         },
         },
         {
         {
           "type": "object",
           "additionalProperties": false,
           "properties": {
           "properties": {
             "artistid": {
             "artistid": {
Line 784: Line 572:
             },
             },
             "role": {
             "role": {
              "type": "string",
               "minLength": 1,
               "minLength": 1,
               "required": true
               "required": true,
              "type": "string"
             }
             }
           },
           },
           "additionalProperties": false
           "type": "object"
         },
         },
         {
         {
           "type": "object",
           "additionalProperties": false,
           "properties": {
           "properties": {
             "artist": {
             "artist": {
              "type": "string",
               "minLength": 1,
               "minLength": 1,
               "required": true
               "required": true,
              "type": "string"
             }
             }
           },
           },
           "additionalProperties": false
           "type": "object"
         },
         },
         {
         {
           "type": "object",
           "additionalProperties": false,
           "properties": {
           "properties": {
             "artist": {
             "artist": {
              "type": "string",
               "minLength": 1,
               "minLength": 1,
               "required": true
               "required": true,
              "type": "string"
             },
             },
             "roleid": {
             "roleid": {
Line 815: Line 603:
             }
             }
           },
           },
           "additionalProperties": false
           "type": "object"
         },
         },
         {
         {
           "type": "object",
           "additionalProperties": false,
           "properties": {
           "properties": {
             "artist": {
             "artist": {
              "type": "string",
               "minLength": 1,
               "minLength": 1,
               "required": true
               "required": true,
              "type": "string"
             },
             },
             "role": {
             "role": {
              "type": "string",
               "minLength": 1,
               "minLength": 1,
               "required": true
               "required": true,
              "type": "string"
             }
             }
           },
           },
           "additionalProperties": false
           "type": "object"
         },
         },
         {
         {
Line 839: Line 627:
     },
     },
     {
     {
      "default": false,
       "name": "includesingles",
       "name": "includesingles",
       "type": "boolean",
       "type": "boolean"
      "default": false
     },
     },
     {
     {
      "default": false,
      "description": "Whether or not to include all roles when filtering by artist, rather than the default of excluding other contributions. When true it overrides any role filter value.",
       "name": "allroles",
       "name": "allroles",
       "type": "boolean",
       "type": "boolean"
      "default": false,
      "description": "Whether or not to include all roles when filtering by artist, rather than the default of excluding other contributions. When true it overrides any role filter value."
     }
     }
   ],
   ],
  "permission": "ReadData",
   "returns": {
   "returns": {
    "type": "object",
     "properties": {
     "properties": {
      "albums": {
        "items": {
          "$ref": "Audio.Details.Album"
        },
        "type": "array"
      },
       "limits": {
       "limits": {
         "$ref": "List.LimitsReturned",
         "$ref": "List.LimitsReturned",
         "required": true
         "required": true
      },
      "albums": {
        "type": "array",
        "items": {
          "$ref": "Audio.Details.Album"
        }
       }
       }
     }
     },
   }
    "type": "object"
}
   },
</syntaxhighlight>}}
  "type": "method"
==== AudioLibrary.GetArtistDetails ====
}</syntaxhighlight>}}==== AudioLibrary.GetArtistDetails ====Retrieve details about a specific artist<br />'''Permissions:'''* ReadData'''Parameters:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA"># ''[[#Library.Id|Library.Id]]'' artistid<br /># [''[[#Audio.Fields.Artist|Audio.Fields.Artist]]'' properties]<br /></div>'''Returns:''' <div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">'''Type:''' ''object''<br />'''Properties:'''# [''[[#Audio.Details.Artist|Audio.Details.Artist]]'' artistdetails]<br /></div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
Retrieve details about a specific artist<br />
'''Permissions:'''
* ReadData
'''Parameters:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
# ''[[#Library.Id|Library.Id]]'' artistid<br />
# [''[[#Audio.Fields.Artist|Audio.Fields.Artist]]'' properties]<br />
</div>
'''Returns:'''  
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
'''Type:''' ''object''<br />
'''Properties:'''
# [''[[#Audio.Details.Artist|Audio.Details.Artist]]'' artistdetails]<br />
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
  "type": "method",
   "description": "Retrieve details about a specific artist",
   "description": "Retrieve details about a specific artist",
  "transport": "Response",
  "permission": "ReadData",
   "params": [
   "params": [
     {
     {
      "$ref": "Library.Id",
       "name": "artistid",
       "name": "artistid",
      "$ref": "Library.Id",
       "required": true
       "required": true
     },
     },
     {
     {
       "name": "properties",
       "$ref": "Audio.Fields.Artist",
       "$ref": "Audio.Fields.Artist"
       "name": "properties"
     }
     }
   ],
   ],
  "permission": "ReadData",
   "returns": {
   "returns": {
    "type": "object",
     "properties": {
     "properties": {
       "artistdetails": {
       "artistdetails": {
         "$ref": "Audio.Details.Artist"
         "$ref": "Audio.Details.Artist"
       }
       }
     }
     },
   }
    "type": "object"
}
   },
</syntaxhighlight>}}
  "type": "method"
==== AudioLibrary.GetArtists ====
}</syntaxhighlight>}}==== AudioLibrary.GetArtists ====Retrieve all artists. For backward compatibility by default this implicity does not include those that only contribute other roles, however absolutely all artists can be returned using allroles=true<br />'''Permissions:'''* ReadData'''Parameters:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA"># [''[[#Optional.Boolean|Optional.Boolean]]'' albumartistsonly = None] (Whether or not to only include album artists rather than the artists of only individual songs as well. If the parameter is not passed or is passed as null the GUI setting will be used)<br /># [''[[#Audio.Fields.Artist|Audio.Fields.Artist]]'' properties]<br /># [''[[#List.Limits|List.Limits]]'' limits]<br /># [''[[#List.Sort|List.Sort]]'' sort]<br /># [''mixed: object|object|object|object|object|object|object|object|object|object|object|object|object|object|object|[[#List.Filter.Artists|List.Filter.Artists]]'' filter]<br /># [''boolean'' allroles = False] (Whether or not to include all artists irrespective of the role they contributed. When true it overrides any role filter value.)<br /></div>'''Returns:''' <div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">'''Type:''' ''object''<br />'''Properties:'''# [''array[[#Audio.Details.Artist|Audio.Details.Artist]]'' artists]<br /># ''[[#List.LimitsReturned|List.LimitsReturned]]'' limits<br /></div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
Retrieve all artists. For backward compatibility by default this implicity does not include those that only contribute other roles, however absolutely all artists can be returned using allroles=true<br />
'''Permissions:'''
* ReadData
'''Parameters:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
# [''[[#Optional.Boolean|Optional.Boolean]]'' albumartistsonly] (Whether or not to only include album artists rather than the artists of only individual songs as well. If the parameter is not passed or is passed as null the GUI setting will be used)<br />
# [''[[#Audio.Fields.Artist|Audio.Fields.Artist]]'' properties]<br />
# [''[[#List.Limits|List.Limits]]'' limits]<br />
# [''[[#List.Sort|List.Sort]]'' sort]<br />
# [''mixed: object|object|object|object|object|object|object|object|object|object|object|object|object|object|object|[[#List.Filter.Artists|List.Filter.Artists]]'' filter]<br />
# [''boolean'' allroles = False] (Whether or not to include all artists irrespective of the role they contributed. When true it overrides any role filter value.)<br />
</div>
'''Returns:'''  
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
'''Type:''' ''object''<br />
'''Properties:'''
# ''[[#List.LimitsReturned|List.LimitsReturned]]'' limits<br />
# [''array[[#Audio.Details.Artist|Audio.Details.Artist]]'' artists]<br />
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
  "type": "method",
   "description": "Retrieve all artists. For backward compatibility by default this implicity does not include those that only contribute other roles, however absolutely all artists can be returned using allroles=true",
   "description": "Retrieve all artists. For backward compatibility by default this implicity does not include those that only contribute other roles, however absolutely all artists can be returned using allroles=true",
  "transport": "Response",
  "permission": "ReadData",
   "params": [
   "params": [
     {
     {
      "name": "albumartistsonly",
       "$ref": "Optional.Boolean",
       "$ref": "Optional.Boolean",
       "description": "Whether or not to only include album artists rather than the artists of only individual songs as well. If the parameter is not passed or is passed as null the GUI setting will be used"
      "default": null,
       "description": "Whether or not to only include album artists rather than the artists of only individual songs as well. If the parameter is not passed or is passed as null the GUI setting will be used",
      "name": "albumartistsonly"
     },
     },
     {
     {
       "name": "properties",
       "$ref": "Audio.Fields.Artist",
       "$ref": "Audio.Fields.Artist"
       "name": "properties"
     },
     },
     {
     {
       "name": "limits",
       "$ref": "List.Limits",
       "$ref": "List.Limits"
       "name": "limits"
     },
     },
     {
     {
       "name": "sort",
       "$ref": "List.Sort",
       "$ref": "List.Sort"
       "name": "sort"
     },
     },
     {
     {
Line 957: Line 703:
       "type": [
       "type": [
         {
         {
           "type": "object",
           "additionalProperties": false,
           "properties": {
           "properties": {
             "genreid": {
             "genreid": {
               "$ref": "Library.Id",
               "$ref": "Library.Id",
              "required": true,
               "description": "Deprecated, use songgenreid. Filter for existence of songs with this genre",
               "description": "Deprecated, use songgenreid. Filter for existence of songs with this genre"
              "required": true
             }
             }
           },
           },
           "additionalProperties": false
           "type": "object"
         },
         },
         {
         {
           "type": "object",
           "additionalProperties": false,
           "properties": {
           "properties": {
             "songgenreid": {
             "songgenreid": {
               "$ref": "Library.Id",
               "$ref": "Library.Id",
              "required": true,
               "description": "Song genreid. Filter for existence of songs with this genre",
               "description": "Song genreid. Filter for existence of songs with this genre"
              "required": true
             }
             }
           },
           },
           "additionalProperties": false
           "type": "object"
         },
         },
         {
         {
           "type": "object",
           "additionalProperties": false,
           "properties": {
           "properties": {
             "songgenreid": {
             "roleid": {
               "$ref": "Library.Id",
               "$ref": "Library.Id",
               "required": true
               "required": true
             },
             },
             "roleid": {
             "songgenreid": {
               "$ref": "Library.Id",
               "$ref": "Library.Id",
               "required": true
               "required": true
             }
             }
           },
           },
           "additionalProperties": false
           "type": "object"
         },
         },
         {
         {
           "type": "object",
           "additionalProperties": false,
           "properties": {
           "properties": {
            "role": {
              "minLength": 1,
              "required": true,
              "type": "string"
            },
             "songgenreid": {
             "songgenreid": {
               "$ref": "Library.Id",
               "$ref": "Library.Id",
              "required": true
            },
            "role": {
              "type": "string",
              "minLength": 1,
               "required": true
               "required": true
             }
             }
           },
           },
           "additionalProperties": false
           "type": "object"
         },
         },
         {
         {
           "type": "object",
           "additionalProperties": false,
           "properties": {
           "properties": {
             "genre": {
             "genre": {
               "type": "string",
               "description": "Deprecated, use songgenre. Filter for existence of songs with this genre",
               "minLength": 1,
               "minLength": 1,
               "required": true,
               "required": true,
               "description": "Deprecated, use songgenre. Filter for existence of songs with this genre"
               "type": "string"
             }
             }
           },
           },
           "additionalProperties": false
           "type": "object"
         },
         },
         {
         {
           "type": "object",
           "additionalProperties": false,
           "properties": {
           "properties": {
             "songgenre": {
             "songgenre": {
               "type": "string",
               "description": "Song genre. Filter for existence of songs with this genre",
               "minLength": 1,
               "minLength": 1,
               "required": true,
               "required": true,
               "description": "Song genre. Filter for existence of songs with this genre"
               "type": "string"
             }
             }
           },
           },
           "additionalProperties": false
           "type": "object"
         },
         },
         {
         {
           "type": "object",
           "additionalProperties": false,
           "properties": {
           "properties": {
            "songgenre": {
              "type": "string",
              "minLength": 1,
              "required": true
            },
             "roleid": {
             "roleid": {
               "$ref": "Library.Id",
               "$ref": "Library.Id",
               "required": true
               "required": true
            },
            "songgenre": {
              "minLength": 1,
              "required": true,
              "type": "string"
             }
             }
           },
           },
           "additionalProperties": false
           "type": "object"
         },
         },
         {
         {
           "type": "object",
           "additionalProperties": false,
           "properties": {
           "properties": {
             "songgenre": {
             "role": {
              "type": "string",
               "minLength": 1,
               "minLength": 1,
               "required": true
               "required": true,
              "type": "string"
             },
             },
             "role": {
             "songgenre": {
              "type": "string",
               "minLength": 1,
               "minLength": 1,
               "required": true
               "required": true,
              "type": "string"
             }
             }
           },
           },
           "additionalProperties": false
           "type": "object"
         },
         },
         {
         {
           "type": "object",
           "additionalProperties": false,
           "properties": {
           "properties": {
             "albumid": {
             "albumid": {
Line 1,070: Line 816:
             }
             }
           },
           },
           "additionalProperties": false
           "type": "object"
         },
         },
         {
         {
           "type": "object",
           "additionalProperties": false,
           "properties": {
           "properties": {
             "album": {
             "album": {
              "type": "string",
               "minLength": 1,
               "minLength": 1,
               "required": true
               "required": true,
              "type": "string"
             }
             }
           },
           },
           "additionalProperties": false
           "type": "object"
         },
         },
         {
         {
           "type": "object",
           "additionalProperties": false,
           "properties": {
           "properties": {
             "songid": {
             "songid": {
Line 1,091: Line 837:
             }
             }
           },
           },
           "additionalProperties": false
           "type": "object"
         },
         },
         {
         {
           "type": "object",
           "additionalProperties": false,
           "properties": {
           "properties": {
             "songid": {
             "roleid": {
               "$ref": "Library.Id",
               "$ref": "Library.Id",
               "required": true
               "required": true
             },
             },
             "roleid": {
             "songid": {
               "$ref": "Library.Id",
               "$ref": "Library.Id",
               "required": true
               "required": true
             }
             }
           },
           },
           "additionalProperties": false
           "type": "object"
         },
         },
         {
         {
           "type": "object",
           "additionalProperties": false,
           "properties": {
           "properties": {
            "role": {
              "minLength": 1,
              "required": true,
              "type": "string"
            },
             "songid": {
             "songid": {
               "$ref": "Library.Id",
               "$ref": "Library.Id",
               "required": true
               "required": true
            },
             }
            "role": {
           },
              "type": "string",
           "type": "object"
              "minLength": 1,
              "required": true
             }
           },
           "additionalProperties": false
         },
         },
         {
         {
           "type": "object",
           "additionalProperties": false,
           "properties": {
           "properties": {
             "roleid": {
             "roleid": {
               "$ref": "Library.Id",
               "$ref": "Library.Id",
              "required": true,
               "description": "Role contributed by artist. Overridden by allroles parameter",
               "description": "Role contributed by artist. Overridden by allroles parameter"
              "required": true
             }
             }
           },
           },
           "additionalProperties": false
           "type": "object"
         },
         },
         {
         {
           "type": "object",
           "additionalProperties": false,
           "properties": {
           "properties": {
             "role": {
             "role": {
               "type": "string",
               "description": "Role contributed by artist. Overridden by allroles parameter",
               "minLength": 1,
               "minLength": 1,
               "required": true,
               "required": true,
               "description": "Role contributed by artist. Overridden by allroles parameter"
               "type": "string"
             }
             }
           },
           },
           "additionalProperties": false
           "type": "object"
         },
         },
         {
         {
Line 1,151: Line 897:
     },
     },
     {
     {
      "default": false,
      "description": "Whether or not to include all artists irrespective of the role they contributed. When true it overrides any role filter value.",
       "name": "allroles",
       "name": "allroles",
       "type": "boolean",
       "type": "boolean"
      "default": false,
      "description": "Whether or not to include all artists irrespective of the role they contributed. When true it overrides any role filter value."
     }
     }
   ],
   ],
  "permission": "ReadData",
   "returns": {
   "returns": {
    "type": "object",
     "properties": {
     "properties": {
      "artists": {
        "items": {
          "$ref": "Audio.Details.Artist"
        },
        "type": "array"
      },
       "limits": {
       "limits": {
         "$ref": "List.LimitsReturned",
         "$ref": "List.LimitsReturned",
         "required": true
         "required": true
      },
      "artists": {
        "type": "array",
        "items": {
          "$ref": "Audio.Details.Artist"
        }
       }
       }
     }
     },
   }
    "type": "object"
}
   },
</syntaxhighlight>}}
  "type": "method"
==== AudioLibrary.GetGenres ====
}</syntaxhighlight>}}==== AudioLibrary.GetGenres ====Retrieve all genres<br />'''Permissions:'''* ReadData'''Parameters:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA"># [''[[#Library.Fields.Genre|Library.Fields.Genre]]'' properties]<br /># [''[[#List.Limits|List.Limits]]'' limits]<br /># [''[[#List.Sort|List.Sort]]'' sort]<br /></div>'''Returns:''' <div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">'''Type:''' ''object''<br />'''Properties:'''# ''array[[#Library.Details.Genre|Library.Details.Genre]]'' genres<br /># ''[[#List.LimitsReturned|List.LimitsReturned]]'' limits<br /></div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
Retrieve all genres<br />
'''Permissions:'''
* ReadData
'''Parameters:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
# [''[[#Library.Fields.Genre|Library.Fields.Genre]]'' properties]<br />
# [''[[#List.Limits|List.Limits]]'' limits]<br />
# [''[[#List.Sort|List.Sort]]'' sort]<br />
</div>
'''Returns:'''  
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
'''Type:''' ''object''<br />
'''Properties:'''
# ''[[#List.LimitsReturned|List.LimitsReturned]]'' limits<br />
# ''array[[#Library.Details.Genre|Library.Details.Genre]]'' genres<br />
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
  "type": "method",
   "description": "Retrieve all genres",
   "description": "Retrieve all genres",
  "transport": "Response",
  "permission": "ReadData",
   "params": [
   "params": [
     {
     {
       "name": "properties",
       "$ref": "Library.Fields.Genre",
       "$ref": "Library.Fields.Genre"
       "name": "properties"
     },
     },
     {
     {
       "name": "limits",
       "$ref": "List.Limits",
       "$ref": "List.Limits"
       "name": "limits"
     },
     },
     {
     {
       "name": "sort",
       "$ref": "List.Sort",
       "$ref": "List.Sort"
       "name": "sort"
     }
     }
   ],
   ],
  "permission": "ReadData",
   "returns": {
   "returns": {
    "type": "object",
     "properties": {
     "properties": {
      "genres": {
        "items": {
          "$ref": "Library.Details.Genre"
        },
        "required": true,
        "type": "array"
      },
       "limits": {
       "limits": {
         "$ref": "List.LimitsReturned",
         "$ref": "List.LimitsReturned",
         "required": true
         "required": true
      },
      "genres": {
        "type": "array",
        "required": true,
        "items": {
          "$ref": "Library.Details.Genre"
        }
       }
       }
     }
     },
   }
    "type": "object"
}
   },
</syntaxhighlight>}}
  "type": "method"
==== AudioLibrary.GetProperties ====
}</syntaxhighlight>}}==== AudioLibrary.GetProperties ====Retrieves the values of the music library properties<br />'''Permissions:'''* ReadData'''Parameters:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA"># ''array'' properties<br /></div>'''Returns:''' <div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">'''Type:''' ''[[#Audio.Property.Value|Audio.Property.Value]]''<br /></div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
Retrieves the values of the music library properties<br />
'''Permissions:'''
* ReadData
'''Parameters:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
# ''array'' properties<br />
</div>
'''Returns:'''  
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
'''Type:''' ''[[#Audio.Property.Value|Audio.Property.Value]]''<br />
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
  "type": "method",
   "description": "Retrieves the values of the music library properties",
   "description": "Retrieves the values of the music library properties",
  "transport": "Response",
  "permission": "ReadData",
   "params": [
   "params": [
     {
     {
      "items": {
        "$ref": "Audio.Property.Name"
      },
       "name": "properties",
       "name": "properties",
      "required": true,
       "type": "array",
       "type": "array",
       "uniqueItems": true,
       "uniqueItems": true
      "required": true,
      "items": {
        "$ref": "Audio.Property.Name"
      }
     }
     }
   ],
   ],
  "permission": "ReadData",
   "returns": {
   "returns": {
     "$ref": "Audio.Property.Value",
     "$ref": "Audio.Property.Value"
    "required": true
  },
  }
  "type": "method"
}
}</syntaxhighlight>}}==== AudioLibrary.GetRecentlyAddedAlbums ====Retrieve recently added albums<br />'''Permissions:'''* ReadData'''Parameters:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA"># [''[[#Audio.Fields.Album|Audio.Fields.Album]]'' properties]<br /># [''[[#List.Limits|List.Limits]]'' limits]<br /># [''[[#List.Sort|List.Sort]]'' sort]<br /></div>'''Returns:''' <div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">'''Type:''' ''object''<br />'''Properties:'''# [''array[[#Audio.Details.Album|Audio.Details.Album]]'' albums]<br /># ''[[#List.LimitsReturned|List.LimitsReturned]]'' limits<br /></div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
</syntaxhighlight>}}
==== AudioLibrary.GetRecentlyAddedAlbums ====
Retrieve recently added albums<br />
'''Permissions:'''
* ReadData
'''Parameters:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
# [''[[#Audio.Fields.Album|Audio.Fields.Album]]'' properties]<br />
# [''[[#List.Limits|List.Limits]]'' limits]<br />
# [''[[#List.Sort|List.Sort]]'' sort]<br />
</div>
'''Returns:'''  
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
'''Type:''' ''object''<br />
'''Properties:'''
# ''[[#List.LimitsReturned|List.LimitsReturned]]'' limits<br />
# [''array[[#Audio.Details.Album|Audio.Details.Album]]'' albums]<br />
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
  "type": "method",
   "description": "Retrieve recently added albums",
   "description": "Retrieve recently added albums",
  "transport": "Response",
  "permission": "ReadData",
   "params": [
   "params": [
     {
     {
       "name": "properties",
       "$ref": "Audio.Fields.Album",
       "$ref": "Audio.Fields.Album"
       "name": "properties"
     },
     },
     {
     {
       "name": "limits",
       "$ref": "List.Limits",
       "$ref": "List.Limits"
       "name": "limits"
     },
     },
     {
     {
       "name": "sort",
       "$ref": "List.Sort",
       "$ref": "List.Sort"
       "name": "sort"
     }
     }
   ],
   ],
  "permission": "ReadData",
   "returns": {
   "returns": {
    "type": "object",
     "properties": {
     "properties": {
      "albums": {
        "items": {
          "$ref": "Audio.Details.Album"
        },
        "type": "array"
      },
       "limits": {
       "limits": {
         "$ref": "List.LimitsReturned",
         "$ref": "List.LimitsReturned",
         "required": true
         "required": true
      },
      "albums": {
        "type": "array",
        "items": {
          "$ref": "Audio.Details.Album"
        }
       }
       }
     }
     },
   }
    "type": "object"
}
   },
</syntaxhighlight>}}
  "type": "method"
==== AudioLibrary.GetRecentlyAddedSongs ====
}</syntaxhighlight>}}==== AudioLibrary.GetRecentlyAddedSongs ====Retrieve recently added songs<br />'''Permissions:'''* ReadData'''Parameters:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA"># [''[[#List.Amount|List.Amount]]'' albumlimit = -1] (The amount of recently added albums from which to return the songs)<br /># [''[[#Audio.Fields.Song|Audio.Fields.Song]]'' properties]<br /># [''[[#List.Limits|List.Limits]]'' limits]<br /># [''[[#List.Sort|List.Sort]]'' sort]<br /></div>'''Returns:''' <div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">'''Type:''' ''object''<br />'''Properties:'''# ''[[#List.LimitsReturned|List.LimitsReturned]]'' limits<br /># [''array[[#Audio.Details.Song|Audio.Details.Song]]'' songs]<br /></div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
Retrieve recently added songs<br />
'''Permissions:'''
* ReadData
'''Parameters:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
# [''[[#List.Amount|List.Amount]]'' albumlimit] (The amount of recently added albums from which to return the songs)<br />
# [''[[#Audio.Fields.Song|Audio.Fields.Song]]'' properties]<br />
# [''[[#List.Limits|List.Limits]]'' limits]<br />
# [''[[#List.Sort|List.Sort]]'' sort]<br />
</div>
'''Returns:'''  
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
'''Type:''' ''object''<br />
'''Properties:'''
# ''[[#List.LimitsReturned|List.LimitsReturned]]'' limits<br />
# [''array[[#Audio.Details.Song|Audio.Details.Song]]'' songs]<br />
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
  "type": "method",
   "description": "Retrieve recently added songs",
   "description": "Retrieve recently added songs",
  "transport": "Response",
  "permission": "ReadData",
   "params": [
   "params": [
     {
     {
      "name": "albumlimit",
       "$ref": "List.Amount",
       "$ref": "List.Amount",
       "description": "The amount of recently added albums from which to return the songs"
      "default": -1,
       "description": "The amount of recently added albums from which to return the songs",
      "name": "albumlimit"
     },
     },
     {
     {
       "name": "properties",
       "$ref": "Audio.Fields.Song",
       "$ref": "Audio.Fields.Song"
       "name": "properties"
     },
     },
     {
     {
       "name": "limits",
       "$ref": "List.Limits",
       "$ref": "List.Limits"
       "name": "limits"
     },
     },
     {
     {
       "name": "sort",
       "$ref": "List.Sort",
       "$ref": "List.Sort"
       "name": "sort"
     }
     }
   ],
   ],
  "permission": "ReadData",
   "returns": {
   "returns": {
    "type": "object",
     "properties": {
     "properties": {
       "limits": {
       "limits": {
Line 1,369: Line 1,035:
       },
       },
       "songs": {
       "songs": {
        "type": "array",
         "items": {
         "items": {
           "$ref": "Audio.Details.Song"
           "$ref": "Audio.Details.Song"
         }
         },
        "type": "array"
       }
       }
     }
     },
   }
    "type": "object"
}
   },
</syntaxhighlight>}}
  "type": "method"
==== AudioLibrary.GetRecentlyPlayedAlbums ====
}</syntaxhighlight>}}==== AudioLibrary.GetRecentlyPlayedAlbums ====Retrieve recently played albums<br />'''Permissions:'''* ReadData'''Parameters:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA"># [''[[#Audio.Fields.Album|Audio.Fields.Album]]'' properties]<br /># [''[[#List.Limits|List.Limits]]'' limits]<br /># [''[[#List.Sort|List.Sort]]'' sort]<br /></div>'''Returns:''' <div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">'''Type:''' ''object''<br />'''Properties:'''# [''array[[#Audio.Details.Album|Audio.Details.Album]]'' albums]<br /># ''[[#List.LimitsReturned|List.LimitsReturned]]'' limits<br /></div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
Retrieve recently played albums<br />
'''Permissions:'''
* ReadData
'''Parameters:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
# [''[[#Audio.Fields.Album|Audio.Fields.Album]]'' properties]<br />
# [''[[#List.Limits|List.Limits]]'' limits]<br />
# [''[[#List.Sort|List.Sort]]'' sort]<br />
</div>
'''Returns:'''  
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
'''Type:''' ''object''<br />
'''Properties:'''
# ''[[#List.LimitsReturned|List.LimitsReturned]]'' limits<br />
# [''array[[#Audio.Details.Album|Audio.Details.Album]]'' albums]<br />
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
  "type": "method",
   "description": "Retrieve recently played albums",
   "description": "Retrieve recently played albums",
  "transport": "Response",
  "permission": "ReadData",
   "params": [
   "params": [
     {
     {
       "name": "properties",
       "$ref": "Audio.Fields.Album",
       "$ref": "Audio.Fields.Album"
       "name": "properties"
     },
     },
     {
     {
       "name": "limits",
       "$ref": "List.Limits",
       "$ref": "List.Limits"
       "name": "limits"
     },
     },
     {
     {
       "name": "sort",
       "$ref": "List.Sort",
       "$ref": "List.Sort"
       "name": "sort"
     }
     }
   ],
   ],
  "permission": "ReadData",
   "returns": {
   "returns": {
    "type": "object",
     "properties": {
     "properties": {
      "albums": {
        "items": {
          "$ref": "Audio.Details.Album"
        },
        "type": "array"
      },
       "limits": {
       "limits": {
         "$ref": "List.LimitsReturned",
         "$ref": "List.LimitsReturned",
         "required": true
         "required": true
      },
      "albums": {
        "type": "array",
        "items": {
          "$ref": "Audio.Details.Album"
        }
       }
       }
     }
     },
   }
    "type": "object"
}
   },
</syntaxhighlight>}}
  "type": "method"
==== AudioLibrary.GetRecentlyPlayedSongs ====
}</syntaxhighlight>}}==== AudioLibrary.GetRecentlyPlayedSongs ====Retrieve recently played songs<br />'''Permissions:'''* ReadData'''Parameters:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA"># [''[[#Audio.Fields.Song|Audio.Fields.Song]]'' properties]<br /># [''[[#List.Limits|List.Limits]]'' limits]<br /># [''[[#List.Sort|List.Sort]]'' sort]<br /></div>'''Returns:''' <div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">'''Type:''' ''object''<br />'''Properties:'''# ''[[#List.LimitsReturned|List.LimitsReturned]]'' limits<br /># [''array[[#Audio.Details.Song|Audio.Details.Song]]'' songs]<br /></div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
Retrieve recently played songs<br />
'''Permissions:'''
* ReadData
'''Parameters:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
# [''[[#Audio.Fields.Song|Audio.Fields.Song]]'' properties]<br />
# [''[[#List.Limits|List.Limits]]'' limits]<br />
# [''[[#List.Sort|List.Sort]]'' sort]<br />
</div>
'''Returns:'''  
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
'''Type:''' ''object''<br />
'''Properties:'''
# ''[[#List.LimitsReturned|List.LimitsReturned]]'' limits<br />
# [''array[[#Audio.Details.Song|Audio.Details.Song]]'' songs]<br />
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
  "type": "method",
   "description": "Retrieve recently played songs",
   "description": "Retrieve recently played songs",
  "transport": "Response",
  "permission": "ReadData",
   "params": [
   "params": [
     {
     {
       "name": "properties",
       "$ref": "Audio.Fields.Song",
       "$ref": "Audio.Fields.Song"
       "name": "properties"
     },
     },
     {
     {
       "name": "limits",
       "$ref": "List.Limits",
       "$ref": "List.Limits"
       "name": "limits"
     },
     },
     {
     {
       "name": "sort",
       "$ref": "List.Sort",
       "$ref": "List.Sort"
       "name": "sort"
     }
     }
   ],
   ],
  "permission": "ReadData",
   "returns": {
   "returns": {
    "type": "object",
     "properties": {
     "properties": {
       "limits": {
       "limits": {
Line 1,477: Line 1,101:
       },
       },
       "songs": {
       "songs": {
        "type": "array",
         "items": {
         "items": {
           "$ref": "Audio.Details.Song"
           "$ref": "Audio.Details.Song"
         }
         },
        "type": "array"
       }
       }
     }
     },
   }
    "type": "object"
}
   },
</syntaxhighlight>}}
  "type": "method"
==== AudioLibrary.GetRoles ====
}</syntaxhighlight>}}==== AudioLibrary.GetRoles ====Retrieve all contributor roles<br />'''Permissions:'''* ReadData'''Parameters:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA"># [''[[#Audio.Fields.Role|Audio.Fields.Role]]'' properties]<br /># [''[[#List.Limits|List.Limits]]'' limits]<br /># [''[[#List.Sort|List.Sort]]'' sort]<br /></div>'''Returns:''' <div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">'''Type:''' ''object''<br />'''Properties:'''# ''[[#List.LimitsReturned|List.LimitsReturned]]'' limits<br /># ''array[[#Audio.Details.Role|Audio.Details.Role]]'' roles<br /></div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
Retrieve all contributor roles<br />
'''Permissions:'''
* ReadData
'''Parameters:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
# [''[[#Audio.Fields.Role|Audio.Fields.Role]]'' properties]<br />
# [''[[#List.Limits|List.Limits]]'' limits]<br />
# [''[[#List.Sort|List.Sort]]'' sort]<br />
</div>
'''Returns:'''  
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
'''Type:''' ''object''<br />
'''Properties:'''
# ''[[#List.LimitsReturned|List.LimitsReturned]]'' limits<br />
# ''array[[#Audio.Details.Role|Audio.Details.Role]]'' roles<br />
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
  "type": "method",
   "description": "Retrieve all contributor roles",
   "description": "Retrieve all contributor roles",
  "transport": "Response",
  "permission": "ReadData",
   "params": [
   "params": [
     {
     {
       "name": "properties",
       "$ref": "Audio.Fields.Role",
       "$ref": "Audio.Fields.Role"
       "name": "properties"
     },
     },
     {
     {
       "name": "limits",
       "$ref": "List.Limits",
       "$ref": "List.Limits"
       "name": "limits"
     },
     },
     {
     {
       "name": "sort",
       "$ref": "List.Sort",
       "$ref": "List.Sort"
       "name": "sort"
     }
     }
   ],
   ],
  "permission": "ReadData",
   "returns": {
   "returns": {
    "type": "object",
     "properties": {
     "properties": {
       "limits": {
       "limits": {
Line 1,531: Line 1,134:
       },
       },
       "roles": {
       "roles": {
        "type": "array",
        "required": true,
         "items": {
         "items": {
           "$ref": "Audio.Details.Role"
           "$ref": "Audio.Details.Role"
         }
         },
        "required": true,
        "type": "array"
       }
       }
     }
     },
   }
    "type": "object"
}
   },
</syntaxhighlight>}}
  "type": "method"
==== AudioLibrary.GetSongDetails ====
}</syntaxhighlight>}}==== AudioLibrary.GetSongDetails ====Retrieve details about a specific song<br />'''Permissions:'''* ReadData'''Parameters:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA"># ''[[#Library.Id|Library.Id]]'' songid<br /># [''[[#Audio.Fields.Song|Audio.Fields.Song]]'' properties]<br /></div>'''Returns:''' <div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">'''Type:''' ''object''<br />'''Properties:'''# [''[[#Audio.Details.Song|Audio.Details.Song]]'' songdetails]<br /></div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
Retrieve details about a specific song<br />
'''Permissions:'''
* ReadData
'''Parameters:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
# ''[[#Library.Id|Library.Id]]'' songid<br />
# [''[[#Audio.Fields.Song|Audio.Fields.Song]]'' properties]<br />
</div>
'''Returns:'''  
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
'''Type:''' ''object''<br />
'''Properties:'''
# [''[[#Audio.Details.Song|Audio.Details.Song]]'' songdetails]<br />
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
  "type": "method",
   "description": "Retrieve details about a specific song",
   "description": "Retrieve details about a specific song",
  "transport": "Response",
  "permission": "ReadData",
   "params": [
   "params": [
     {
     {
      "$ref": "Library.Id",
       "name": "songid",
       "name": "songid",
      "$ref": "Library.Id",
       "required": true
       "required": true
     },
     },
     {
     {
       "name": "properties",
       "$ref": "Audio.Fields.Song",
       "$ref": "Audio.Fields.Song"
       "name": "properties"
     }
     }
   ],
   ],
  "permission": "ReadData",
   "returns": {
   "returns": {
    "type": "object",
     "properties": {
     "properties": {
       "songdetails": {
       "songdetails": {
         "$ref": "Audio.Details.Song"
         "$ref": "Audio.Details.Song"
       }
       }
     }
     },
   }
    "type": "object"
}
   },
</syntaxhighlight>}}
  "type": "method"
==== AudioLibrary.GetSongs ====
}</syntaxhighlight>}}==== AudioLibrary.GetSongs ====Retrieve all songs from specified album, artist or genre<br />'''Permissions:'''* ReadData'''Parameters:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA"># [''[[#Audio.Fields.Song|Audio.Fields.Song]]'' properties]<br /># [''[[#List.Limits|List.Limits]]'' limits]<br /># [''[[#List.Sort|List.Sort]]'' sort]<br /># [''mixed: object|object|object|object|object|object|object|object|object|object|[[#List.Filter.Songs|List.Filter.Songs]]'' filter]<br /># [''boolean'' includesingles = True] (Only songs from albums are returned when false, but overidden when singlesonly parameter is true)<br /># [''boolean'' allroles = False] (Whether or not to include all roles when filtering by artist, rather than default of excluding other contributors. When true it overrides any role filter value.)<br /># [''boolean'' singlesonly = False] (Only singles are returned when true, and overides includesingles parameter)<br /></div>'''Returns:''' <div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">'''Type:''' ''object''<br />'''Properties:'''# ''[[#List.LimitsReturned|List.LimitsReturned]]'' limits<br /># [''array[[#Audio.Details.Song|Audio.Details.Song]]'' songs]<br /></div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
Retrieve all songs from specified album, artist or genre<br />
'''Permissions:'''
* ReadData
'''Parameters:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
# [''[[#Audio.Fields.Song|Audio.Fields.Song]]'' properties]<br />
# [''[[#List.Limits|List.Limits]]'' limits]<br />
# [''[[#List.Sort|List.Sort]]'' sort]<br />
# [''mixed: object|object|object|object|object|object|object|object|object|object|[[#List.Filter.Songs|List.Filter.Songs]]'' filter]<br />
# [''boolean'' includesingles = True] (Only songs from albums are returned when false, but overidden when singlesonly parameter is true)<br />
# [''boolean'' allroles = False] (Whether or not to include all roles when filtering by artist, rather than default of excluding other contributors. When true it overrides any role filter value.)<br />
# [''boolean'' singlesonly = False] (Only singles are returned when true, and overides includesingles parameter)<br />
</div>
'''Returns:'''  
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
'''Type:''' ''object''<br />
'''Properties:'''
# ''[[#List.LimitsReturned|List.LimitsReturned]]'' limits<br />
# [''array[[#Audio.Details.Song|Audio.Details.Song]]'' songs]<br />
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
  "type": "method",
   "description": "Retrieve all songs from specified album, artist or genre",
   "description": "Retrieve all songs from specified album, artist or genre",
  "transport": "Response",
  "permission": "ReadData",
   "params": [
   "params": [
     {
     {
       "name": "properties",
       "$ref": "Audio.Fields.Song",
       "$ref": "Audio.Fields.Song"
       "name": "properties"
     },
     },
     {
     {
       "name": "limits",
       "$ref": "List.Limits",
       "$ref": "List.Limits"
       "name": "limits"
     },
     },
     {
     {
       "name": "sort",
       "$ref": "List.Sort",
       "$ref": "List.Sort"
       "name": "sort"
     },
     },
     {
     {
Line 1,627: Line 1,186:
       "type": [
       "type": [
         {
         {
           "type": "object",
           "additionalProperties": false,
           "properties": {
           "properties": {
             "genreid": {
             "genreid": {
               "$ref": "Library.Id",
               "$ref": "Library.Id",
              "required": true,
               "description": "Song genre. Filter for existence of songs with this genre",
               "description": "Song genre. Filter for existence of songs with this genre"
              "required": true
             }
             }
           },
           },
           "additionalProperties": false
           "type": "object"
         },
         },
         {
         {
           "type": "object",
           "additionalProperties": false,
           "properties": {
           "properties": {
             "genre": {
             "genre": {
               "type": "string",
               "description": "Song genre. Filter for existence of songs with this genre",
               "minLength": 1,
               "minLength": 1,
               "required": true,
               "required": true,
               "description": "Song genre. Filter for existence of songs with this genre"
               "type": "string"
             }
             }
           },
           },
           "additionalProperties": false
           "type": "object"
         },
         },
         {
         {
           "type": "object",
           "additionalProperties": false,
           "properties": {
           "properties": {
             "artistid": {
             "artistid": {
Line 1,657: Line 1,216:
             }
             }
           },
           },
           "additionalProperties": false
           "type": "object"
         },
         },
         {
         {
           "type": "object",
           "additionalProperties": false,
           "properties": {
           "properties": {
             "artistid": {
             "artistid": {
Line 1,671: Line 1,230:
             }
             }
           },
           },
           "additionalProperties": false
           "type": "object"
         },
         },
         {
         {
           "type": "object",
           "additionalProperties": false,
           "properties": {
           "properties": {
             "artistid": {
             "artistid": {
Line 1,681: Line 1,240:
             },
             },
             "role": {
             "role": {
              "type": "string",
               "minLength": 1,
               "minLength": 1,
               "required": true
               "required": true,
              "type": "string"
             }
             }
           },
           },
           "additionalProperties": false
           "type": "object"
         },
         },
         {
         {
           "type": "object",
           "additionalProperties": false,
           "properties": {
           "properties": {
             "artist": {
             "artist": {
              "type": "string",
               "minLength": 1,
               "minLength": 1,
               "required": true
               "required": true,
              "type": "string"
             }
             }
           },
           },
           "additionalProperties": false
           "type": "object"
         },
         },
         {
         {
           "type": "object",
           "additionalProperties": false,
           "properties": {
           "properties": {
             "artist": {
             "artist": {
              "type": "string",
               "minLength": 1,
               "minLength": 1,
               "required": true
               "required": true,
              "type": "string"
             },
             },
             "roleid": {
             "roleid": {
Line 1,712: Line 1,271:
             }
             }
           },
           },
           "additionalProperties": false
           "type": "object"
         },
         },
         {
         {
           "type": "object",
           "additionalProperties": false,
           "properties": {
           "properties": {
             "artist": {
             "artist": {
              "type": "string",
               "minLength": 1,
               "minLength": 1,
               "required": true
               "required": true,
              "type": "string"
             },
             },
             "role": {
             "role": {
              "type": "string",
               "minLength": 1,
               "minLength": 1,
               "required": true
               "required": true,
              "type": "string"
             }
             }
           },
           },
           "additionalProperties": false
           "type": "object"
         },
         },
         {
         {
           "type": "object",
           "additionalProperties": false,
           "properties": {
           "properties": {
             "albumid": {
             "albumid": {
Line 1,738: Line 1,297:
             }
             }
           },
           },
           "additionalProperties": false
           "type": "object"
         },
         },
         {
         {
           "type": "object",
           "additionalProperties": false,
           "properties": {
           "properties": {
             "album": {
             "album": {
              "type": "string",
               "minLength": 1,
               "minLength": 1,
               "required": true
               "required": true,
              "type": "string"
             }
             }
           },
           },
           "additionalProperties": false
           "type": "object"
         },
         },
         {
         {
Line 1,757: Line 1,316:
     },
     },
     {
     {
      "default": true,
      "description": "Only songs from albums are returned when false, but overidden when singlesonly parameter is true",
       "name": "includesingles",
       "name": "includesingles",
       "type": "boolean",
       "type": "boolean"
      "default": true,
      "description": "Only songs from albums are returned when false, but overidden when singlesonly parameter is true"
     },
     },
     {
     {
      "default": false,
      "description": "Whether or not to include all roles when filtering by artist, rather than default of excluding other contributors. When true it overrides any role filter value.",
       "name": "allroles",
       "name": "allroles",
       "type": "boolean",
       "type": "boolean"
      "default": false,
      "description": "Whether or not to include all roles when filtering by artist, rather than default of excluding other contributors. When true it overrides any role filter value."
     },
     },
     {
     {
      "default": false,
      "description": "Only singles are returned when true, and overides includesingles parameter",
       "name": "singlesonly",
       "name": "singlesonly",
       "type": "boolean",
       "type": "boolean"
      "default": false,
      "description": "Only singles are returned when true, and overides includesingles parameter"
     }
     }
   ],
   ],
  "permission": "ReadData",
   "returns": {
   "returns": {
    "type": "object",
     "properties": {
     "properties": {
       "limits": {
       "limits": {
Line 1,783: Line 1,342:
       },
       },
       "songs": {
       "songs": {
        "type": "array",
         "items": {
         "items": {
           "$ref": "Audio.Details.Song"
           "$ref": "Audio.Details.Song"
         }
         },
        "type": "array"
       }
       }
     }
     },
   }
    "type": "object"
}
   },
</syntaxhighlight>}}
  "type": "method"
==== AudioLibrary.GetSources ====
}</syntaxhighlight>}}==== AudioLibrary.GetSources ====Get all music sources, including unique ID<br />'''Permissions:'''* ReadData'''Parameters:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA"># [''[[#Library.Fields.Source|Library.Fields.Source]]'' properties]<br /># [''[[#List.Limits|List.Limits]]'' limits]<br /># [''[[#List.Sort|List.Sort]]'' sort]<br /></div>'''Returns:''' <div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">'''Type:''' ''object''<br />'''Properties:'''# ''[[#List.LimitsReturned|List.LimitsReturned]]'' limits<br /># ''array[[#Library.Details.Source|Library.Details.Source]]'' sources<br /></div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
Get all music sources, including unique ID<br />
'''Permissions:'''
* ReadData
'''Parameters:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
# [''[[#Library.Fields.Source|Library.Fields.Source]]'' properties]<br />
# [''[[#List.Limits|List.Limits]]'' limits]<br />
# [''[[#List.Sort|List.Sort]]'' sort]<br />
</div>
'''Returns:'''  
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
'''Type:''' ''object''<br />
'''Properties:'''
# ''[[#List.LimitsReturned|List.LimitsReturned]]'' limits<br />
# ''array[[#Library.Details.Source|Library.Details.Source]]'' sources<br />
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
  "type": "method",
   "description": "Get all music sources, including unique ID",
   "description": "Get all music sources, including unique ID",
  "transport": "Response",
  "permission": "ReadData",
   "params": [
   "params": [
     {
     {
       "name": "properties",
       "$ref": "Library.Fields.Source",
       "$ref": "Library.Fields.Source"
       "name": "properties"
     },
     },
     {
     {
       "name": "limits",
       "$ref": "List.Limits",
       "$ref": "List.Limits"
       "name": "limits"
     },
     },
     {
     {
       "name": "sort",
       "$ref": "List.Sort",
       "$ref": "List.Sort"
       "name": "sort"
     }
     }
   ],
   ],
  "permission": "ReadData",
   "returns": {
   "returns": {
    "type": "object",
     "properties": {
     "properties": {
       "limits": {
       "limits": {
Line 1,837: Line 1,375:
       },
       },
       "sources": {
       "sources": {
        "type": "array",
        "required": true,
         "items": {
         "items": {
           "$ref": "Library.Details.Source"
           "$ref": "Library.Details.Source"
         }
         },
        "required": true,
        "type": "array"
       }
       }
     }
     },
   }
    "type": "object"
}
   },
</syntaxhighlight>}}
  "type": "method"
==== AudioLibrary.Scan ====
}</syntaxhighlight>}}==== AudioLibrary.Scan ====Scans the audio sources for new library items<br />'''Permissions:'''* UpdateData'''Parameters:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA"># [''string'' directory = ""]<br /># [''boolean'' showdialogs = True] (Whether or not to show the progress bar or any other GUI dialog)<br /></div>'''Returns:''' <div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">'''Type:''' ''string''<br /></div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
Scans the audio sources for new library items<br />
'''Permissions:'''
* UpdateData
'''Parameters:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
# [''string'' directory = ""]<br />
# [''boolean'' showdialogs = True] (Whether or not to show the progress bar or any other GUI dialog)<br />
</div>
'''Returns:'''  
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
'''Type:''' ''string''<br />
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
  "type": "method",
   "description": "Scans the audio sources for new library items",
   "description": "Scans the audio sources for new library items",
  "transport": "Response",
  "permission": "UpdateData",
   "params": [
   "params": [
     {
     {
      "default": "",
       "name": "directory",
       "name": "directory",
       "type": "string",
       "type": "string"
      "default": ""
     },
     },
     {
     {
      "default": true,
      "description": "Whether or not to show the progress bar or any other GUI dialog",
       "name": "showdialogs",
       "name": "showdialogs",
       "type": "boolean",
       "type": "boolean"
      "default": true,
      "description": "Whether or not to show the progress bar or any other GUI dialog"
     }
     }
   ],
   ],
  "returns": "string"
}
</syntaxhighlight>}}
==== AudioLibrary.SetAlbumDetails ====
Update the given album with the given details<br />
'''Permissions:'''
* UpdateData
'''Parameters:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
# ''[[#Library.Id|Library.Id]]'' albumid<br />
# [''[[#Optional.String|Optional.String]]'' title]<br />
# [''mixed: [[#Array.String|Array.String]]'' artist = None]<br />
# [''[[#Optional.String|Optional.String]]'' description]<br />
# [''mixed: [[#Array.String|Array.String]]'' genre = None]<br />
# [''mixed: [[#Array.String|Array.String]]'' theme = None]<br />
# [''mixed: [[#Array.String|Array.String]]'' mood = None]<br />
# [''mixed: [[#Array.String|Array.String]]'' style = None]<br />
# [''[[#Optional.String|Optional.String]]'' type]<br />
# [''[[#Optional.String|Optional.String]]'' albumlabel]<br />
# [''[[#Optional.Number|Optional.Number]]'' rating]<br />
# [''[[#Optional.Integer|Optional.Integer]]'' year]<br />
# [''[[#Optional.Integer|Optional.Integer]]'' userrating]<br />
# [''[[#Optional.Integer|Optional.Integer]]'' votes]<br />
# [''[[#Optional.String|Optional.String]]'' musicbrainzalbumid]<br />
# [''[[#Optional.String|Optional.String]]'' musicbrainzreleasegroupid]<br />
# [''[[#Optional.String|Optional.String]]'' sortartist]<br />
# [''[[#Optional.String|Optional.String]]'' displayartist]<br />
# [''mixed: [[#Array.String|Array.String]]'' musicbrainzalbumartistid = None]<br />
# [''mixed: [[#Media.Artwork.Set|Media.Artwork.Set]]'' art = None]<br />
# [''[[#Optional.Boolean|Optional.Boolean]]'' isboxset]<br />
# [''[[#Optional.String|Optional.String]]'' releasedate]<br />
# [''[[#Optional.String|Optional.String]]'' originaldate]<br />
</div>
'''Returns:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
'''Type:''' ''string''<br />
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
  "type": "method",
  "description": "Update the given album with the given details",
  "transport": "Response",
   "permission": "UpdateData",
   "permission": "UpdateData",
   "params": [
  "returns": {
    "type": "string"
  },
  "type": "method"
}</syntaxhighlight>}}==== AudioLibrary.SetAlbumDetails ====Update the given album with the given details<br />'''Permissions:'''* UpdateData'''Parameters:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA"># ''[[#Library.Id|Library.Id]]'' albumid<br /># [''[[#Optional.String|Optional.String]]'' title = None]<br /># [''mixed: null|[[#Array.String|Array.String]]'' artist = None]<br /># [''[[#Optional.String|Optional.String]]'' description = None]<br /># [''mixed: null|[[#Array.String|Array.String]]'' genre = None]<br /># [''mixed: null|[[#Array.String|Array.String]]'' theme = None]<br /># [''mixed: null|[[#Array.String|Array.String]]'' mood = None]<br /># [''mixed: null|[[#Array.String|Array.String]]'' style = None]<br /># [''[[#Optional.String|Optional.String]]'' type = None]<br /># [''[[#Optional.String|Optional.String]]'' albumlabel = None]<br /># [''[[#Optional.Number|Optional.Number]]'' rating = None]<br /># [''[[#Optional.Integer|Optional.Integer]]'' year = None]<br /># [''[[#Optional.Integer|Optional.Integer]]'' userrating = None]<br /># [''[[#Optional.Integer|Optional.Integer]]'' votes = None]<br /># [''[[#Optional.String|Optional.String]]'' musicbrainzalbumid = None]<br /># [''[[#Optional.String|Optional.String]]'' musicbrainzreleasegroupid = None]<br /># [''[[#Optional.String|Optional.String]]'' sortartist = None]<br /># [''[[#Optional.String|Optional.String]]'' displayartist = None]<br /># [''mixed: null|[[#Array.String|Array.String]]'' musicbrainzalbumartistid = None]<br /># [''mixed: null|[[#Media.Artwork.Set|Media.Artwork.Set]]'' art = None]<br /># [''[[#Optional.Boolean|Optional.Boolean]]'' isboxset = None]<br /># [''[[#Optional.String|Optional.String]]'' releasedate = None]<br /># [''[[#Optional.String|Optional.String]]'' originaldate = None]<br /></div>'''Returns:''' <div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">'''Type:''' ''string''<br /></div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
  "description": "Update the given album with the given details",
   "params": [
     {
     {
      "$ref": "Library.Id",
       "name": "albumid",
       "name": "albumid",
      "$ref": "Library.Id",
       "required": true
       "required": true
     },
     },
     {
     {
       "name": "title",
       "$ref": "Optional.String",
       "$ref": "Optional.String"
      "default": null,
       "name": "title"
     },
     },
     {
     {
      "default": null,
       "name": "artist",
       "name": "artist",
       "type": [
       "type": [
        "null",
         {
         {
           "$ref": "Array.String",
           "type": "null"
           "required": true
        },
        {
           "$ref": "Array.String"
         }
         }
       ],
       ]
      "default": null
     },
     },
     {
     {
       "name": "description",
       "$ref": "Optional.String",
       "$ref": "Optional.String"
      "default": null,
       "name": "description"
     },
     },
     {
     {
      "default": null,
       "name": "genre",
       "name": "genre",
       "type": [
       "type": [
        "null",
         {
         {
           "$ref": "Array.String",
           "type": "null"
           "required": true
        },
        {
           "$ref": "Array.String"
         }
         }
       ],
       ]
      "default": null
     },
     },
     {
     {
      "default": null,
       "name": "theme",
       "name": "theme",
       "type": [
       "type": [
        "null",
         {
         {
           "$ref": "Array.String",
           "type": "null"
           "required": true
        },
        {
           "$ref": "Array.String"
         }
         }
       ],
       ]
      "default": null
     },
     },
     {
     {
      "default": null,
       "name": "mood",
       "name": "mood",
       "type": [
       "type": [
        "null",
         {
         {
           "$ref": "Array.String",
           "type": "null"
           "required": true
        },
        {
           "$ref": "Array.String"
         }
         }
       ],
       ]
      "default": null
     },
     },
     {
     {
      "default": null,
       "name": "style",
       "name": "style",
       "type": [
       "type": [
        "null",
         {
         {
           "$ref": "Array.String",
           "type": "null"
           "required": true
        },
        {
           "$ref": "Array.String"
         }
         }
       ],
       ]
      "default": null
     },
     },
     {
     {
       "name": "type",
       "$ref": "Optional.String",
       "$ref": "Optional.String"
      "default": null,
       "name": "type"
     },
     },
     {
     {
       "name": "albumlabel",
       "$ref": "Optional.String",
       "$ref": "Optional.String"
      "default": null,
       "name": "albumlabel"
     },
     },
     {
     {
       "name": "rating",
       "$ref": "Optional.Number",
       "$ref": "Optional.Number"
      "default": null,
       "name": "rating"
     },
     },
     {
     {
       "name": "year",
       "$ref": "Optional.Integer",
       "$ref": "Optional.Integer"
      "default": null,
       "name": "year"
     },
     },
     {
     {
       "name": "userrating",
       "$ref": "Optional.Integer",
       "$ref": "Optional.Integer"
      "default": null,
       "name": "userrating"
     },
     },
     {
     {
       "name": "votes",
       "$ref": "Optional.Integer",
       "$ref": "Optional.Integer"
      "default": null,
       "name": "votes"
     },
     },
     {
     {
       "name": "musicbrainzalbumid",
       "$ref": "Optional.String",
       "$ref": "Optional.String"
      "default": null,
       "name": "musicbrainzalbumid"
     },
     },
     {
     {
       "name": "musicbrainzreleasegroupid",
       "$ref": "Optional.String",
       "$ref": "Optional.String"
      "default": null,
       "name": "musicbrainzreleasegroupid"
     },
     },
     {
     {
       "name": "sortartist",
       "$ref": "Optional.String",
       "$ref": "Optional.String"
      "default": null,
       "name": "sortartist"
     },
     },
     {
     {
       "name": "displayartist",
       "$ref": "Optional.String",
       "$ref": "Optional.String"
      "default": null,
       "name": "displayartist"
     },
     },
     {
     {
      "default": null,
       "name": "musicbrainzalbumartistid",
       "name": "musicbrainzalbumartistid",
       "type": [
       "type": [
        "null",
         {
         {
           "$ref": "Array.String",
           "type": "null"
           "required": true
        },
        {
           "$ref": "Array.String"
         }
         }
       ],
       ]
      "default": null
     },
     },
     {
     {
      "default": null,
       "name": "art",
       "name": "art",
       "type": [
       "type": [
        "null",
         {
         {
           "$ref": "Media.Artwork.Set",
          "type": "null"
          "required": true
        },
        {
           "$ref": "Media.Artwork.Set"
         }
         }
       ],
       ]
      "default": null
     },
     },
     {
     {
       "name": "isboxset",
       "$ref": "Optional.Boolean",
       "$ref": "Optional.Boolean"
      "default": null,
       "name": "isboxset"
     },
     },
     {
     {
       "name": "releasedate",
       "$ref": "Optional.String",
       "$ref": "Optional.String"
      "default": null,
       "name": "releasedate"
     },
     },
     {
     {
       "name": "originaldate",
       "$ref": "Optional.String",
       "$ref": "Optional.String"
      "default": null,
       "name": "originaldate"
     }
     }
   ],
   ],
   "returns": "string"
  "permission": "UpdateData",
}
   "returns": {
</syntaxhighlight>}}
    "type": "string"
==== AudioLibrary.SetArtistDetails ====
  },
Update the given artist with the given details<br />
  "type": "method"
'''Permissions:'''
}</syntaxhighlight>}}==== AudioLibrary.SetArtistDetails ====Update the given artist with the given details<br />'''Permissions:'''* UpdateData'''Parameters:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA"># ''[[#Library.Id|Library.Id]]'' artistid<br /># [''[[#Optional.String|Optional.String]]'' artist = None]<br /># [''mixed: null|[[#Array.String|Array.String]]'' instrument = None]<br /># [''mixed: null|[[#Array.String|Array.String]]'' style = None]<br /># [''mixed: null|[[#Array.String|Array.String]]'' mood = None]<br /># [''[[#Optional.String|Optional.String]]'' born = None]<br /># [''[[#Optional.String|Optional.String]]'' formed = None]<br /># [''[[#Optional.String|Optional.String]]'' description = None]<br /># [''mixed: null|[[#Array.String|Array.String]]'' genre = None]<br /># [''[[#Optional.String|Optional.String]]'' died = None]<br /># [''[[#Optional.String|Optional.String]]'' disbanded = None]<br /># [''mixed: null|[[#Array.String|Array.String]]'' yearsactive = None]<br /># [''[[#Optional.String|Optional.String]]'' musicbrainzartistid = None]<br /># [''[[#Optional.String|Optional.String]]'' sortname = None]<br /># [''[[#Optional.String|Optional.String]]'' type = None]<br /># [''[[#Optional.String|Optional.String]]'' gender = None]<br /># [''[[#Optional.String|Optional.String]]'' disambiguation = None]<br /># [''mixed: null|[[#Media.Artwork.Set|Media.Artwork.Set]]'' art = None]<br /></div>'''Returns:''' <div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">'''Type:''' ''string''<br /></div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
* UpdateData
'''Parameters:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
# ''[[#Library.Id|Library.Id]]'' artistid<br />
# [''[[#Optional.String|Optional.String]]'' artist]<br />
# [''mixed: [[#Array.String|Array.String]]'' instrument = None]<br />
# [''mixed: [[#Array.String|Array.String]]'' style = None]<br />
# [''mixed: [[#Array.String|Array.String]]'' mood = None]<br />
# [''[[#Optional.String|Optional.String]]'' born]<br />
# [''[[#Optional.String|Optional.String]]'' formed]<br />
# [''[[#Optional.String|Optional.String]]'' description]<br />
# [''mixed: [[#Array.String|Array.String]]'' genre = None]<br />
# [''[[#Optional.String|Optional.String]]'' died]<br />
# [''[[#Optional.String|Optional.String]]'' disbanded]<br />
# [''mixed: [[#Array.String|Array.String]]'' yearsactive = None]<br />
# [''[[#Optional.String|Optional.String]]'' musicbrainzartistid]<br />
# [''[[#Optional.String|Optional.String]]'' sortname]<br />
# [''[[#Optional.String|Optional.String]]'' type]<br />
# [''[[#Optional.String|Optional.String]]'' gender]<br />
# [''[[#Optional.String|Optional.String]]'' disambiguation]<br />
# [''mixed: [[#Media.Artwork.Set|Media.Artwork.Set]]'' art = None]<br />
</div>
'''Returns:'''  
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
'''Type:''' ''string''<br />
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
  "type": "method",
   "description": "Update the given artist with the given details",
   "description": "Update the given artist with the given details",
  "transport": "Response",
  "permission": "UpdateData",
   "params": [
   "params": [
     {
     {
      "$ref": "Library.Id",
       "name": "artistid",
       "name": "artistid",
      "$ref": "Library.Id",
       "required": true
       "required": true
     },
     },
     {
     {
       "name": "artist",
       "$ref": "Optional.String",
       "$ref": "Optional.String"
      "default": null,
       "name": "artist"
     },
     },
     {
     {
      "default": null,
       "name": "instrument",
       "name": "instrument",
       "type": [
       "type": [
        "null",
         {
         {
           "$ref": "Array.String",
           "type": "null"
           "required": true
        },
        {
           "$ref": "Array.String"
         }
         }
       ],
       ]
      "default": null
     },
     },
     {
     {
      "default": null,
       "name": "style",
       "name": "style",
       "type": [
       "type": [
        "null",
         {
         {
           "$ref": "Array.String",
           "type": "null"
           "required": true
        },
        {
           "$ref": "Array.String"
         }
         }
       ],
       ]
      "default": null
     },
     },
     {
     {
      "default": null,
       "name": "mood",
       "name": "mood",
       "type": [
       "type": [
        "null",
         {
         {
           "$ref": "Array.String",
           "type": "null"
           "required": true
        },
        {
           "$ref": "Array.String"
         }
         }
       ],
       ]
      "default": null
     },
     },
     {
     {
       "name": "born",
       "$ref": "Optional.String",
       "$ref": "Optional.String"
      "default": null,
       "name": "born"
     },
     },
     {
     {
       "name": "formed",
       "$ref": "Optional.String",
       "$ref": "Optional.String"
      "default": null,
       "name": "formed"
     },
     },
     {
     {
       "name": "description",
       "$ref": "Optional.String",
       "$ref": "Optional.String"
      "default": null,
       "name": "description"
     },
     },
     {
     {
      "default": null,
       "name": "genre",
       "name": "genre",
       "type": [
       "type": [
        "null",
         {
         {
           "$ref": "Array.String",
           "type": "null"
           "required": true
        },
        {
           "$ref": "Array.String"
         }
         }
       ],
       ]
      "default": null
     },
     },
     {
     {
       "name": "died",
       "$ref": "Optional.String",
       "$ref": "Optional.String"
      "default": null,
       "name": "died"
     },
     },
     {
     {
       "name": "disbanded",
       "$ref": "Optional.String",
       "$ref": "Optional.String"
      "default": null,
       "name": "disbanded"
     },
     },
     {
     {
      "default": null,
       "name": "yearsactive",
       "name": "yearsactive",
       "type": [
       "type": [
        "null",
         {
         {
           "$ref": "Array.String",
           "type": "null"
           "required": true
        },
        {
           "$ref": "Array.String"
         }
         }
       ],
       ]
      "default": null
     },
     },
     {
     {
       "name": "musicbrainzartistid",
       "$ref": "Optional.String",
       "$ref": "Optional.String"
      "default": null,
       "name": "musicbrainzartistid"
     },
     },
     {
     {
       "name": "sortname",
       "$ref": "Optional.String",
       "$ref": "Optional.String"
      "default": null,
       "name": "sortname"
     },
     },
     {
     {
       "name": "type",
       "$ref": "Optional.String",
       "$ref": "Optional.String"
      "default": null,
       "name": "type"
     },
     },
     {
     {
       "name": "gender",
       "$ref": "Optional.String",
       "$ref": "Optional.String"
      "default": null,
       "name": "gender"
     },
     },
     {
     {
       "name": "disambiguation",
       "$ref": "Optional.String",
       "$ref": "Optional.String"
      "default": null,
       "name": "disambiguation"
     },
     },
     {
     {
      "default": null,
       "name": "art",
       "name": "art",
       "type": [
       "type": [
        "null",
         {
         {
           "$ref": "Media.Artwork.Set",
          "type": "null"
          "required": true
        },
        {
           "$ref": "Media.Artwork.Set"
         }
         }
       ],
       ]
      "default": null
     }
     }
   ],
   ],
   "returns": "string"
  "permission": "UpdateData",
}
   "returns": {
</syntaxhighlight>}}
    "type": "string"
==== AudioLibrary.SetSongDetails ====
  },
Update the given song with the given details<br />
  "type": "method"
'''Permissions:'''
}</syntaxhighlight>}}==== AudioLibrary.SetSongDetails ====Update the given song with the given details<br />'''Permissions:'''* UpdateData'''Parameters:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA"># ''[[#Library.Id|Library.Id]]'' songid<br /># [''[[#Optional.String|Optional.String]]'' title = None]<br /># [''mixed: null|[[#Array.String|Array.String]]'' artist = None]<br /># [''mixed: null|[[#Array.String|Array.String]]'' genre = None]<br /># [''[[#Optional.Integer|Optional.Integer]]'' year = None]<br /># [''[[#Optional.Number|Optional.Number]]'' rating = None]<br /># [''[[#Optional.Integer|Optional.Integer]]'' track = None]<br /># [''[[#Optional.Integer|Optional.Integer]]'' disc = None]<br /># [''[[#Optional.Integer|Optional.Integer]]'' duration = None]<br /># [''[[#Optional.String|Optional.String]]'' comment = None]<br /># [''[[#Optional.String|Optional.String]]'' musicbrainztrackid = None]<br /># [''[[#Optional.String|Optional.String]]'' musicbrainzartistid = None]<br /># [''[[#Optional.Integer|Optional.Integer]]'' playcount = None]<br /># [''[[#Optional.String|Optional.String]]'' lastplayed = None]<br /># [''[[#Optional.Integer|Optional.Integer]]'' userrating = None]<br /># [''[[#Optional.Integer|Optional.Integer]]'' votes = None]<br /># [''[[#Optional.String|Optional.String]]'' displayartist = None]<br /># [''[[#Optional.String|Optional.String]]'' sortartist = None]<br /># [''[[#Optional.String|Optional.String]]'' mood = None]<br /># [''mixed: null|[[#Media.Artwork.Set|Media.Artwork.Set]]'' art = None]<br /># [''[[#Optional.String|Optional.String]]'' disctitle = None]<br /># [''[[#Optional.String|Optional.String]]'' releasedate = None]<br /># [''[[#Optional.String|Optional.String]]'' originaldate = None]<br /># [''[[#Optional.Integer|Optional.Integer]]'' bpm = None]<br /></div>'''Returns:''' <div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">'''Type:''' ''string''<br /></div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
* UpdateData
'''Parameters:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
# ''[[#Library.Id|Library.Id]]'' songid<br />
# [''[[#Optional.String|Optional.String]]'' title]<br />
# [''mixed: [[#Array.String|Array.String]]'' artist = None]<br />
# [''mixed: [[#Array.String|Array.String]]'' genre = None]<br />
# [''[[#Optional.Integer|Optional.Integer]]'' year]<br />
# [''[[#Optional.Number|Optional.Number]]'' rating]<br />
# [''[[#Optional.Integer|Optional.Integer]]'' track]<br />
# [''[[#Optional.Integer|Optional.Integer]]'' disc]<br />
# [''[[#Optional.Integer|Optional.Integer]]'' duration]<br />
# [''[[#Optional.String|Optional.String]]'' comment]<br />
# [''[[#Optional.String|Optional.String]]'' musicbrainztrackid]<br />
# [''[[#Optional.String|Optional.String]]'' musicbrainzartistid]<br />
# [''[[#Optional.Integer|Optional.Integer]]'' playcount]<br />
# [''[[#Optional.String|Optional.String]]'' lastplayed]<br />
# [''[[#Optional.Integer|Optional.Integer]]'' userrating]<br />
# [''[[#Optional.Integer|Optional.Integer]]'' votes]<br />
# [''[[#Optional.String|Optional.String]]'' displayartist]<br />
# [''[[#Optional.String|Optional.String]]'' sortartist]<br />
# [''[[#Optional.String|Optional.String]]'' mood]<br />
# [''mixed: [[#Media.Artwork.Set|Media.Artwork.Set]]'' art = None]<br />
# [''[[#Optional.String|Optional.String]]'' disctitle]<br />
# [''[[#Optional.String|Optional.String]]'' releasedate]<br />
# [''[[#Optional.String|Optional.String]]'' originaldate]<br />
# [''[[#Optional.Integer|Optional.Integer]]'' bpm]<br />
</div>
'''Returns:'''  
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
'''Type:''' ''string''<br />
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
  "type": "method",
   "description": "Update the given song with the given details",
   "description": "Update the given song with the given details",
  "transport": "Response",
  "permission": "UpdateData",
   "params": [
   "params": [
     {
     {
      "$ref": "Library.Id",
       "name": "songid",
       "name": "songid",
      "$ref": "Library.Id",
       "required": true
       "required": true
     },
     },
     {
     {
       "name": "title",
       "$ref": "Optional.String",
       "$ref": "Optional.String"
      "default": null,
       "name": "title"
     },
     },
     {
     {
      "default": null,
       "name": "artist",
       "name": "artist",
       "type": [
       "type": [
        "null",
         {
         {
           "$ref": "Array.String",
           "type": "null"
           "required": true
        },
        {
           "$ref": "Array.String"
         }
         }
       ],
       ]
      "default": null
     },
     },
     {
     {
      "default": null,
       "name": "genre",
       "name": "genre",
       "type": [
       "type": [
        "null",
         {
         {
           "$ref": "Array.String",
           "type": "null"
           "required": true
        },
        {
           "$ref": "Array.String"
         }
         }
       ],
       ]
      "default": null
     },
     },
     {
     {
       "name": "year",
       "$ref": "Optional.Integer",
       "$ref": "Optional.Integer"
      "default": null,
       "name": "year"
     },
     },
     {
     {
       "name": "rating",
       "$ref": "Optional.Number",
       "$ref": "Optional.Number"
      "default": null,
       "name": "rating"
     },
     },
     {
     {
       "name": "track",
       "$ref": "Optional.Integer",
       "$ref": "Optional.Integer"
      "default": null,
       "name": "track"
     },
     },
     {
     {
       "name": "disc",
       "$ref": "Optional.Integer",
       "$ref": "Optional.Integer"
      "default": null,
       "name": "disc"
     },
     },
     {
     {
       "name": "duration",
       "$ref": "Optional.Integer",
       "$ref": "Optional.Integer"
      "default": null,
       "name": "duration"
     },
     },
     {
     {
       "name": "comment",
       "$ref": "Optional.String",
       "$ref": "Optional.String"
      "default": null,
       "name": "comment"
     },
     },
     {
     {
       "name": "musicbrainztrackid",
       "$ref": "Optional.String",
       "$ref": "Optional.String"
      "default": null,
       "name": "musicbrainztrackid"
     },
     },
     {
     {
       "name": "musicbrainzartistid",
       "$ref": "Optional.String",
       "$ref": "Optional.String"
      "default": null,
       "name": "musicbrainzartistid"
     },
     },
     {
     {
       "name": "playcount",
       "$ref": "Optional.Integer",
       "$ref": "Optional.Integer"
      "default": null,
       "name": "playcount"
     },
     },
     {
     {
       "name": "lastplayed",
       "$ref": "Optional.String",
       "$ref": "Optional.String"
      "default": null,
       "name": "lastplayed"
     },
     },
     {
     {
       "name": "userrating",
       "$ref": "Optional.Integer",
       "$ref": "Optional.Integer"
      "default": null,
       "name": "userrating"
     },
     },
     {
     {
       "name": "votes",
       "$ref": "Optional.Integer",
       "$ref": "Optional.Integer"
      "default": null,
       "name": "votes"
     },
     },
     {
     {
       "name": "displayartist",
       "$ref": "Optional.String",
       "$ref": "Optional.String"
      "default": null,
       "name": "displayartist"
     },
     },
     {
     {
       "name": "sortartist",
       "$ref": "Optional.String",
       "$ref": "Optional.String"
      "default": null,
       "name": "sortartist"
     },
     },
     {
     {
       "name": "mood",
       "$ref": "Optional.String",
       "$ref": "Optional.String"
      "default": null,
       "name": "mood"
     },
     },
     {
     {
      "default": null,
       "name": "art",
       "name": "art",
       "type": [
       "type": [
        "null",
         {
         {
           "$ref": "Media.Artwork.Set",
          "type": "null"
          "required": true
        },
        {
           "$ref": "Media.Artwork.Set"
         }
         }
       ],
       ]
      "default": null
     },
     },
     {
     {
       "name": "disctitle",
       "$ref": "Optional.String",
       "$ref": "Optional.String"
      "default": null,
       "name": "disctitle"
     },
     },
     {
     {
       "name": "releasedate",
       "$ref": "Optional.String",
       "$ref": "Optional.String"
      "default": null,
       "name": "releasedate"
     },
     },
     {
     {
       "name": "originaldate",
       "$ref": "Optional.String",
       "$ref": "Optional.String"
      "default": null,
       "name": "originaldate"
     },
     },
     {
     {
       "name": "bpm",
       "$ref": "Optional.Integer",
       "$ref": "Optional.Integer"
      "default": null,
       "name": "bpm"
     }
     }
   ],
   ],
   "returns": "string"
  "permission": "UpdateData",
}
   "returns": {
</syntaxhighlight>}}
    "type": "string"
=== Favourites ===
  },
==== Favourites.AddFavourite ====
  "type": "method"
Add a favourite with the given details<br />
}</syntaxhighlight>}}=== Favourites ======= Favourites.AddFavourite ====Add a favourite with the given details<br />'''Permissions:'''* UpdateData'''Parameters:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA"># ''string'' title<br /># ''[[#Favourite.Type|Favourite.Type]]'' type<br /># [''[[#Optional.String|Optional.String]]'' path = None] (Required for media, script and androidapp favourites types)<br /># [''[[#Optional.String|Optional.String]]'' window = None] (Required for window favourite type)<br /># [''[[#Optional.String|Optional.String]]'' windowparameter = None]<br /># [''[[#Optional.String|Optional.String]]'' thumbnail = None]<br /></div>'''Returns:''' <div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">'''Type:''' ''string''<br /></div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
'''Permissions:'''
* UpdateData
'''Parameters:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
# ''string'' title<br />
# ''[[#Favourite.Type|Favourite.Type]]'' type<br />
# [''[[#Optional.String|Optional.String]]'' path] (Required for media, script and androidapp favourites types)<br />
# [''[[#Optional.String|Optional.String]]'' window] (Required for window favourite type)<br />
# [''[[#Optional.String|Optional.String]]'' windowparameter]<br />
# [''[[#Optional.String|Optional.String]]'' thumbnail]<br />
</div>
'''Returns:'''  
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
'''Type:''' ''string''<br />
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
  "type": "method",
   "description": "Add a favourite with the given details",
   "description": "Add a favourite with the given details",
  "transport": "Response",
  "permission": "UpdateData",
   "params": [
   "params": [
     {
     {
       "name": "title",
       "name": "title",
       "type": "string",
       "required": true,
       "required": true
       "type": "string"
     },
     },
     {
     {
      "$ref": "Favourite.Type",
       "name": "type",
       "name": "type",
      "$ref": "Favourite.Type",
       "required": true
       "required": true
     },
     },
     {
     {
      "name": "path",
       "$ref": "Optional.String",
       "$ref": "Optional.String",
       "description": "Required for media, script and androidapp favourites types"
      "default": null,
       "description": "Required for media, script and androidapp favourites types",
      "name": "path"
     },
     },
     {
     {
      "name": "window",
       "$ref": "Optional.String",
       "$ref": "Optional.String",
       "description": "Required for window favourite type"
      "default": null,
       "description": "Required for window favourite type",
      "name": "window"
     },
     },
     {
     {
       "name": "windowparameter",
       "$ref": "Optional.String",
       "$ref": "Optional.String"
      "default": null,
       "name": "windowparameter"
     },
     },
     {
     {
       "name": "thumbnail",
       "$ref": "Optional.String",
       "$ref": "Optional.String"
      "default": null,
       "name": "thumbnail"
     }
     }
   ],
   ],
   "returns": "string"
  "permission": "UpdateData",
}
   "returns": {
</syntaxhighlight>}}
    "type": "string"
==== Favourites.GetFavourites ====
  },
Retrieve all favourites<br />
  "type": "method"
'''Permissions:'''
}</syntaxhighlight>}}==== Favourites.GetFavourites ====Retrieve all favourites<br />'''Permissions:'''* ReadData'''Parameters:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA"># [''mixed: null|[[#Favourite.Type|Favourite.Type]]'' type = None]<br /># [''[[#Favourite.Fields.Favourite|Favourite.Fields.Favourite]]'' properties]<br /></div>'''Returns:''' <div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">'''Type:''' ''object''<br />'''Properties:'''# [''array[[#Favourite.Details.Favourite|Favourite.Details.Favourite]]'' favourites]<br /># ''[[#List.LimitsReturned|List.LimitsReturned]]'' limits<br /></div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
* ReadData
'''Parameters:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
# [''mixed: [[#Favourite.Type|Favourite.Type]]'' type = None]<br />
# [''[[#Favourite.Fields.Favourite|Favourite.Fields.Favourite]]'' properties]<br />
</div>
'''Returns:'''  
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
'''Type:''' ''object''<br />
'''Properties:'''
# ''[[#List.LimitsReturned|List.LimitsReturned]]'' limits<br />
# [''array[[#Favourite.Details.Favourite|Favourite.Details.Favourite]]'' favourites]<br />
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
  "type": "method",
   "description": "Retrieve all favourites",
   "description": "Retrieve all favourites",
  "transport": "Response",
  "permission": "ReadData",
   "params": [
   "params": [
     {
     {
      "default": null,
       "name": "type",
       "name": "type",
       "type": [
       "type": [
         "null",
         {
          "type": "null"
        },
         {
         {
           "$ref": "Favourite.Type"
           "$ref": "Favourite.Type"
         }
         }
       ],
       ]
      "default": null
     },
     },
     {
     {
       "name": "properties",
       "$ref": "Favourite.Fields.Favourite",
       "$ref": "Favourite.Fields.Favourite"
       "name": "properties"
     }
     }
   ],
   ],
  "permission": "ReadData",
   "returns": {
   "returns": {
    "type": "object",
     "properties": {
     "properties": {
      "favourites": {
        "items": {
          "$ref": "Favourite.Details.Favourite"
        },
        "type": "array"
      },
       "limits": {
       "limits": {
         "$ref": "List.LimitsReturned",
         "$ref": "List.LimitsReturned",
         "required": true
         "required": true
      },
      "favourites": {
        "type": "array",
        "items": {
          "$ref": "Favourite.Details.Favourite"
        }
       }
       }
     }
     },
  }
     "type": "object"
}
   },
</syntaxhighlight>}}
   "type": "method"
=== Files ===
}</syntaxhighlight>}}=== Files ======= Files.GetDirectory ====Get the directories and files in the given directory<br />'''Permissions:'''* ReadData'''Parameters:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA"># ''string'' directory<br /># [''[[#Files.Media|Files.Media]]'' media = files]<br /># [''[[#List.Fields.Files|List.Fields.Files]]'' properties]<br /># [''[[#List.Sort|List.Sort]]'' sort]<br /># [''[[#List.Limits|List.Limits]]'' limits] (Limits are applied after getting the directory content thus retrieval is not faster when they are applied.)<br /></div>'''Returns:''' <div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">'''Type:''' ''object''<br />'''Properties:'''# ''array[[#List.Item.File|List.Item.File]]'' files<br /># ''[[#List.LimitsReturned|List.LimitsReturned]]'' limits<br /></div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
==== Files.Download ====
Downloads the given file<br />
'''Permissions:'''
* ReadData
'''Parameters:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
# ''string'' path<br />
</div>
'''Returns:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
'''Type:''' ''any''<br />
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
  "type": "method",
  "description": "Downloads the given file",
  "transport": [
     "Response",
    "FileDownloadDirect"
  ],
  "permission": "ReadData",
   "params": [
    {
      "name": "path",
      "type": "string",
      "required": true
    }
  ],
   "returns": {
    "type": "any",
    "required": true
  }
}
</syntaxhighlight>}}
==== Files.GetDirectory ====
Get the directories and files in the given directory<br />
'''Permissions:'''
* ReadData
'''Parameters:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
# ''string'' directory<br />
# [''[[#Files.Media|Files.Media]]'' media = files]<br />
# [''[[#List.Fields.Files|List.Fields.Files]]'' properties]<br />
# [''[[#List.Sort|List.Sort]]'' sort]<br />
# [''[[#List.Limits|List.Limits]]'' limits] (Limits are applied after getting the directory content thus retrieval is not faster when they are applied.)<br />
</div>
'''Returns:'''  
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
'''Type:''' ''object''<br />
'''Properties:'''
# ''[[#List.LimitsReturned|List.LimitsReturned]]'' limits<br />
# ''array[[#List.Item.File|List.Item.File]]'' files<br />
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
  "type": "method",
   "description": "Get the directories and files in the given directory",
   "description": "Get the directories and files in the given directory",
  "transport": "Response",
  "permission": "ReadData",
   "params": [
   "params": [
     {
     {
       "name": "directory",
       "name": "directory",
       "type": "string",
       "required": true,
       "required": true
       "type": "string"
     },
     },
     {
     {
      "name": "media",
       "$ref": "Files.Media",
       "$ref": "Files.Media",
       "default": "files"
       "default": "files",
      "name": "media"
     },
     },
     {
     {
       "name": "properties",
       "$ref": "List.Fields.Files",
       "$ref": "List.Fields.Files"
       "name": "properties"
     },
     },
     {
     {
       "name": "sort",
       "$ref": "List.Sort",
       "$ref": "List.Sort"
       "name": "sort"
     },
     },
     {
     {
      "name": "limits",
       "$ref": "List.Limits",
       "$ref": "List.Limits",
       "description": "Limits are applied after getting the directory content thus retrieval is not faster when they are applied."
       "description": "Limits are applied after getting the directory content thus retrieval is not faster when they are applied.",
      "name": "limits"
     }
     }
   ],
   ],
  "permission": "ReadData",
   "returns": {
   "returns": {
    "type": "object",
     "properties": {
     "properties": {
      "limits": {
        "$ref": "List.LimitsReturned",
        "required": true
      },
       "files": {
       "files": {
        "type": "array",
         "items": {
         "items": {
           "$ref": "List.Item.File"
           "$ref": "List.Item.File"
         },
         },
        "required": true,
        "type": "array"
      },
      "limits": {
        "$ref": "List.LimitsReturned",
         "required": true
         "required": true
       }
       }
     }
     },
   }
    "type": "object"
}
   },
</syntaxhighlight>}}
  "type": "method"
==== Files.GetFileDetails ====
}</syntaxhighlight>}}==== Files.GetFileDetails ====Get details for a specific file<br />'''Permissions:'''* ReadData'''Parameters:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA"># ''string'' file (Full path to the file)<br /># [''[[#Files.Media|Files.Media]]'' media = files]<br /># [''[[#List.Fields.Files|List.Fields.Files]]'' properties]<br /></div>'''Returns:''' <div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">'''Type:''' ''object''<br />'''Properties:'''# ''[[#List.Item.File|List.Item.File]]'' filedetails<br /></div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
Get details for a specific file<br />
'''Permissions:'''
* ReadData
'''Parameters:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
# ''string'' file (Full path to the file)<br />
# [''[[#Files.Media|Files.Media]]'' media = files]<br />
# [''[[#List.Fields.Files|List.Fields.Files]]'' properties]<br />
</div>
'''Returns:'''  
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
'''Type:''' ''object''<br />
'''Properties:'''
# ''[[#List.Item.File|List.Item.File]]'' filedetails<br />
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
  "type": "method",
   "description": "Get details for a specific file",
   "description": "Get details for a specific file",
  "transport": "Response",
  "permission": "ReadData",
   "params": [
   "params": [
     {
     {
      "description": "Full path to the file",
       "name": "file",
       "name": "file",
      "type": "string",
       "required": true,
       "required": true,
       "description": "Full path to the file"
       "type": "string"
     },
     },
     {
     {
      "name": "media",
       "$ref": "Files.Media",
       "$ref": "Files.Media",
       "default": "files"
       "default": "files",
      "name": "media"
     },
     },
     {
     {
       "name": "properties",
       "$ref": "List.Fields.Files",
       "$ref": "List.Fields.Files"
       "name": "properties"
     }
     }
   ],
   ],
  "permission": "ReadData",
   "returns": {
   "returns": {
    "type": "object",
     "properties": {
     "properties": {
       "filedetails": {
       "filedetails": {
Line 2,649: Line 2,018:
         "required": true
         "required": true
       }
       }
     }
     },
   }
    "type": "object"
}
   },
</syntaxhighlight>}}
  "type": "method"
==== Files.GetSources ====
}</syntaxhighlight>}}==== Files.GetSources ====Get the sources of the media windows<br />'''Permissions:'''* ReadData'''Parameters:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA"># ''[[#Files.Media|Files.Media]]'' media<br /># [''[[#List.Limits|List.Limits]]'' limits]<br /># [''[[#List.Sort|List.Sort]]'' sort]<br /></div>'''Returns:''' <div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">'''Type:''' ''object''<br />'''Properties:'''# ''[[#List.LimitsReturned|List.LimitsReturned]]'' limits<br /># ''[[#List.Items.Sources|List.Items.Sources]]'' sources<br /></div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
Get the sources of the media windows<br />
'''Permissions:'''
* ReadData
'''Parameters:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
# ''[[#Files.Media|Files.Media]]'' media<br />
# [''[[#List.Limits|List.Limits]]'' limits]<br />
# [''[[#List.Sort|List.Sort]]'' sort]<br />
</div>
'''Returns:'''  
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
'''Type:''' ''object''<br />
'''Properties:'''
# ''[[#List.LimitsReturned|List.LimitsReturned]]'' limits<br />
# ''[[#List.Items.Sources|List.Items.Sources]]'' sources<br />
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
  "type": "method",
   "description": "Get the sources of the media windows",
   "description": "Get the sources of the media windows",
  "transport": "Response",
  "permission": "ReadData",
   "params": [
   "params": [
     {
     {
      "$ref": "Files.Media",
       "name": "media",
       "name": "media",
      "$ref": "Files.Media",
       "required": true
       "required": true
     },
     },
     {
     {
       "name": "limits",
       "$ref": "List.Limits",
       "$ref": "List.Limits"
       "name": "limits"
     },
     },
     {
     {
       "name": "sort",
       "$ref": "List.Sort",
       "$ref": "List.Sort"
       "name": "sort"
     }
     }
   ],
   ],
  "permission": "ReadData",
   "returns": {
   "returns": {
    "type": "object",
     "properties": {
     "properties": {
       "limits": {
       "limits": {
Line 2,702: Line 2,050:
         "required": true
         "required": true
       }
       }
     }
     },
  }
     "type": "object"
}
   },
</syntaxhighlight>}}
   "type": "method"
==== Files.PrepareDownload ====
}</syntaxhighlight>}}==== Files.SetFileDetails ====Update the given specific file with the given details<br />'''Permissions:'''* UpdateData'''Parameters:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA"># ''string'' file (Full path to the file)<br /># ''[[#Files.Media|Files.Media]]'' media (File type to update correct database. Currently only "video" is supported.)<br /># [''[[#Optional.Integer|Optional.Integer]]'' playcount = None]<br /># [''[[#Optional.String|Optional.String]]'' lastplayed = None] (Setting a valid lastplayed without a playcount will force playcount to 1.)<br /># [''mixed: null|[[#Video.Resume|Video.Resume]]'' resume = None]<br /></div>'''Returns:''' <div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">'''Type:''' ''string''<br /></div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
Provides a way to download a given file (e.g. providing an URL to the real file location)<br />
'''Permissions:'''
* ReadData
'''Parameters:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
# ''string'' path<br />
</div>
'''Returns:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
'''Type:''' ''object''<br />
'''Properties:'''
# ''string'' protocol<br />
# ''any'' details (Transport specific details on how/from where to download the given file)<br />
# ''string'' mode (Direct mode allows using Files.Download whereas redirect mode requires the usage of a different protocol)<br />
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
  "type": "method",
  "description": "Provides a way to download a given file (e.g. providing an URL to the real file location)",
  "transport": [
     "Response",
    "FileDownloadRedirect"
  ],
  "permission": "ReadData",
   "params": [
    {
      "name": "path",
      "type": "string",
      "required": true
    }
  ],
   "returns": {
    "type": "object",
    "properties": {
      "protocol": {
        "type": "string",
        "enum": [
          "http"
        ],
        "required": true
      },
      "details": {
        "type": "any",
        "required": true,
        "description": "Transport specific details on how/from where to download the given file"
      },
      "mode": {
        "type": "string",
        "enum": [
          "redirect",
          "direct"
        ],
        "required": true,
        "description": "Direct mode allows using Files.Download whereas redirect mode requires the usage of a different protocol"
      }
    }
  }
}
</syntaxhighlight>}}
==== Files.SetFileDetails ====
Update the given specific file with the given details<br />
'''Permissions:'''
* UpdateData
'''Parameters:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
# ''string'' file (Full path to the file)<br />
# ''[[#Files.Media|Files.Media]]'' media (File type to update correct database. Currently only "video" is supported.)<br />
# [''[[#Optional.Integer|Optional.Integer]]'' playcount]<br />
# [''[[#Optional.String|Optional.String]]'' lastplayed] (Setting a valid lastplayed without a playcount will force playcount to 1.)<br />
# [''mixed: [[#Video.Resume|Video.Resume]]'' resume = None]<br />
</div>
'''Returns:'''  
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
'''Type:''' ''string''<br />
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
  "type": "method",
   "description": "Update the given specific file with the given details",
   "description": "Update the given specific file with the given details",
  "transport": "Response",
  "permission": "UpdateData",
   "params": [
   "params": [
     {
     {
      "description": "Full path to the file",
       "name": "file",
       "name": "file",
      "type": "string",
       "required": true,
       "required": true,
       "description": "Full path to the file"
       "type": "string"
     },
     },
     {
     {
      "$ref": "Files.Media",
      "description": "File type to update correct database. Currently only \"video\" is supported.",
       "name": "media",
       "name": "media",
      "$ref": "Files.Media",
       "required": true
       "required": true,
      "description": "File type to update correct database. Currently only \"video\" is supported."
     },
     },
     {
     {
       "name": "playcount",
       "$ref": "Optional.Integer",
       "$ref": "Optional.Integer"
      "default": null,
       "name": "playcount"
     },
     },
     {
     {
      "name": "lastplayed",
       "$ref": "Optional.String",
       "$ref": "Optional.String",
       "description": "Setting a valid lastplayed without a playcount will force playcount to 1."
      "default": null,
       "description": "Setting a valid lastplayed without a playcount will force playcount to 1.",
      "name": "lastplayed"
     },
     },
     {
     {
      "default": null,
       "name": "resume",
       "name": "resume",
       "type": [
       "type": [
        "null",
         {
         {
           "$ref": "Video.Resume",
           "type": "null"
           "required": true
        },
        {
           "$ref": "Video.Resume"
         }
         }
       ],
       ]
      "default": null
     }
     }
   ],
   ],
   "returns": "string"
  "permission": "UpdateData",
}
   "returns": {
</syntaxhighlight>}}
    "type": "string"
=== GUI ===
  },
==== GUI.ActivateWindow ====
  "type": "method"
Activates the given window<br />
}</syntaxhighlight>}}=== GUI ======= GUI.ActivateWindow ====Activates the given window<br />'''Permissions:'''* ControlGUI'''Parameters:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA"># ''[[#GUI.Window|GUI.Window]]'' window<br /># [''array'' parameters]<br /></div>'''Returns:''' <div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">'''Type:''' ''string''<br /></div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
'''Permissions:'''
* ControlGUI
'''Parameters:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
# ''[[#GUI.Window|GUI.Window]]'' window<br />
# [''array'' parameters]<br />
</div>
'''Returns:'''  
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
'''Type:''' ''string''<br />
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
  "type": "method",
   "description": "Activates the given window",
   "description": "Activates the given window",
  "transport": "Response",
  "permission": "ControlGUI",
   "params": [
   "params": [
     {
     {
      "$ref": "GUI.Window",
       "name": "window",
       "name": "window",
      "$ref": "GUI.Window",
       "required": true
       "required": true
     },
     },
     {
     {
      "name": "parameters",
      "type": "array",
       "items": {
       "items": {
        "type": "string",
         "minLength": 1,
         "minLength": 1,
         "required": true
         "type": "string"
       },
       },
       "minItems": 1
       "minItems": 1,
      "name": "parameters",
      "type": "array"
     }
     }
   ],
   ],
   "returns": "string"
  "permission": "ControlGUI",
}
   "returns": {
</syntaxhighlight>}}
    "type": "string"
==== GUI.GetProperties ====
  },
Retrieves the values of the given properties<br />
  "type": "method"
'''Permissions:'''
}</syntaxhighlight>}}==== GUI.GetProperties ====Retrieves the values of the given properties<br />'''Permissions:'''* ReadData'''Parameters:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA"># ''array'' properties<br /></div>'''Returns:''' <div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">'''Type:''' ''[[#GUI.Property.Value|GUI.Property.Value]]''<br /></div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
* ReadData
'''Parameters:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
# ''array'' properties<br />
</div>
'''Returns:'''  
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
'''Type:''' ''[[#GUI.Property.Value|GUI.Property.Value]]''<br />
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
  "type": "method",
   "description": "Retrieves the values of the given properties",
   "description": "Retrieves the values of the given properties",
  "transport": "Response",
  "permission": "ReadData",
   "params": [
   "params": [
     {
     {
      "items": {
        "$ref": "GUI.Property.Name"
      },
       "name": "properties",
       "name": "properties",
      "required": true,
       "type": "array",
       "type": "array",
       "uniqueItems": true,
       "uniqueItems": true
      "required": true,
      "items": {
        "$ref": "GUI.Property.Name"
      }
     }
     }
   ],
   ],
  "permission": "ReadData",
   "returns": {
   "returns": {
     "$ref": "GUI.Property.Value",
     "$ref": "GUI.Property.Value"
    "required": true
  },
  }
  "type": "method"
}
}</syntaxhighlight>}}==== GUI.GetStereoscopicModes ====Returns the supported stereoscopic modes of the GUI<br />'''Permissions:'''* ReadData'''Returns:''' <div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">'''Type:''' ''object''<br />'''Properties:'''# [''array[[#GUI.Stereoscopy.Mode|GUI.Stereoscopy.Mode]]'' stereoscopicmodes]<br /></div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
</syntaxhighlight>}}
==== GUI.GetStereoscopicModes ====
Returns the supported stereoscopic modes of the GUI<br />
'''Permissions:'''
* ReadData
'''Returns:'''  
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
'''Type:''' ''object''<br />
'''Properties:'''
# [''array[[#GUI.Stereoscopy.Mode|GUI.Stereoscopy.Mode]]'' stereoscopicmodes]<br />
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
  "type": "method",
   "description": "Returns the supported stereoscopic modes of the GUI",
   "description": "Returns the supported stereoscopic modes of the GUI",
   "transport": "Response",
   "params": [],
   "permission": "ReadData",
   "permission": "ReadData",
  "params": [],
   "returns": {
   "returns": {
    "type": "object",
     "properties": {
     "properties": {
       "stereoscopicmodes": {
       "stereoscopicmodes": {
        "type": "array",
        "uniqueItems": true,
         "items": {
         "items": {
           "$ref": "GUI.Stereoscopy.Mode"
           "$ref": "GUI.Stereoscopy.Mode"
         }
         },
        "type": "array",
        "uniqueItems": true
       }
       }
     }
     },
   }
    "type": "object"
}
   },
</syntaxhighlight>}}
  "type": "method"
==== GUI.SetFullscreen ====
}</syntaxhighlight>}}==== GUI.SetFullscreen ====Toggle fullscreen/GUI<br />'''Permissions:'''* ControlGUI'''Parameters:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA"># ''[[#Global.Toggle|Global.Toggle]]'' fullscreen<br /></div>'''Returns:''' <div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">'''Type:''' ''boolean (Fullscreen state)''<br /></div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
Toggle fullscreen/GUI<br />
'''Permissions:'''
* ControlGUI
'''Parameters:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
# ''[[#Global.Toggle|Global.Toggle]]'' fullscreen<br />
</div>
'''Returns:'''  
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
'''Type:''' ''boolean (Fullscreen state)''<br />
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
  "type": "method",
   "description": "Toggle fullscreen/GUI",
   "description": "Toggle fullscreen/GUI",
  "transport": "Response",
  "permission": "ControlGUI",
   "params": [
   "params": [
     {
     {
      "$ref": "Global.Toggle",
       "name": "fullscreen",
       "name": "fullscreen",
       "required": true,
       "required": true
      "$ref": "Global.Toggle"
     }
     }
   ],
   ],
  "permission": "ControlGUI",
   "returns": {
   "returns": {
     "type": "boolean",
     "description": "Fullscreen state",
     "description": "Fullscreen state"
     "type": "boolean"
   }
   },
}
  "type": "method"
</syntaxhighlight>}}
}</syntaxhighlight>}}==== GUI.SetStereoscopicMode ====Sets the stereoscopic mode of the GUI to the given mode<br />'''Permissions:'''* ControlGUI'''Parameters:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA"># ''string'' mode<br /></div>'''Returns:''' <div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">'''Type:''' ''string''<br /></div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
==== GUI.SetStereoscopicMode ====
Sets the stereoscopic mode of the GUI to the given mode<br />
'''Permissions:'''
* ControlGUI
'''Parameters:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
# ''string'' mode<br />
</div>
'''Returns:'''  
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
'''Type:''' ''string''<br />
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
  "type": "method",
   "description": "Sets the stereoscopic mode of the GUI to the given mode",
   "description": "Sets the stereoscopic mode of the GUI to the given mode",
  "transport": "Response",
  "permission": "ControlGUI",
   "params": [
   "params": [
     {
     {
       "name": "mode",
       "enums": [
      "type": "string",
      "enum": [
         "toggle",
         "toggle",
         "tomono",
         "tomono",
Line 2,999: Line 2,190:
         "monoscopic"
         "monoscopic"
       ],
       ],
       "required": true
      "name": "mode",
       "required": true,
      "type": "string"
     }
     }
   ],
   ],
   "returns": "string"
  "permission": "ControlGUI",
}
   "returns": {
</syntaxhighlight>}}
    "type": "string"
==== GUI.ShowNotification ====
  },
Shows a GUI notification<br />
  "type": "method"
'''Permissions:'''
}</syntaxhighlight>}}==== GUI.ShowNotification ====Shows a GUI notification<br />'''Permissions:'''* ControlGUI'''Parameters:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA"># ''string'' title<br /># ''string'' message<br /># [''mixed: string|string'' image = ""]<br /># [''integer'' displaytime = 5000] (The time in milliseconds the notification will be visible)<br /></div>'''Returns:''' <div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">'''Type:''' ''string''<br /></div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
* ControlGUI
'''Parameters:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
# ''string'' title<br />
# ''string'' message<br />
# [''mixed: string|string'' image = ""]<br />
# [''integer'' displaytime = 5000] (The time in milliseconds the notification will be visible)<br />
</div>
'''Returns:'''  
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
'''Type:''' ''string''<br />
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
  "type": "method",
   "description": "Shows a GUI notification",
   "description": "Shows a GUI notification",
  "transport": "Response",
  "permission": "ControlGUI",
   "params": [
   "params": [
     {
     {
       "name": "title",
       "name": "title",
       "type": "string",
       "required": true,
       "required": true
       "type": "string"
     },
     },
     {
     {
       "name": "message",
       "name": "message",
       "type": "string",
       "required": true,
       "required": true
       "type": "string"
     },
     },
     {
     {
      "default": "",
       "name": "image",
       "name": "image",
       "type": [
       "type": [
         {
         {
           "type": "string",
           "enums": [
          "required": true,
          "enum": [
             "info",
             "info",
             "warning",
             "warning",
             "error"
             "error"
           ]
           ],
          "type": "string"
         },
         },
         {
         {
           "type": "string",
           "type": "string"
          "required": true
         }
         }
       ],
       ]
      "default": ""
     },
     },
     {
     {
      "default": 5000,
      "description": "The time in milliseconds the notification will be visible",
      "minimum": 1500,
       "name": "displaytime",
       "name": "displaytime",
       "type": "integer",
       "type": "integer"
      "minimum": 1500,
      "default": 5000,
      "description": "The time in milliseconds the notification will be visible"
     }
     }
   ],
   ],
   "returns": "string"
  "permission": "ControlGUI",
}
   "returns": {
</syntaxhighlight>}}
    "type": "string"
=== Input ===
  },
==== Input.Back ====
  "type": "method"
Goes back in GUI<br />
}</syntaxhighlight>}}=== Input ======= Input.Back ====Goes back in GUI<br />'''Permissions:'''* Navigate'''Returns:''' <div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">'''Type:''' ''string''<br /></div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
'''Permissions:'''
* Navigate
'''Returns:'''  
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
'''Type:''' ''string''<br />
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
  "type": "method",
   "description": "Goes back in GUI",
   "description": "Goes back in GUI",
   "transport": "Response",
   "params": [],
   "permission": "Navigate",
   "permission": "Navigate",
   "params": [],
   "returns": {
   "returns": "string"
    "type": "string"
}
  },
</syntaxhighlight>}}
   "type": "method"
==== Input.ButtonEvent ====
}</syntaxhighlight>}}==== Input.ButtonEvent ====Send a button press event<br />'''Permissions:'''* Navigate'''Parameters:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA"># ''string'' button (Button name)<br /># ''string'' keymap (Keymap name (KB, XG, R1, or R2))<br /># [''integer'' holdtime = 0] (Number of milliseconds to simulate button hold.)<br /></div>'''Returns:''' <div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">'''Type:''' ''string''<br /></div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
Send a button press event<br />
'''Permissions:'''
* Navigate
'''Parameters:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
# ''string'' button (Button name)<br />
# ''string'' keymap (Keymap name (KB, XG, R1, or R2))<br />
# ''integer'' holdtime = 0 (Number of milliseconds to simulate button hold.)<br />
</div>
'''Returns:'''  
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
'''Type:''' ''string''<br />
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
  "type": "method",
   "description": "Send a button press event",
   "description": "Send a button press event",
  "transport": "Response",
  "permission": "Navigate",
   "params": [
   "params": [
     {
     {
      "description": "Button name",
       "name": "button",
       "name": "button",
      "type": "string",
       "required": true,
       "required": true,
       "description": "Button name"
       "type": "string"
     },
     },
     {
     {
      "name": "keymap",
      "type": "string",
      "required": true,
       "description": "Keymap name (KB, XG, R1, or R2)",
       "description": "Keymap name (KB, XG, R1, or R2)",
       "enum": [
       "enums": [
         "KB",
         "KB",
         "XG",
         "XG",
         "R1",
         "R1",
         "R2"
         "R2"
       ]
       ],
      "name": "keymap",
      "required": true,
      "type": "string"
     },
     },
     {
     {
      "default": 0,
      "description": "Number of milliseconds to simulate button hold.",
      "minimum": 0,
       "name": "holdtime",
       "name": "holdtime",
       "type": "integer",
       "type": "integer"
      "required": false,
      "minimum": 0,
      "default": 0,
      "description": "Number of milliseconds to simulate button hold."
     }
     }
   ],
   ],
   "returns": "string"
  "permission": "Navigate",
}
   "returns": {
</syntaxhighlight>}}
    "type": "string"
==== Input.ContextMenu ====
  },
Shows the context menu<br />
  "type": "method"
'''Permissions:'''
}</syntaxhighlight>}}==== Input.ContextMenu ====Shows the context menu<br />'''Permissions:'''* Navigate'''Returns:''' <div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">'''Type:''' ''string''<br /></div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
* Navigate
'''Returns:'''  
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
'''Type:''' ''string''<br />
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
  "type": "method",
   "description": "Shows the context menu",
   "description": "Shows the context menu",
   "transport": "Response",
   "params": [],
   "permission": "Navigate",
   "permission": "Navigate",
   "params": [],
   "returns": {
   "returns": "string"
    "type": "string"
}
  },
</syntaxhighlight>}}
   "type": "method"
==== Input.Down ====
}</syntaxhighlight>}}==== Input.Down ====Navigate down in GUI<br />'''Permissions:'''* Navigate'''Returns:''' <div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">'''Type:''' ''string''<br /></div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
Navigate down in GUI<br />
'''Permissions:'''
* Navigate
'''Returns:'''  
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
'''Type:''' ''string''<br />
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
  "type": "method",
   "description": "Navigate down in GUI",
   "description": "Navigate down in GUI",
   "transport": "Response",
   "params": [],
   "permission": "Navigate",
   "permission": "Navigate",
   "params": [],
   "returns": {
   "returns": "string"
    "type": "string"
}
  },
</syntaxhighlight>}}
   "type": "method"
==== Input.ExecuteAction ====
}</syntaxhighlight>}}==== Input.ExecuteAction ====Execute a specific action<br />'''Permissions:'''* Navigate'''Parameters:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA"># ''[[#Input.Action|Input.Action]]'' action<br /></div>'''Returns:''' <div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">'''Type:''' ''string''<br /></div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
Execute a specific action<br />
'''Permissions:'''
* Navigate
'''Parameters:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
# ''[[#Input.Action|Input.Action]]'' action<br />
</div>
'''Returns:'''  
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
'''Type:''' ''string''<br />
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
  "type": "method",
   "description": "Execute a specific action",
   "description": "Execute a specific action",
  "transport": "Response",
  "permission": "Navigate",
   "params": [
   "params": [
     {
     {
      "$ref": "Input.Action",
       "name": "action",
       "name": "action",
      "$ref": "Input.Action",
       "required": true
       "required": true
     }
     }
   ],
   ],
   "returns": "string"
  "permission": "Navigate",
}
   "returns": {
</syntaxhighlight>}}
    "type": "string"
==== Input.Home ====
  },
Goes to home window in GUI<br />
  "type": "method"
'''Permissions:'''
}</syntaxhighlight>}}==== Input.Home ====Goes to home window in GUI<br />'''Permissions:'''* Navigate'''Returns:''' <div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">'''Type:''' ''string''<br /></div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
* Navigate
'''Returns:'''  
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
'''Type:''' ''string''<br />
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
  "type": "method",
   "description": "Goes to home window in GUI",
   "description": "Goes to home window in GUI",
   "transport": "Response",
   "params": [],
   "permission": "Navigate",
   "permission": "Navigate",
  "returns": {
    "type": "string"
  },
  "type": "method"
}</syntaxhighlight>}}==== Input.Info ====Shows the information dialog<br />'''Permissions:'''* Navigate'''Returns:''' <div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">'''Type:''' ''string''<br /></div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
  "description": "Shows the information dialog",
   "params": [],
   "params": [],
  "returns": "string"
}
</syntaxhighlight>}}
==== Input.Info ====
Shows the information dialog<br />
'''Permissions:'''
* Navigate
'''Returns:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
'''Type:''' ''string''<br />
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
  "type": "method",
  "description": "Shows the information dialog",
  "transport": "Response",
   "permission": "Navigate",
   "permission": "Navigate",
  "returns": {
    "type": "string"
  },
  "type": "method"
}</syntaxhighlight>}}==== Input.Left ====Navigate left in GUI<br />'''Permissions:'''* Navigate'''Returns:''' <div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">'''Type:''' ''string''<br /></div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
  "description": "Navigate left in GUI",
   "params": [],
   "params": [],
  "returns": "string"
}
</syntaxhighlight>}}
==== Input.Left ====
Navigate left in GUI<br />
'''Permissions:'''
* Navigate
'''Returns:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
'''Type:''' ''string''<br />
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
  "type": "method",
  "description": "Navigate left in GUI",
  "transport": "Response",
   "permission": "Navigate",
   "permission": "Navigate",
  "returns": {
    "type": "string"
  },
  "type": "method"
}</syntaxhighlight>}}==== Input.Right ====Navigate right in GUI<br />'''Permissions:'''* Navigate'''Returns:''' <div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">'''Type:''' ''string''<br /></div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
  "description": "Navigate right in GUI",
   "params": [],
   "params": [],
  "returns": "string"
}
</syntaxhighlight>}}
==== Input.Right ====
Navigate right in GUI<br />
'''Permissions:'''
* Navigate
'''Returns:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
'''Type:''' ''string''<br />
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
  "type": "method",
  "description": "Navigate right in GUI",
  "transport": "Response",
   "permission": "Navigate",
   "permission": "Navigate",
  "returns": {
    "type": "string"
  },
  "type": "method"
}</syntaxhighlight>}}==== Input.Select ====Select current item in GUI<br />'''Permissions:'''* Navigate'''Returns:''' <div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">'''Type:''' ''string''<br /></div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
  "description": "Select current item in GUI",
   "params": [],
   "params": [],
  "returns": "string"
}
</syntaxhighlight>}}
==== Input.Select ====
Select current item in GUI<br />
'''Permissions:'''
* Navigate
'''Returns:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
'''Type:''' ''string''<br />
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
  "type": "method",
  "description": "Select current item in GUI",
  "transport": "Response",
   "permission": "Navigate",
   "permission": "Navigate",
   "params": [],
   "returns": {
   "returns": "string"
    "type": "string"
}
  },
</syntaxhighlight>}}
   "type": "method"
==== Input.SendText ====
}</syntaxhighlight>}}==== Input.SendText ====Send a generic (unicode) text<br />'''Permissions:'''* Navigate'''Parameters:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA"># ''string'' text (Unicode text)<br /># [''boolean'' done = True] (Whether this is the whole input or not (closes an open input dialog if true).)<br /></div>'''Returns:''' <div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">'''Type:''' ''string''<br /></div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
Send a generic (unicode) text<br />
'''Permissions:'''
* Navigate
'''Parameters:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
# ''string'' text (Unicode text)<br />
# [''boolean'' done = True] (Whether this is the whole input or not (closes an open input dialog if true).)<br />
</div>
'''Returns:'''  
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
'''Type:''' ''string''<br />
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
  "type": "method",
   "description": "Send a generic (unicode) text",
   "description": "Send a generic (unicode) text",
  "transport": "Response",
  "permission": "Navigate",
   "params": [
   "params": [
     {
     {
      "description": "Unicode text",
       "name": "text",
       "name": "text",
      "type": "string",
       "required": true,
       "required": true,
       "description": "Unicode text"
       "type": "string"
     },
     },
     {
     {
      "default": true,
      "description": "Whether this is the whole input or not (closes an open input dialog if true).",
       "name": "done",
       "name": "done",
       "type": "boolean",
       "type": "boolean"
      "default": true,
      "description": "Whether this is the whole input or not (closes an open input dialog if true)."
     }
     }
   ],
   ],
   "returns": "string"
  "permission": "Navigate",
}
   "returns": {
</syntaxhighlight>}}
    "type": "string"
==== Input.ShowCodec ====
  },
Show codec information of the playing item<br />
  "type": "method"
'''Permissions:'''
}</syntaxhighlight>}}==== Input.ShowCodec ====Show codec information of the playing item<br />'''Permissions:'''* Navigate'''Returns:''' <div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">'''Type:''' ''string''<br /></div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
* Navigate
'''Returns:'''  
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
'''Type:''' ''string''<br />
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
  "type": "method",
   "description": "Show codec information of the playing item",
   "description": "Show codec information of the playing item",
   "transport": "Response",
   "params": [],
   "permission": "Navigate",
   "permission": "Navigate",
  "returns": {
    "type": "string"
  },
  "type": "method"
}</syntaxhighlight>}}==== Input.ShowOSD ====Show the on-screen display for the current player<br />'''Permissions:'''* Navigate'''Returns:''' <div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">'''Type:''' ''string''<br /></div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
  "description": "Show the on-screen display for the current player",
   "params": [],
   "params": [],
  "returns": "string"
}
</syntaxhighlight>}}
==== Input.ShowOSD ====
Show the on-screen display for the current player<br />
'''Permissions:'''
* Navigate
'''Returns:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
'''Type:''' ''string''<br />
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
  "type": "method",
  "description": "Show the on-screen display for the current player",
  "transport": "Response",
   "permission": "Navigate",
   "permission": "Navigate",
  "returns": {
    "type": "string"
  },
  "type": "method"
}</syntaxhighlight>}}==== Input.ShowPlayerProcessInfo ====Show player process information of the playing item, like video decoder, pixel format, pvr signal strength, ...<br />'''Permissions:'''* Navigate'''Returns:''' <div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">'''Type:''' ''string''<br /></div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
  "description": "Show player process information of the playing item, like video decoder, pixel format, pvr signal strength, ...",
   "params": [],
   "params": [],
  "returns": "string"
}
</syntaxhighlight>}}
==== Input.ShowPlayerProcessInfo ====
Show player process information of the playing item, like video decoder, pixel format, pvr signal strength, ...<br />
'''Permissions:'''
* Navigate
'''Returns:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
'''Type:''' ''string''<br />
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
  "type": "method",
  "description": "Show player process information of the playing item, like video decoder, pixel format, pvr signal strength, ...",
  "transport": "Response",
   "permission": "Navigate",
   "permission": "Navigate",
  "returns": {
    "type": "string"
  },
  "type": "method"
}</syntaxhighlight>}}==== Input.Up ====Navigate up in GUI<br />'''Permissions:'''* Navigate'''Returns:''' <div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">'''Type:''' ''string''<br /></div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
  "description": "Navigate up in GUI",
   "params": [],
   "params": [],
  "returns": "string"
}
</syntaxhighlight>}}
==== Input.Up ====
Navigate up in GUI<br />
'''Permissions:'''
* Navigate
'''Returns:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
'''Type:''' ''string''<br />
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
  "type": "method",
  "description": "Navigate up in GUI",
  "transport": "Response",
   "permission": "Navigate",
   "permission": "Navigate",
  "params": [],
  "returns": "string"
}
</syntaxhighlight>}}
=== JSONRPC ===
==== JSONRPC.GetConfiguration ====
Get client-specific configurations<br />
'''Permissions:'''
* ReadData
'''Returns:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
'''Type:''' ''[[#Configuration|Configuration]]''<br />
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
  "type": "method",
  "description": "Get client-specific configurations",
  "transport": "Announcing",
  "permission": "ReadData",
  "params": [],
   "returns": {
   "returns": {
     "$ref": "Configuration"
     "type": "string"
   }
   },
}
  "type": "method"
</syntaxhighlight>}}
}</syntaxhighlight>}}=== JSONRPC ======= JSONRPC.Introspect ====Enumerates all actions and descriptions<br />'''Permissions:'''* ReadData'''Parameters:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA"># [''boolean'' getdescriptions = True]<br /># [''boolean'' getmetadata = False]<br /># [''boolean'' filterbytransport = True]<br /># [''object'' filter]<br /></div>'''Returns:''' <div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">'''Type:''' ''object''<br /></div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
==== JSONRPC.Introspect ====
Enumerates all actions and descriptions<br />
'''Permissions:'''
* ReadData
'''Parameters:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
# [''boolean'' getdescriptions = True]<br />
# [''boolean'' getmetadata = False]<br />
# [''boolean'' filterbytransport = True]<br />
# [''object'' filter]<br />
</div>
'''Returns:'''  
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
'''Type:''' ''object''<br />
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
  "type": "method",
   "description": "Enumerates all actions and descriptions",
   "description": "Enumerates all actions and descriptions",
  "transport": "Response",
  "permission": "ReadData",
   "params": [
   "params": [
     {
     {
      "default": true,
       "name": "getdescriptions",
       "name": "getdescriptions",
       "type": "boolean",
       "type": "boolean"
      "default": true
     },
     },
     {
     {
      "default": false,
       "name": "getmetadata",
       "name": "getmetadata",
       "type": "boolean",
       "type": "boolean"
      "default": false
     },
     },
     {
     {
      "default": true,
       "name": "filterbytransport",
       "name": "filterbytransport",
       "type": "boolean",
       "type": "boolean"
      "default": true
     },
     },
     {
     {
       "name": "filter",
       "name": "filter",
      "type": "object",
       "properties": {
       "properties": {
        "getreferences": {
          "default": true,
          "description": "Whether or not to print the schema for referenced types",
          "type": "boolean"
        },
         "id": {
         "id": {
           "type": "string",
           "description": "Name of a namespace, method or type",
           "required": true,
           "required": true,
           "description": "Name of a namespace, method or type"
           "type": "string"
         },
         },
         "type": {
         "type": {
           "type": "string",
           "description": "Type of the given name",
           "required": true,
           "enums": [
          "enum": [
             "method",
             "method",
             "namespace",
             "namespace",
Line 3,475: Line 2,447:
             "notification"
             "notification"
           ],
           ],
           "description": "Type of the given name"
           "required": true,
        },
           "type": "string"
        "getreferences": {
           "type": "boolean",
          "default": true,
          "description": "Whether or not to print the schema for referenced types"
         }
         }
       }
       },
      "type": "object"
     }
     }
   ],
   ],
   "returns": "object"
  "permission": "ReadData",
}
   "returns": {
</syntaxhighlight>}}
    "additionalProperties": false,
==== JSONRPC.NotifyAll ====
    "type": "object"
Notify all other connected clients<br />
  },
'''Permissions:'''
  "type": "method"
* ReadData
}</syntaxhighlight>}}==== JSONRPC.NotifyAll ====Notify all other connected clients<br />'''Permissions:'''* ReadData'''Parameters:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA"># ''string'' sender<br /># ''string'' message<br /># [''any'' data = None]<br /></div>'''Returns:''' <div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">'''Type:''' ''any''<br /></div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
'''Parameters:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
# ''string'' sender<br />
# ''string'' message<br />
# [''any'' data = None]<br />
</div>
'''Returns:'''  
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
'''Type:''' ''any''<br />
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
  "type": "method",
   "description": "Notify all other connected clients",
   "description": "Notify all other connected clients",
  "transport": "Response",
  "permission": "ReadData",
   "params": [
   "params": [
     {
     {
       "name": "sender",
       "name": "sender",
       "type": "string",
       "required": true,
       "required": true
       "type": "string"
     },
     },
     {
     {
       "name": "message",
       "name": "message",
       "type": "string",
       "required": true,
       "required": true
       "type": "string"
     },
     },
     {
     {
      "default": null,
       "name": "data",
       "name": "data",
       "type": "any",
       "type": "any"
      "default": null
     }
     }
   ],
   ],
   "returns": "any"
  "permission": "ReadData",
}
   "returns": {
</syntaxhighlight>}}
    "type": "any"
==== JSONRPC.Permission ====
  },
Retrieve the clients permissions<br />
  "type": "method"
'''Permissions:'''
}</syntaxhighlight>}}==== JSONRPC.Permission ====Retrieve the clients permissions<br />'''Permissions:'''* ReadData'''Returns:''' <div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">'''Type:''' ''object''<br />'''Properties:'''# ''boolean'' controlgui<br /># ''boolean'' controlnotify<br /># ''boolean'' controlplayback<br /># ''boolean'' controlpower<br /># ''boolean'' controlpvr<br /># ''boolean'' controlsystem<br /># ''boolean'' executeaddon<br /># ''boolean'' manageaddon<br /># ''boolean'' navigate<br /># ''boolean'' readdata<br /># ''boolean'' removedata<br /># ''boolean'' updatedata<br /># ''boolean'' writefile<br /></div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
* ReadData
'''Returns:'''  
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
'''Type:''' ''object''<br />
'''Properties:'''
# ''boolean'' ReadData<br />
# ''boolean'' ControlPlayback<br />
# ''boolean'' ControlNotify<br />
# ''boolean'' ControlPower<br />
# ''boolean'' UpdateData<br />
# ''boolean'' RemoveData<br />
# ''boolean'' Navigate<br />
# ''boolean'' WriteFile<br />
# ''boolean'' ControlSystem<br />
# ''boolean'' ControlGUI<br />
# ''boolean'' ManageAddon<br />
# ''boolean'' ExecuteAddon<br />
# ''boolean'' ControlPVR<br />
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
  "type": "method",
   "description": "Retrieve the clients permissions",
   "description": "Retrieve the clients permissions",
   "transport": "Response",
   "params": [],
   "permission": "ReadData",
   "permission": "ReadData",
  "params": [],
   "returns": {
   "returns": {
    "type": "object",
     "properties": {
     "properties": {
       "ReadData": {
       "controlgui": {
         "type": "boolean",
         "required": true,
         "required": true
         "type": "boolean"
       },
       },
       "ControlPlayback": {
       "controlnotify": {
         "type": "boolean",
         "required": true,
         "required": true
         "type": "boolean"
       },
       },
       "ControlNotify": {
       "controlplayback": {
         "type": "boolean",
         "required": true,
         "required": true
         "type": "boolean"
       },
       },
       "ControlPower": {
       "controlpower": {
         "type": "boolean",
         "required": true,
         "required": true
         "type": "boolean"
       },
       },
       "UpdateData": {
       "controlpvr": {
         "type": "boolean",
         "required": true,
         "required": true
         "type": "boolean"
       },
       },
       "RemoveData": {
       "controlsystem": {
         "type": "boolean",
         "required": true,
         "required": true
         "type": "boolean"
       },
       },
       "Navigate": {
       "executeaddon": {
         "type": "boolean",
         "required": true,
         "required": true
         "type": "boolean"
       },
       },
       "WriteFile": {
       "manageaddon": {
         "type": "boolean",
         "required": true,
         "required": true
         "type": "boolean"
       },
       },
       "ControlSystem": {
       "navigate": {
         "type": "boolean",
         "required": true,
         "required": true
         "type": "boolean"
       },
       },
       "ControlGUI": {
       "readdata": {
         "type": "boolean",
         "required": true,
         "required": true
         "type": "boolean"
       },
       },
       "ManageAddon": {
       "removedata": {
         "type": "boolean",
         "required": true,
         "required": true
         "type": "boolean"
       },
       },
       "ExecuteAddon": {
       "updatedata": {
         "type": "boolean",
         "required": true,
         "required": true
         "type": "boolean"
       },
       },
       "ControlPVR": {
       "writefile": {
         "type": "boolean",
         "required": true,
         "required": true
         "type": "boolean"
       }
       }
     }
     },
   }
    "type": "object"
}
   },
</syntaxhighlight>}}
  "type": "method"
==== JSONRPC.Ping ====
}</syntaxhighlight>}}==== JSONRPC.Ping ====Ping responder<br />'''Permissions:'''* ReadData'''Returns:''' <div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">'''Type:''' ''string''<br /></div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
Ping responder<br />
'''Permissions:'''
* ReadData
'''Returns:'''  
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
'''Type:''' ''string''<br />
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
  "type": "method",
   "description": "Ping responder",
   "description": "Ping responder",
   "transport": "Response",
   "params": [],
   "permission": "ReadData",
   "permission": "ReadData",
  "returns": {
    "type": "string"
  },
  "type": "method"
}</syntaxhighlight>}}==== JSONRPC.Version ====Retrieve the JSON-RPC protocol version.<br />'''Permissions:'''* ReadData'''Returns:''' <div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">'''Type:''' ''object''<br />'''Properties:'''# ''object'' version<br /></div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
  "description": "Retrieve the JSON-RPC protocol version.",
   "params": [],
   "params": [],
  "returns": "string"
   "permission": "ReadData",
}
   "returns": {
</syntaxhighlight>}}
==== JSONRPC.SetConfiguration ====
Change the client-specific configuration<br />
'''Permissions:'''
* ControlNotify
'''Parameters:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
# [''object'' notifications]<br />
</div>
'''Returns:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
'''Type:''' ''[[#Configuration|Configuration]]''<br />
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
  "type": "method",
  "description": "Change the client-specific configuration",
  "transport": "Announcing",
  "permission": "ControlNotify",
  "params": [
    {
      "name": "notifications",
      "type": "object",
      "properties": {
        "Player": {
          "$ref": "Optional.Boolean"
        },
        "Playlist": {
          "$ref": "Optional.Boolean"
        },
        "GUI": {
          "$ref": "Optional.Boolean"
        },
        "System": {
          "$ref": "Optional.Boolean"
        },
        "AudioLibrary": {
          "$ref": "Optional.Boolean"
        },
        "VideoLibrary": {
          "$ref": "Optional.Boolean"
        },
        "Application": {
          "$ref": "Optional.Boolean"
        },
        "Input": {
          "$ref": "Optional.Boolean"
        },
        "Other": {
          "$ref": "Optional.Boolean"
        }
      }
    }
  ],
  "returns": {
    "$ref": "Configuration"
  }
}
</syntaxhighlight>}}
==== JSONRPC.Version ====
Retrieve the JSON-RPC protocol version.<br />
'''Permissions:'''
* ReadData
'''Returns:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
'''Type:''' ''object''<br />
'''Properties:'''
# ''object'' version<br />
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
  "type": "method",
  "description": "Retrieve the JSON-RPC protocol version.",
  "transport": "Response",
   "permission": "ReadData",
  "params": [],
   "returns": {
    "type": "object",
     "properties": {
     "properties": {
       "version": {
       "version": {
        "type": "object",
        "required": true,
         "properties": {
         "properties": {
           "major": {
           "major": {
             "type": "integer",
             "description": "Bumped on backwards incompatible changes to the API definition",
             "minimum": 0,
             "minimum": 0,
             "required": true,
             "required": true,
             "description": "Bumped on backwards incompatible changes to the API definition"
             "type": "integer"
           },
           },
           "minor": {
           "minor": {
             "type": "integer",
             "description": "Bumped on backwards compatible additions/changes to the API definition",
             "minimum": 0,
             "minimum": 0,
             "required": true,
             "required": true,
             "description": "Bumped on backwards compatible additions/changes to the API definition"
             "type": "integer"
           },
           },
           "patch": {
           "patch": {
             "type": "integer",
             "description": "Bumped on any changes to the internal implementation but not to the API definition",
             "minimum": 0,
             "minimum": 0,
             "required": true,
             "required": true,
             "description": "Bumped on any changes to the internal implementation but not to the API definition"
             "type": "integer"
           }
           }
         }
         },
        "required": true,
        "type": "object"
       }
       }
     }
     },
   }
    "type": "object"
}
   },
</syntaxhighlight>}}
  "type": "method"
=== PVR ===
}</syntaxhighlight>}}=== PVR ======= PVR.AddTimer ====Adds a timer to record the given show one times or a timer rule to record all showings of the given show<br />'''Permissions:'''* ControlPVR'''Parameters:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA"># ''[[#Library.Id|Library.Id]]'' broadcastid (the broadcast id of the item to record)<br /># [''boolean'' timerrule = False] (controls whether to create a timer rule or a onetime timer)<br /></div>'''Returns:''' <div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">'''Type:''' ''string''<br /></div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
==== PVR.AddTimer ====
Adds a timer to record the given show one times or a timer rule to record all showings of the given show<br />
'''Permissions:'''
* ControlPVR
'''Parameters:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
# ''[[#Library.Id|Library.Id]]'' broadcastid (the broadcast id of the item to record)<br />
# [''boolean'' timerrule = False] (controls whether to create a timer rule or a onetime timer)<br />
</div>
'''Returns:'''  
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
'''Type:''' ''string''<br />
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
  "type": "method",
   "description": "Adds a timer to record the given show one times or a timer rule to record all showings of the given show",
   "description": "Adds a timer to record the given show one times or a timer rule to record all showings of the given show",
  "transport": "Response",
  "permission": "ControlPVR",
   "params": [
   "params": [
     {
     {
      "$ref": "Library.Id",
      "description": "the broadcast id of the item to record",
       "name": "broadcastid",
       "name": "broadcastid",
      "$ref": "Library.Id",
       "required": true
       "required": true,
      "description": "the broadcast id of the item to record"
     },
     },
     {
     {
      "default": false,
      "description": "controls whether to create a timer rule or a onetime timer",
       "name": "timerrule",
       "name": "timerrule",
       "type": "boolean",
       "type": "boolean"
      "default": false,
      "description": "controls whether to create a timer rule or a onetime timer"
     }
     }
   ],
   ],
   "returns": "string"
  "permission": "ControlPVR",
}
   "returns": {
</syntaxhighlight>}}
    "type": "string"
==== PVR.DeleteTimer ====
  },
Deletes a onetime timer or a timer rule<br />
  "type": "method"
'''Permissions:'''
}</syntaxhighlight>}}==== PVR.DeleteTimer ====Deletes a onetime timer or a timer rule<br />'''Permissions:'''* ControlPVR'''Parameters:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA"># ''[[#Library.Id|Library.Id]]'' timerid (the id of the onetime timer or timer rule to delete)<br /></div>'''Returns:''' <div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">'''Type:''' ''string''<br /></div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
* ControlPVR
'''Parameters:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
# ''[[#Library.Id|Library.Id]]'' timerid (the id of the onetime timer or timer rule to delete)<br />
</div>
'''Returns:'''  
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
'''Type:''' ''string''<br />
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
  "type": "method",
   "description": "Deletes a onetime timer or a timer rule",
   "description": "Deletes a onetime timer or a timer rule",
  "transport": "Response",
  "permission": "ControlPVR",
   "params": [
   "params": [
     {
     {
      "$ref": "Library.Id",
      "description": "the id of the onetime timer or timer rule to delete",
       "name": "timerid",
       "name": "timerid",
      "$ref": "Library.Id",
       "required": true
       "required": true,
      "description": "the id of the onetime timer or timer rule to delete"
     }
     }
   ],
   ],
   "returns": "string"
  "permission": "ControlPVR",
}
   "returns": {
</syntaxhighlight>}}
    "type": "string"
==== PVR.GetBroadcastDetails ====
  },
Retrieves the details of a specific broadcast<br />
  "type": "method"
'''Permissions:'''
}</syntaxhighlight>}}==== PVR.GetBroadcastDetails ====Retrieves the details of a specific broadcast<br />'''Permissions:'''* ReadData'''Parameters:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA"># ''[[#Library.Id|Library.Id]]'' broadcastid<br /># [''[[#PVR.Fields.Broadcast|PVR.Fields.Broadcast]]'' properties]<br /></div>'''Returns:''' <div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">'''Type:''' ''object''<br />'''Properties:'''# [''[[#PVR.Details.Broadcast|PVR.Details.Broadcast]]'' broadcastdetails]<br /></div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
* ReadData
'''Parameters:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
# ''[[#Library.Id|Library.Id]]'' broadcastid<br />
# [''[[#PVR.Fields.Broadcast|PVR.Fields.Broadcast]]'' properties]<br />
</div>
'''Returns:'''  
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
'''Type:''' ''object''<br />
'''Properties:'''
# [''[[#PVR.Details.Broadcast|PVR.Details.Broadcast]]'' broadcastdetails]<br />
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
  "type": "method",
   "description": "Retrieves the details of a specific broadcast",
   "description": "Retrieves the details of a specific broadcast",
  "transport": "Response",
  "permission": "ReadData",
   "params": [
   "params": [
     {
     {
      "$ref": "Library.Id",
       "name": "broadcastid",
       "name": "broadcastid",
      "$ref": "Library.Id",
       "required": true
       "required": true
     },
     },
     {
     {
       "name": "properties",
       "$ref": "PVR.Fields.Broadcast",
       "$ref": "PVR.Fields.Broadcast"
       "name": "properties"
     }
     }
   ],
   ],
  "permission": "ReadData",
   "returns": {
   "returns": {
    "type": "object",
     "properties": {
     "properties": {
       "broadcastdetails": {
       "broadcastdetails": {
         "$ref": "PVR.Details.Broadcast"
         "$ref": "PVR.Details.Broadcast"
       }
       }
     }
     },
   }
    "type": "object"
}
   },
</syntaxhighlight>}}
  "type": "method"
==== PVR.GetBroadcasts ====
}</syntaxhighlight>}}==== PVR.GetBroadcasts ====Retrieves the program of a specific channel<br />'''Permissions:'''* ReadData'''Parameters:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA"># ''[[#Library.Id|Library.Id]]'' channelid<br /># [''[[#PVR.Fields.Broadcast|PVR.Fields.Broadcast]]'' properties]<br /># [''[[#List.Limits|List.Limits]]'' limits]<br /></div>'''Returns:''' <div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">'''Type:''' ''object''<br />'''Properties:'''# ''array[[#PVR.Details.Broadcast|PVR.Details.Broadcast]]'' broadcasts<br /># ''[[#List.LimitsReturned|List.LimitsReturned]]'' limits<br /></div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
Retrieves the program of a specific channel<br />
'''Permissions:'''
* ReadData
'''Parameters:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
# ''[[#Library.Id|Library.Id]]'' channelid<br />
# [''[[#PVR.Fields.Broadcast|PVR.Fields.Broadcast]]'' properties]<br />
# [''[[#List.Limits|List.Limits]]'' limits]<br />
</div>
'''Returns:'''  
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
'''Type:''' ''object''<br />
'''Properties:'''
# ''[[#List.LimitsReturned|List.LimitsReturned]]'' limits<br />
# ''array[[#PVR.Details.Broadcast|PVR.Details.Broadcast]]'' broadcasts<br />
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
  "type": "method",
   "description": "Retrieves the program of a specific channel",
   "description": "Retrieves the program of a specific channel",
  "transport": "Response",
  "permission": "ReadData",
   "params": [
   "params": [
     {
     {
      "$ref": "Library.Id",
       "name": "channelid",
       "name": "channelid",
      "$ref": "Library.Id",
       "required": true
       "required": true
     },
     },
     {
     {
       "name": "properties",
       "$ref": "PVR.Fields.Broadcast",
       "$ref": "PVR.Fields.Broadcast"
       "name": "properties"
     },
     },
     {
     {
       "name": "limits",
       "$ref": "List.Limits",
       "$ref": "List.Limits"
       "name": "limits"
     }
     }
   ],
   ],
  "permission": "ReadData",
   "returns": {
   "returns": {
    "type": "object",
     "properties": {
     "properties": {
      "broadcasts": {
        "items": {
          "$ref": "PVR.Details.Broadcast"
        },
        "required": true,
        "type": "array"
      },
       "limits": {
       "limits": {
         "$ref": "List.LimitsReturned",
         "$ref": "List.LimitsReturned",
         "required": true
         "required": true
      },
      "broadcasts": {
        "type": "array",
        "required": true,
        "items": {
          "$ref": "PVR.Details.Broadcast"
        }
       }
       }
     }
     },
   }
    "type": "object"
}
   },
</syntaxhighlight>}}
  "type": "method"
==== PVR.GetChannelDetails ====
}</syntaxhighlight>}}==== PVR.GetChannelDetails ====Retrieves the details of a specific channel<br />'''Permissions:'''* ReadData'''Parameters:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA"># ''[[#Library.Id|Library.Id]]'' channelid<br /># [''[[#PVR.Fields.Channel|PVR.Fields.Channel]]'' properties]<br /></div>'''Returns:''' <div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">'''Type:''' ''object''<br />'''Properties:'''# [''[[#PVR.Details.Channel|PVR.Details.Channel]]'' channeldetails]<br /></div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
Retrieves the details of a specific channel<br />
'''Permissions:'''
* ReadData
'''Parameters:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
# ''[[#Library.Id|Library.Id]]'' channelid<br />
# [''[[#PVR.Fields.Channel|PVR.Fields.Channel]]'' properties]<br />
</div>
'''Returns:'''  
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
'''Type:''' ''object''<br />
'''Properties:'''
# [''[[#PVR.Details.Channel|PVR.Details.Channel]]'' channeldetails]<br />
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
  "type": "method",
   "description": "Retrieves the details of a specific channel",
   "description": "Retrieves the details of a specific channel",
  "transport": "Response",
  "permission": "ReadData",
   "params": [
   "params": [
     {
     {
      "$ref": "Library.Id",
       "name": "channelid",
       "name": "channelid",
      "$ref": "Library.Id",
       "required": true
       "required": true
     },
     },
     {
     {
       "name": "properties",
       "$ref": "PVR.Fields.Channel",
       "$ref": "PVR.Fields.Channel"
       "name": "properties"
     }
     }
   ],
   ],
  "permission": "ReadData",
   "returns": {
   "returns": {
    "type": "object",
     "properties": {
     "properties": {
       "channeldetails": {
       "channeldetails": {
         "$ref": "PVR.Details.Channel"
         "$ref": "PVR.Details.Channel"
       }
       }
     }
     },
   }
    "type": "object"
}
   },
</syntaxhighlight>}}
  "type": "method"
==== PVR.GetChannelGroupDetails ====
}</syntaxhighlight>}}==== PVR.GetChannelGroupDetails ====Retrieves the details of a specific channel group<br />'''Permissions:'''* ReadData'''Parameters:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA"># ''[[#PVR.ChannelGroup.Id|PVR.ChannelGroup.Id]]'' channelgroupid<br /># [''object'' channels]<br /></div>'''Returns:''' <div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">'''Type:''' ''object''<br />'''Properties:'''# [''[[#PVR.Details.ChannelGroup.Extended|PVR.Details.ChannelGroup.Extended]]'' channelgroupdetails]<br /></div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
Retrieves the details of a specific channel group<br />
'''Permissions:'''
* ReadData
'''Parameters:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
# ''[[#PVR.ChannelGroup.Id|PVR.ChannelGroup.Id]]'' channelgroupid<br />
# [''object'' channels]<br />
</div>
'''Returns:'''  
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
'''Type:''' ''object''<br />
'''Properties:'''
# [''[[#PVR.Details.ChannelGroup.Extended|PVR.Details.ChannelGroup.Extended]]'' channelgroupdetails]<br />
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
  "type": "method",
   "description": "Retrieves the details of a specific channel group",
   "description": "Retrieves the details of a specific channel group",
  "transport": "Response",
  "permission": "ReadData",
   "params": [
   "params": [
     {
     {
      "$ref": "PVR.ChannelGroup.Id",
       "name": "channelgroupid",
       "name": "channelgroupid",
      "$ref": "PVR.ChannelGroup.Id",
       "required": true
       "required": true
     },
     },
     {
     {
       "name": "channels",
       "name": "channels",
      "type": "object",
       "properties": {
       "properties": {
        "limits": {
          "$ref": "List.Limits"
        },
         "properties": {
         "properties": {
           "$ref": "PVR.Fields.Channel"
           "$ref": "PVR.Fields.Channel"
        },
        "limits": {
          "$ref": "List.Limits"
         }
         }
       }
       },
      "type": "object"
     }
     }
   ],
   ],
  "permission": "ReadData",
   "returns": {
   "returns": {
    "type": "object",
     "properties": {
     "properties": {
       "channelgroupdetails": {
       "channelgroupdetails": {
         "$ref": "PVR.Details.ChannelGroup.Extended"
         "$ref": "PVR.Details.ChannelGroup.Extended"
       }
       }
     }
     },
   }
    "type": "object"
}
   },
</syntaxhighlight>}}
  "type": "method"
==== PVR.GetChannelGroups ====
}</syntaxhighlight>}}==== PVR.GetChannelGroups ====Retrieves the channel groups for the specified type<br />'''Permissions:'''* ReadData'''Parameters:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA"># ''[[#PVR.Channel.Type|PVR.Channel.Type]]'' channeltype<br /># [''[[#List.Limits|List.Limits]]'' limits]<br /></div>'''Returns:''' <div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">'''Type:''' ''object''<br />'''Properties:'''# ''array[[#PVR.Details.ChannelGroup|PVR.Details.ChannelGroup]]'' channelgroups<br /># ''[[#List.LimitsReturned|List.LimitsReturned]]'' limits<br /></div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
Retrieves the channel groups for the specified type<br />
'''Permissions:'''
* ReadData
'''Parameters:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
# ''[[#PVR.Channel.Type|PVR.Channel.Type]]'' channeltype<br />
# [''[[#List.Limits|List.Limits]]'' limits]<br />
</div>
'''Returns:'''  
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
'''Type:''' ''object''<br />
'''Properties:'''
# ''[[#List.LimitsReturned|List.LimitsReturned]]'' limits<br />
# ''array[[#PVR.Details.ChannelGroup|PVR.Details.ChannelGroup]]'' channelgroups<br />
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
  "type": "method",
   "description": "Retrieves the channel groups for the specified type",
   "description": "Retrieves the channel groups for the specified type",
  "transport": "Response",
  "permission": "ReadData",
   "params": [
   "params": [
     {
     {
      "$ref": "PVR.Channel.Type",
       "name": "channeltype",
       "name": "channeltype",
      "$ref": "PVR.Channel.Type",
       "required": true
       "required": true
     },
     },
     {
     {
       "name": "limits",
       "$ref": "List.Limits",
       "$ref": "List.Limits"
       "name": "limits"
     }
     }
   ],
   ],
  "permission": "ReadData",
   "returns": {
   "returns": {
    "type": "object",
     "properties": {
     "properties": {
      "channelgroups": {
        "items": {
          "$ref": "PVR.Details.ChannelGroup"
        },
        "required": true,
        "type": "array"
      },
       "limits": {
       "limits": {
         "$ref": "List.LimitsReturned",
         "$ref": "List.LimitsReturned",
         "required": true
         "required": true
      },
      "channelgroups": {
        "type": "array",
        "required": true,
        "items": {
          "$ref": "PVR.Details.ChannelGroup"
        }
       }
       }
     }
     },
   }
    "type": "object"
}
   },
</syntaxhighlight>}}
  "type": "method"
==== PVR.GetChannels ====
}</syntaxhighlight>}}==== PVR.GetChannels ====Retrieves the channel list<br />'''Permissions:'''* ReadData'''Parameters:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA"># ''[[#PVR.ChannelGroup.Id|PVR.ChannelGroup.Id]]'' channelgroupid<br /># [''[[#PVR.Fields.Channel|PVR.Fields.Channel]]'' properties]<br /># [''[[#List.Limits|List.Limits]]'' limits]<br /></div>'''Returns:''' <div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">'''Type:''' ''object''<br />'''Properties:'''# ''array[[#PVR.Details.Channel|PVR.Details.Channel]]'' channels<br /># ''[[#List.LimitsReturned|List.LimitsReturned]]'' limits<br /></div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
Retrieves the channel list<br />
'''Permissions:'''
* ReadData
'''Parameters:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
# ''[[#PVR.ChannelGroup.Id|PVR.ChannelGroup.Id]]'' channelgroupid<br />
# [''[[#PVR.Fields.Channel|PVR.Fields.Channel]]'' properties]<br />
# [''[[#List.Limits|List.Limits]]'' limits]<br />
</div>
'''Returns:'''  
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
'''Type:''' ''object''<br />
'''Properties:'''
# ''[[#List.LimitsReturned|List.LimitsReturned]]'' limits<br />
# ''array[[#PVR.Details.Channel|PVR.Details.Channel]]'' channels<br />
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
  "type": "method",
   "description": "Retrieves the channel list",
   "description": "Retrieves the channel list",
  "transport": "Response",
  "permission": "ReadData",
   "params": [
   "params": [
     {
     {
      "$ref": "PVR.ChannelGroup.Id",
       "name": "channelgroupid",
       "name": "channelgroupid",
      "$ref": "PVR.ChannelGroup.Id",
       "required": true
       "required": true
     },
     },
     {
     {
       "name": "properties",
       "$ref": "PVR.Fields.Channel",
       "$ref": "PVR.Fields.Channel"
       "name": "properties"
     },
     },
     {
     {
       "name": "limits",
       "$ref": "List.Limits",
       "$ref": "List.Limits"
       "name": "limits"
     }
     }
   ],
   ],
  "permission": "ReadData",
   "returns": {
   "returns": {
    "type": "object",
     "properties": {
     "properties": {
      "channels": {
        "items": {
          "$ref": "PVR.Details.Channel"
        },
        "required": true,
        "type": "array"
      },
       "limits": {
       "limits": {
         "$ref": "List.LimitsReturned",
         "$ref": "List.LimitsReturned",
         "required": true
         "required": true
      },
      "channels": {
        "type": "array",
        "required": true,
        "items": {
          "$ref": "PVR.Details.Channel"
        }
       }
       }
     }
     },
   }
    "type": "object"
}
   },
</syntaxhighlight>}}
  "type": "method"
==== PVR.GetProperties ====
}</syntaxhighlight>}}==== PVR.GetProperties ====Retrieves the values of the given properties<br />'''Permissions:'''* ReadData'''Parameters:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA"># ''array'' properties<br /></div>'''Returns:''' <div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">'''Type:''' ''[[#PVR.Property.Value|PVR.Property.Value]]''<br /></div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
Retrieves the values of the given properties<br />
   "description": "Retrieves the values of the given properties",
'''Permissions:'''
   "params": [
* ReadData
    {
'''Parameters:'''
      "items": {
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
        "$ref": "PVR.Property.Name"
# ''array'' properties<br />
      },
</div>
'''Returns:'''  
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
'''Type:''' ''[[#PVR.Property.Value|PVR.Property.Value]]''<br />
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
  "type": "method",
   "description": "Retrieves the values of the given properties",
   "transport": "Response",
  "permission": "ReadData",
  "params": [
    {
       "name": "properties",
       "name": "properties",
      "required": true,
       "type": "array",
       "type": "array",
       "uniqueItems": true,
       "uniqueItems": true
      "required": true,
      "items": {
        "$ref": "PVR.Property.Name"
      }
     }
     }
   ],
   ],
  "permission": "ReadData",
   "returns": {
   "returns": {
     "$ref": "PVR.Property.Value",
     "$ref": "PVR.Property.Value"
    "required": true
  },
  }
  "type": "method"
}
}</syntaxhighlight>}}==== PVR.GetRecordingDetails ====Retrieves the details of a specific recording<br />'''Permissions:'''* ReadData'''Parameters:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA"># ''[[#Library.Id|Library.Id]]'' recordingid<br /># [''[[#PVR.Fields.Recording|PVR.Fields.Recording]]'' properties]<br /></div>'''Returns:''' <div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">'''Type:''' ''object''<br />'''Properties:'''# [''[[#PVR.Details.Recording|PVR.Details.Recording]]'' recordingdetails]<br /></div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
</syntaxhighlight>}}
==== PVR.GetRecordingDetails ====
Retrieves the details of a specific recording<br />
'''Permissions:'''
* ReadData
'''Parameters:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
# ''[[#Library.Id|Library.Id]]'' recordingid<br />
# [''[[#PVR.Fields.Recording|PVR.Fields.Recording]]'' properties]<br />
</div>
'''Returns:'''  
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
'''Type:''' ''object''<br />
'''Properties:'''
# [''[[#PVR.Details.Recording|PVR.Details.Recording]]'' recordingdetails]<br />
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
  "type": "method",
   "description": "Retrieves the details of a specific recording",
   "description": "Retrieves the details of a specific recording",
  "transport": "Response",
  "permission": "ReadData",
   "params": [
   "params": [
     {
     {
      "$ref": "Library.Id",
       "name": "recordingid",
       "name": "recordingid",
      "$ref": "Library.Id",
       "required": true
       "required": true
     },
     },
     {
     {
       "name": "properties",
       "$ref": "PVR.Fields.Recording",
       "$ref": "PVR.Fields.Recording"
       "name": "properties"
     }
     }
   ],
   ],
  "permission": "ReadData",
   "returns": {
   "returns": {
    "type": "object",
     "properties": {
     "properties": {
       "recordingdetails": {
       "recordingdetails": {
         "$ref": "PVR.Details.Recording"
         "$ref": "PVR.Details.Recording"
       }
       }
     }
     },
   }
    "type": "object"
}
   },
</syntaxhighlight>}}
  "type": "method"
==== PVR.GetRecordings ====
}</syntaxhighlight>}}==== PVR.GetRecordings ====Retrieves the recordings<br />'''Permissions:'''* ReadData'''Parameters:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA"># [''[[#PVR.Fields.Recording|PVR.Fields.Recording]]'' properties]<br /># [''[[#List.Limits|List.Limits]]'' limits]<br /></div>'''Returns:''' <div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">'''Type:''' ''object''<br />'''Properties:'''# ''[[#List.LimitsReturned|List.LimitsReturned]]'' limits<br /># ''array[[#PVR.Details.Recording|PVR.Details.Recording]]'' recordings<br /></div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
Retrieves the recordings<br />
'''Permissions:'''
* ReadData
'''Parameters:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
# [''[[#PVR.Fields.Recording|PVR.Fields.Recording]]'' properties]<br />
# [''[[#List.Limits|List.Limits]]'' limits]<br />
</div>
'''Returns:'''  
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
'''Type:''' ''object''<br />
'''Properties:'''
# ''[[#List.LimitsReturned|List.LimitsReturned]]'' limits<br />
# ''array[[#PVR.Details.Recording|PVR.Details.Recording]]'' recordings<br />
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
  "type": "method",
   "description": "Retrieves the recordings",
   "description": "Retrieves the recordings",
  "transport": "Response",
  "permission": "ReadData",
   "params": [
   "params": [
     {
     {
       "name": "properties",
       "$ref": "PVR.Fields.Recording",
       "$ref": "PVR.Fields.Recording"
       "name": "properties"
     },
     },
     {
     {
       "name": "limits",
       "$ref": "List.Limits",
       "$ref": "List.Limits"
       "name": "limits"
     }
     }
   ],
   ],
  "permission": "ReadData",
   "returns": {
   "returns": {
    "type": "object",
     "properties": {
     "properties": {
       "limits": {
       "limits": {
Line 4,220: Line 2,863:
       },
       },
       "recordings": {
       "recordings": {
        "type": "array",
        "required": true,
         "items": {
         "items": {
           "$ref": "PVR.Details.Recording"
           "$ref": "PVR.Details.Recording"
         }
         },
        "required": true,
        "type": "array"
       }
       }
     }
     },
   }
    "type": "object"
}
   },
</syntaxhighlight>}}
  "type": "method"
==== PVR.GetTimerDetails ====
}</syntaxhighlight>}}==== PVR.GetTimerDetails ====Retrieves the details of a specific timer<br />'''Permissions:'''* ReadData'''Parameters:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA"># ''[[#Library.Id|Library.Id]]'' timerid<br /># [''[[#PVR.Fields.Timer|PVR.Fields.Timer]]'' properties]<br /></div>'''Returns:''' <div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">'''Type:''' ''object''<br />'''Properties:'''# [''[[#PVR.Details.Timer|PVR.Details.Timer]]'' timerdetails]<br /></div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
Retrieves the details of a specific timer<br />
'''Permissions:'''
* ReadData
'''Parameters:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
# ''[[#Library.Id|Library.Id]]'' timerid<br />
# [''[[#PVR.Fields.Timer|PVR.Fields.Timer]]'' properties]<br />
</div>
'''Returns:'''  
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
'''Type:''' ''object''<br />
'''Properties:'''
# [''[[#PVR.Details.Timer|PVR.Details.Timer]]'' timerdetails]<br />
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
  "type": "method",
   "description": "Retrieves the details of a specific timer",
   "description": "Retrieves the details of a specific timer",
  "transport": "Response",
  "permission": "ReadData",
   "params": [
   "params": [
     {
     {
      "$ref": "Library.Id",
       "name": "timerid",
       "name": "timerid",
      "$ref": "Library.Id",
       "required": true
       "required": true
     },
     },
     {
     {
       "name": "properties",
       "$ref": "PVR.Fields.Timer",
       "$ref": "PVR.Fields.Timer"
       "name": "properties"
     }
     }
   ],
   ],
  "permission": "ReadData",
   "returns": {
   "returns": {
    "type": "object",
     "properties": {
     "properties": {
       "timerdetails": {
       "timerdetails": {
         "$ref": "PVR.Details.Timer"
         "$ref": "PVR.Details.Timer"
       }
       }
     }
     },
   }
    "type": "object"
}
   },
</syntaxhighlight>}}
  "type": "method"
==== PVR.GetTimers ====
}</syntaxhighlight>}}==== PVR.GetTimers ====Retrieves the timers<br />'''Permissions:'''* ReadData'''Parameters:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA"># [''[[#PVR.Fields.Timer|PVR.Fields.Timer]]'' properties]<br /># [''[[#List.Limits|List.Limits]]'' limits]<br /></div>'''Returns:''' <div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">'''Type:''' ''object''<br />'''Properties:'''# ''[[#List.LimitsReturned|List.LimitsReturned]]'' limits<br /># ''array[[#PVR.Details.Timer|PVR.Details.Timer]]'' timers<br /></div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
Retrieves the timers<br />
   "description": "Retrieves the timers",
'''Permissions:'''
* ReadData
'''Parameters:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
# [''[[#PVR.Fields.Timer|PVR.Fields.Timer]]'' properties]<br />
# [''[[#List.Limits|List.Limits]]'' limits]<br />
</div>
'''Returns:'''  
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
'''Type:''' ''object''<br />
'''Properties:'''
# ''[[#List.LimitsReturned|List.LimitsReturned]]'' limits<br />
# ''array[[#PVR.Details.Timer|PVR.Details.Timer]]'' timers<br />
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
  "type": "method",
   "description": "Retrieves the timers",
  "transport": "Response",
  "permission": "ReadData",
   "params": [
   "params": [
     {
     {
       "name": "properties",
       "$ref": "PVR.Fields.Timer",
       "$ref": "PVR.Fields.Timer"
       "name": "properties"
     },
     },
     {
     {
       "name": "limits",
       "$ref": "List.Limits",
       "$ref": "List.Limits"
       "name": "limits"
     }
     }
   ],
   ],
  "permission": "ReadData",
   "returns": {
   "returns": {
    "type": "object",
     "properties": {
     "properties": {
       "limits": {
       "limits": {
Line 4,312: Line 2,916:
       },
       },
       "timers": {
       "timers": {
        "type": "array",
        "required": true,
         "items": {
         "items": {
           "$ref": "PVR.Details.Timer"
           "$ref": "PVR.Details.Timer"
         }
         },
        "required": true,
        "type": "array"
       }
       }
     }
     },
   }
    "type": "object"
}
   },
</syntaxhighlight>}}
  "type": "method"
==== PVR.Record ====
}</syntaxhighlight>}}==== PVR.Record ====Toggle recording of a channel<br />'''Permissions:'''* ControlPVR'''Parameters:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA"># [''[[#Global.Toggle|Global.Toggle]]'' record = toggle]<br /># [''mixed: string|[[#Library.Id|Library.Id]]'' channel = current]<br /></div>'''Returns:''' <div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">'''Type:''' ''string''<br /></div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
Toggle recording of a channel<br />
'''Permissions:'''
* ControlPVR
'''Parameters:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
# [''[[#Global.Toggle|Global.Toggle]]'' record = toggle]<br />
# [''mixed: string|[[#Library.Id|Library.Id]]'' channel = current]<br />
</div>
'''Returns:'''  
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
'''Type:''' ''string''<br />
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
  "type": "method",
   "description": "Toggle recording of a channel",
   "description": "Toggle recording of a channel",
  "transport": "Response",
  "permission": "ControlPVR",
   "params": [
   "params": [
     {
     {
      "name": "record",
       "$ref": "Global.Toggle",
       "$ref": "Global.Toggle",
       "default": "toggle"
       "default": "toggle",
      "name": "record"
     },
     },
     {
     {
      "default": "current",
       "name": "channel",
       "name": "channel",
       "type": [
       "type": [
         {
         {
           "type": "string",
           "enums": [
          "enum": [
             "current"
             "current"
           ],
           ],
           "required": true
           "type": "string"
         },
         },
         {
         {
           "$ref": "Library.Id",
           "$ref": "Library.Id"
          "required": true
         }
         }
       ],
       ]
      "default": "current"
     }
     }
   ],
   ],
   "returns": "string"
  "permission": "ControlPVR",
}
   "returns": {
</syntaxhighlight>}}
    "type": "string"
==== PVR.Scan ====
  },
Starts a channel scan<br />
  "type": "method"
'''Permissions:'''
}</syntaxhighlight>}}==== PVR.Scan ====Starts a channel scan<br />'''Permissions:'''* ControlPVR'''Returns:''' <div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">'''Type:''' ''string''<br /></div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
* ControlPVR
'''Returns:'''  
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
'''Type:''' ''string''<br />
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
  "type": "method",
   "description": "Starts a channel scan",
   "description": "Starts a channel scan",
   "transport": "Response",
   "params": [],
   "permission": "ControlPVR",
   "permission": "ControlPVR",
   "params": [],
   "returns": {
   "returns": "string"
    "type": "string"
}
  },
</syntaxhighlight>}}
   "type": "method"
==== PVR.ToggleTimer ====
}</syntaxhighlight>}}==== PVR.ToggleTimer ====Creates or deletes a onetime timer or timer rule for a given show. If it exists, it will be deleted. If it does not exist, it will be created<br />'''Permissions:'''* ControlPVR'''Parameters:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA"># ''[[#Library.Id|Library.Id]]'' broadcastid (the broadcast id of the item to toggle a onetime timer or time rule for)<br /># [''boolean'' timerrule = False] (controls whether to create / delete a timer rule or a onetime timer)<br /></div>'''Returns:''' <div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">'''Type:''' ''string''<br /></div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
Creates or deletes a onetime timer or timer rule for a given show. If it exists, it will be deleted. If it does not exist, it will be created<br />
'''Permissions:'''
* ControlPVR
'''Parameters:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
# ''[[#Library.Id|Library.Id]]'' broadcastid (the broadcast id of the item to toggle a onetime timer or time rule for)<br />
# [''boolean'' timerrule = False] (controls whether to create / delete a timer rule or a onetime timer)<br />
</div>
'''Returns:'''  
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
'''Type:''' ''string''<br />
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
  "type": "method",
   "description": "Creates or deletes a onetime timer or timer rule for a given show. If it exists, it will be deleted. If it does not exist, it will be created",
   "description": "Creates or deletes a onetime timer or timer rule for a given show. If it exists, it will be deleted. If it does not exist, it will be created",
  "transport": "Response",
  "permission": "ControlPVR",
   "params": [
   "params": [
     {
     {
      "$ref": "Library.Id",
      "description": "the broadcast id of the item to toggle a onetime timer or time rule for",
       "name": "broadcastid",
       "name": "broadcastid",
      "$ref": "Library.Id",
       "required": true
       "required": true,
      "description": "the broadcast id of the item to toggle a onetime timer or time rule for"
     },
     },
     {
     {
      "default": false,
      "description": "controls whether to create / delete a timer rule or a onetime timer",
       "name": "timerrule",
       "name": "timerrule",
       "type": "boolean",
       "type": "boolean"
      "default": false,
      "description": "controls whether to create / delete a timer rule or a onetime timer"
     }
     }
   ],
   ],
   "returns": "string"
  "permission": "ControlPVR",
}
   "returns": {
</syntaxhighlight>}}
    "type": "string"
=== Player ===
  },
==== Player.GetActivePlayers ====
  "type": "method"
Returns all active players<br />
}</syntaxhighlight>}}=== Player ======= Player.GetActivePlayers ====Returns all active players<br />'''Permissions:'''* ReadData'''Returns:''' <div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">'''Type:''' ''array''<br /></div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
'''Permissions:'''
* ReadData
'''Returns:'''  
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
'''Type:''' ''array''<br />
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
  "type": "method",
   "description": "Returns all active players",
   "description": "Returns all active players",
   "transport": "Response",
   "params": [],
   "permission": "ReadData",
   "permission": "ReadData",
  "params": [],
   "returns": {
   "returns": {
    "type": "array",
    "uniqueItems": true,
     "items": {
     "items": {
      "type": "object",
       "properties": {
       "properties": {
         "playerid": {
         "playerid": {
Line 4,448: Line 2,995:
           "required": true
           "required": true
         },
         },
        "type": {
         "playertype": {
          "$ref": "Player.Type",
           "enums": [
          "required": true
        },
         "playertype": {
           "type": "string",
          "enum": [
             "internal",
             "internal",
             "external",
             "external",
             "remote"
             "remote"
           ],
           ],
          "required": true,
          "type": "string"
        },
        "type": {
          "$ref": "Player.Type",
           "required": true
           "required": true
         }
         }
       }
       },
     }
      "type": "object"
   }
     },
}
    "type": "array",
</syntaxhighlight>}}
    "uniqueItems": true
==== Player.GetItem ====
   },
Retrieves the currently played item<br />
  "type": "method"
'''Permissions:'''
}</syntaxhighlight>}}==== Player.GetItem ====Retrieves the currently played item<br />'''Permissions:'''* ReadData'''Parameters:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA"># ''[[#Player.Id|Player.Id]]'' playerid<br /># [''[[#List.Fields.All|List.Fields.All]]'' properties]<br /></div>'''Returns:''' <div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">'''Type:''' ''object''<br />'''Properties:'''# ''[[#List.Item.All|List.Item.All]]'' item<br /></div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
* ReadData
'''Parameters:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
# ''[[#Player.Id|Player.Id]]'' playerid<br />
# [''[[#List.Fields.All|List.Fields.All]]'' properties]<br />
</div>
'''Returns:'''  
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
'''Type:''' ''object''<br />
'''Properties:'''
# ''[[#List.Item.All|List.Item.All]]'' item<br />
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
  "type": "method",
   "description": "Retrieves the currently played item",
   "description": "Retrieves the currently played item",
  "transport": "Response",
  "permission": "ReadData",
   "params": [
   "params": [
     {
     {
      "$ref": "Player.Id",
       "name": "playerid",
       "name": "playerid",
      "$ref": "Player.Id",
       "required": true
       "required": true
     },
     },
     {
     {
       "name": "properties",
       "$ref": "List.Fields.All",
       "$ref": "List.Fields.All"
       "name": "properties"
     }
     }
   ],
   ],
  "permission": "ReadData",
   "returns": {
   "returns": {
    "type": "object",
     "properties": {
     "properties": {
       "item": {
       "item": {
Line 4,505: Line 3,035:
         "required": true
         "required": true
       }
       }
     }
     },
   }
    "type": "object"
}
   },
</syntaxhighlight>}}
  "type": "method"
==== Player.GetPlayers ====
}</syntaxhighlight>}}==== Player.GetPlayers ====Get a list of available players<br />'''Permissions:'''* ReadData'''Parameters:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA"># [''string'' media = all]<br /></div>'''Returns:''' <div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">'''Type:''' ''array''<br /></div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
Get a list of available players<br />
'''Permissions:'''
* ReadData
'''Parameters:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
# [''string'' media = all]<br />
</div>
'''Returns:'''  
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
'''Type:''' ''array''<br />
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
  "type": "method",
   "description": "Get a list of available players",
   "description": "Get a list of available players",
  "transport": "Response",
  "permission": "ReadData",
   "params": [
   "params": [
     {
     {
       "name": "media",
       "default": "all",
       "type": "string",
       "enums": [
      "enum": [
         "all",
         "all",
         "video",
         "video",
         "audio"
         "audio"
       ],
       ],
       "default": "all"
       "name": "media",
      "type": "string"
     }
     }
   ],
   ],
  "permission": "ReadData",
   "returns": {
   "returns": {
    "type": "array",
    "uniqueItems": true,
     "items": {
     "items": {
      "type": "object",
       "properties": {
       "properties": {
         "name": {
         "name": {
           "$ref": "Global.String.NotEmpty",
           "$ref": "Global.String.NotEmpty",
           "required": true
           "required": true
        },
        "playsaudio": {
          "required": true,
          "type": "boolean"
        },
        "playsvideo": {
          "required": true,
          "type": "boolean"
         },
         },
         "type": {
         "type": {
           "type": "string",
           "enums": [
          "enum": [
             "internal",
             "internal",
             "external",
             "external",
             "remote"
             "remote"
           ],
           ],
           "required": true
           "required": true,
        },
           "type": "string"
        "playsvideo": {
           "type": "boolean",
          "required": true
        },
        "playsaudio": {
          "type": "boolean",
          "required": true
         }
         }
       }
       },
     }
      "type": "object"
   }
     },
}
    "type": "array",
</syntaxhighlight>}}
    "uniqueItems": true
==== Player.GetProperties ====
   },
Retrieves the values of the given properties<br />
  "type": "method"
'''Permissions:'''
}</syntaxhighlight>}}==== Player.GetProperties ====Retrieves the values of the given properties<br />'''Permissions:'''* ReadData'''Parameters:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA"># ''[[#Player.Id|Player.Id]]'' playerid<br /># ''array'' properties<br /></div>'''Returns:''' <div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">'''Type:''' ''[[#Player.Property.Value|Player.Property.Value]]''<br /></div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
* ReadData
'''Parameters:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
# ''[[#Player.Id|Player.Id]]'' playerid<br />
# ''array'' properties<br />
</div>
'''Returns:'''  
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
'''Type:''' ''[[#Player.Property.Value|Player.Property.Value]]''<br />
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
  "type": "method",
   "description": "Retrieves the values of the given properties",
   "description": "Retrieves the values of the given properties",
  "transport": "Response",
  "permission": "ReadData",
   "params": [
   "params": [
     {
     {
      "$ref": "Player.Id",
       "name": "playerid",
       "name": "playerid",
      "$ref": "Player.Id",
       "required": true
       "required": true
     },
     },
     {
     {
      "items": {
        "$ref": "Player.Property.Name"
      },
       "name": "properties",
       "name": "properties",
      "required": true,
       "type": "array",
       "type": "array",
       "uniqueItems": true,
       "uniqueItems": true
      "required": true,
      "items": {
        "$ref": "Player.Property.Name"
      }
     }
     }
   ],
   ],
  "permission": "ReadData",
   "returns": {
   "returns": {
     "$ref": "Player.Property.Value",
     "$ref": "Player.Property.Value"
    "required": true
  },
  }
  "type": "method"
}
}</syntaxhighlight>}}==== Player.GetViewMode ====Get view mode of video player<br />'''Permissions:'''* ReadData'''Returns:''' <div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">'''Type:''' ''object''<br />'''Properties:'''# ''boolean'' nonlinearstretch<br /># ''number'' pixelratio<br /># ''number'' verticalshift<br /># ''[[#Player.ViewMode|Player.ViewMode]]'' viewmode<br /># ''number'' zoom<br /></div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
</syntaxhighlight>}}
==== Player.GetViewMode ====
Get view mode of video player<br />
'''Permissions:'''
* ReadData
'''Returns:'''  
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
'''Type:''' ''object''<br />
'''Properties:'''
# ''[[#Player.ViewMode|Player.ViewMode]]'' viewmode<br />
# ''number'' zoom<br />
# ''number'' pixelratio<br />
# ''number'' verticalshift<br />
# ''boolean'' nonlinearstretch<br />
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
  "type": "method",
   "description": "Get view mode of video player",
   "description": "Get view mode of video player",
   "transport": "Response",
   "params": [],
   "permission": "ReadData",
   "permission": "ReadData",
  "params": [],
   "returns": {
   "returns": {
    "type": "object",
     "properties": {
     "properties": {
       "viewmode": {
       "nonlinearstretch": {
        "$ref": "Player.ViewMode",
         "required": true,
         "required": true
         "type": "boolean"
      },
      "zoom": {
         "type": "number",
        "required": true
       },
       },
       "pixelratio": {
       "pixelratio": {
         "type": "number",
         "required": true,
         "required": true
         "type": "number"
       },
       },
       "verticalshift": {
       "verticalshift": {
         "type": "number",
        "required": true,
         "type": "number"
      },
      "viewmode": {
        "$ref": "Player.ViewMode",
         "required": true
         "required": true
       },
       },
       "nonlinearstretch": {
       "zoom": {
         "type": "boolean",
         "required": true,
         "required": true
         "type": "number"
       }
       }
     }
     },
   }
    "type": "object"
}
   },
</syntaxhighlight>}}
  "type": "method"
==== Player.GoTo ====
}</syntaxhighlight>}}==== Player.GoTo ====Go to previous/next/specific item in the playlist<br />'''Permissions:'''* ControlPlayback'''Parameters:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA"># ''[[#Player.Id|Player.Id]]'' playerid<br /># ''mixed: string|[[#Playlist.Position|Playlist.Position]]'' to<br /></div>'''Returns:''' <div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">'''Type:''' ''string''<br /></div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
Go to previous/next/specific item in the playlist<br />
'''Permissions:'''
* ControlPlayback
'''Parameters:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
# ''[[#Player.Id|Player.Id]]'' playerid<br />
# ''mixed: string|[[#Playlist.Position|Playlist.Position]]'' to<br />
</div>
'''Returns:'''  
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
'''Type:''' ''string''<br />
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
  "type": "method",
   "description": "Go to previous/next/specific item in the playlist",
   "description": "Go to previous/next/specific item in the playlist",
  "transport": "Response",
  "permission": "ControlPlayback",
   "params": [
   "params": [
     {
     {
      "$ref": "Player.Id",
       "name": "playerid",
       "name": "playerid",
      "$ref": "Player.Id",
       "required": true
       "required": true
     },
     },
     {
     {
       "name": "to",
       "name": "to",
      "required": true,
       "type": [
       "type": [
         {
         {
           "type": "string",
           "enums": [
          "enum": [
             "previous",
             "previous",
             "next"
             "next"
           ],
           ],
           "required": true
           "type": "string"
         },
         },
         {
         {
           "$ref": "Playlist.Position",
           "$ref": "Playlist.Position",
           "description": "position in playlist",
           "description": "position in playlist"
          "required": true
         }
         }
       ],
       ]
      "required": true
     }
     }
   ],
   ],
   "returns": "string"
  "permission": "ControlPlayback",
}
   "returns": {
</syntaxhighlight>}}
    "type": "string"
==== Player.Move ====
  },
If picture is zoomed move viewport left/right/up/down otherwise skip previous/next<br />
  "type": "method"
'''Permissions:'''
}</syntaxhighlight>}}==== Player.Move ====If picture is zoomed move viewport left/right/up/down otherwise skip previous/next<br />'''Permissions:'''* ControlPlayback'''Parameters:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA"># ''[[#Player.Id|Player.Id]]'' playerid<br /># ''string'' direction<br /></div>'''Returns:''' <div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">'''Type:''' ''string''<br /></div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
* ControlPlayback
'''Parameters:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
# ''[[#Player.Id|Player.Id]]'' playerid<br />
# ''string'' direction<br />
</div>
'''Returns:'''  
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
'''Type:''' ''string''<br />
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
  "type": "method",
   "description": "If picture is zoomed move viewport left/right/up/down otherwise skip previous/next",
   "description": "If picture is zoomed move viewport left/right/up/down otherwise skip previous/next",
  "transport": "Response",
  "permission": "ControlPlayback",
   "params": [
   "params": [
     {
     {
      "$ref": "Player.Id",
       "name": "playerid",
       "name": "playerid",
      "$ref": "Player.Id",
       "required": true
       "required": true
     },
     },
     {
     {
       "name": "direction",
       "enums": [
      "type": "string",
      "enum": [
         "left",
         "left",
         "right",
         "right",
Line 4,742: Line 3,184:
         "down"
         "down"
       ],
       ],
       "required": true
      "name": "direction",
       "required": true,
      "type": "string"
     }
     }
   ],
   ],
   "returns": "string"
  "permission": "ControlPlayback",
}
   "returns": {
</syntaxhighlight>}}
    "type": "string"
==== Player.Open ====
  },
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.<br />
  "type": "method"
'''Permissions:'''
}</syntaxhighlight>}}==== Player.Open ====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.<br />'''Permissions:'''* ControlPlayback'''Parameters:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA"># [''mixed: object|[[#Playlist.Item|Playlist.Item]]|object|object|object|object'' item]<br /># [''object'' options]<br /></div>'''Returns:''' <div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">'''Type:''' ''string''<br /></div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
* ControlPlayback
'''Parameters:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
# [''mixed: object|[[#Playlist.Item|Playlist.Item]]|object|object|object|object'' item]<br />
# [''object'' options]<br />
</div>
'''Returns:'''  
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
'''Type:''' ''string''<br />
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
  "type": "method",
   "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.",
   "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.",
  "transport": "Response",
  "permission": "ControlPlayback",
   "params": [
   "params": [
     {
     {
Line 4,772: Line 3,201:
       "type": [
       "type": [
         {
         {
          "type": "object",
          "required": true,
           "additionalProperties": false,
           "additionalProperties": false,
           "properties": {
           "properties": {
Line 4,784: Line 3,211:
               "default": 0
               "default": 0
             }
             }
           }
           },
          "type": "object"
         },
         },
         {
         {
           "$ref": "Playlist.Item",
           "$ref": "Playlist.Item"
          "required": true
         },
         },
         {
         {
          "type": "object",
          "required": true,
           "additionalProperties": false,
           "additionalProperties": false,
           "properties": {
           "properties": {
             "path": {
             "path": {
               "type": "string",
               "required": true,
               "required": true
               "type": "string"
             },
             },
             "random": {
             "random": {
              "type": "boolean",
               "default": true,
               "default": true,
               "description": "Deprecated, use the shuffled property of the options parameter instead"
               "description": "Deprecated, use the shuffled property of the options parameter instead",
              "type": "boolean"
             },
             },
             "recursive": {
             "recursive": {
               "type": "boolean",
               "default": true,
               "default": true
               "type": "boolean"
             }
             }
           }
           },
          "type": "object"
         },
         },
         {
         {
          "type": "object",
          "required": true,
           "additionalProperties": false,
           "additionalProperties": false,
           "properties": {
           "properties": {
             "partymode": {
             "partymode": {
              "default": "",
               "type": [
               "type": [
                 {
                 {
                   "type": "string",
                   "enums": [
                  "required": true,
                  "enum": [
                     "music",
                     "music",
                     "video"
                     "video"
                   ]
                   ],
                  "type": "string"
                 },
                 },
                 {
                 {
                   "type": "string",
                   "description": "Path to a smartplaylist (*.xsp) file",
                  "required": true,
                   "minLength": 5,
                   "minLength": 5,
                   "description": "Path to a smartplaylist (*.xsp) file"
                   "type": "string"
                 }
                 }
               ]
               ]
             }
             }
           }
           },
          "type": "object"
         },
         },
         {
         {
          "type": "object",
          "required": true,
           "additionalProperties": false,
           "additionalProperties": false,
           "properties": {
           "properties": {
Line 4,844: Line 3,266:
               "required": true
               "required": true
             }
             }
           }
           },
          "type": "object"
         },
         },
         {
         {
          "type": "object",
          "required": true,
           "additionalProperties": false,
           "additionalProperties": false,
           "properties": {
           "properties": {
Line 4,855: Line 3,276:
               "required": true
               "required": true
             }
             }
           }
           },
          "type": "object"
         }
         }
       ]
       ]
     },
     },
     {
     {
      "additionalProperties": false,
       "name": "options",
       "name": "options",
      "type": "object",
      "additionalProperties": false,
       "properties": {
       "properties": {
         "playername": {
         "playername": {
          "default": null,
           "type": [
           "type": [
            "null",
             {
             {
               "type": "string",
               "type": "null"
               "enum": [
            },
            {
               "enums": [
                 "default"
                 "default"
               ],
               ],
               "required": true
               "type": "string"
             },
             },
             {
             {
               "type": "string",
               "description": "name of player",
               "minLength": 1,
               "minLength": 1,
               "required": true,
               "type": "string"
              "description": "name of player"
             }
             }
           ],
           ]
          "default": null
        },
        "shuffled": {
          "$ref": "Optional.Boolean"
         },
         },
         "repeat": {
         "repeat": {
          "default": null,
           "type": [
           "type": [
            "null",
             {
             {
               "$ref": "Player.Repeat",
               "type": "null"
               "required": true
            },
            {
               "$ref": "Player.Repeat"
             }
             }
           ],
           ]
          "default": null
         },
         },
         "resume": {
         "resume": {
          "default": false,
           "type": [
           "type": [
             {
             {
              "type": "boolean",
               "description": "Whether to resume from the resume point or not",
              "required": true,
              "type": "boolean"
               "description": "Whether to resume from the resume point or not"
             },
             },
             {
             {
               "$ref": "Player.Position.Percentage",
               "$ref": "Player.Position.Percentage",
              "required": true,
               "description": "Percentage value to start from"
               "description": "Percentage value to start from"
             },
             },
             {
             {
               "$ref": "Player.Position.Time",
               "$ref": "Player.Position.Time",
              "required": true,
               "description": "Time to start from"
               "description": "Time to start from"
             }
             }
           ],
           ]
           "default": false
        },
         }
        "shuffled": {
       }
          "$ref": "Optional.Boolean",
           "default": null
         }
       },
      "type": "object"
     }
     }
   ],
   ],
   "returns": "string"
  "permission": "ControlPlayback",
}
   "returns": {
</syntaxhighlight>}}
    "type": "string"
==== Player.PlayPause ====
  },
Pauses or unpause playback and returns the new state<br />
  "type": "method"
'''Permissions:'''
}</syntaxhighlight>}}==== Player.PlayPause ====Pauses or unpause playback and returns the new state<br />'''Permissions:'''* ControlPlayback'''Parameters:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA"># ''[[#Player.Id|Player.Id]]'' playerid<br /># [''[[#Global.Toggle|Global.Toggle]]'' play = toggle]<br /></div>'''Returns:''' <div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">'''Type:''' ''[[#Player.Speed|Player.Speed]]''<br /></div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
* ControlPlayback
'''Parameters:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
# ''[[#Player.Id|Player.Id]]'' playerid<br />
# [''[[#Global.Toggle|Global.Toggle]]'' play = toggle]<br />
</div>
'''Returns:'''  
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
'''Type:''' ''[[#Player.Speed|Player.Speed]]''<br />
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
  "type": "method",
   "description": "Pauses or unpause playback and returns the new state",
   "description": "Pauses or unpause playback and returns the new state",
  "transport": "Response",
  "permission": "ControlPlayback",
   "params": [
   "params": [
     {
     {
      "$ref": "Player.Id",
       "name": "playerid",
       "name": "playerid",
      "$ref": "Player.Id",
       "required": true
       "required": true
     },
     },
     {
     {
      "name": "play",
       "$ref": "Global.Toggle",
       "$ref": "Global.Toggle",
       "default": "toggle"
       "default": "toggle",
      "name": "play"
     }
     }
   ],
   ],
  "permission": "ControlPlayback",
   "returns": {
   "returns": {
     "$ref": "Player.Speed"
     "$ref": "Player.Speed"
   }
   },
}
  "type": "method"
</syntaxhighlight>}}
}</syntaxhighlight>}}==== Player.Rotate ====Rotates current picture<br />'''Permissions:'''* ControlPlayback'''Parameters:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA"># ''[[#Player.Id|Player.Id]]'' playerid<br /># [''string'' value = clockwise]<br /></div>'''Returns:''' <div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">'''Type:''' ''string''<br /></div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
==== Player.Rotate ====
Rotates current picture<br />
'''Permissions:'''
* ControlPlayback
'''Parameters:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
# ''[[#Player.Id|Player.Id]]'' playerid<br />
# [''string'' value = clockwise]<br />
</div>
'''Returns:'''  
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
'''Type:''' ''string''<br />
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
  "type": "method",
   "description": "Rotates current picture",
   "description": "Rotates current picture",
  "transport": "Response",
  "permission": "ControlPlayback",
   "params": [
   "params": [
     {
     {
      "$ref": "Player.Id",
       "name": "playerid",
       "name": "playerid",
      "$ref": "Player.Id",
       "required": true
       "required": true
     },
     },
     {
     {
       "name": "value",
       "default": "clockwise",
       "type": "string",
       "enums": [
      "enum": [
         "clockwise",
         "clockwise",
         "counterclockwise"
         "counterclockwise"
       ],
       ],
       "default": "clockwise"
       "name": "value",
      "type": "string"
     }
     }
   ],
   ],
   "returns": "string"
  "permission": "ControlPlayback",
}
   "returns": {
</syntaxhighlight>}}
    "type": "string"
==== Player.Seek ====
  },
Seek through the playing item<br />
  "type": "method"
'''Permissions:'''
}</syntaxhighlight>}}==== Player.Seek ====Seek through the playing item<br />'''Permissions:'''* ControlPlayback'''Parameters:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA"># ''[[#Player.Id|Player.Id]]'' playerid<br /># ''mixed: object|object|object|object'' value<br /></div>'''Returns:''' <div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">'''Type:''' ''object''<br />'''Properties:'''# [''[[#Player.Position.Percentage|Player.Position.Percentage]]'' percentage]<br /># [''[[#Global.Time|Global.Time]]'' time]<br /># [''[[#Global.Time|Global.Time]]'' totaltime]<br /></div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
* ControlPlayback
'''Parameters:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
# ''[[#Player.Id|Player.Id]]'' playerid<br />
# ''mixed: object|object|object|object'' value<br />
</div>
'''Returns:'''  
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
'''Type:''' ''object''<br />
'''Properties:'''
# [''[[#Player.Position.Percentage|Player.Position.Percentage]]'' percentage]<br />
# [''[[#Global.Time|Global.Time]]'' time]<br />
# [''[[#Global.Time|Global.Time]]'' totaltime]<br />
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
  "type": "method",
   "description": "Seek through the playing item",
   "description": "Seek through the playing item",
  "transport": "Response",
  "permission": "ControlPlayback",
   "params": [
   "params": [
     {
     {
      "$ref": "Player.Id",
       "name": "playerid",
       "name": "playerid",
      "$ref": "Player.Id",
       "required": true
       "required": true
     },
     },
Line 5,030: Line 3,400:
       "type": [
       "type": [
         {
         {
           "type": "object",
           "additionalProperties": false,
           "properties": {
           "properties": {
             "percentage": {
             "percentage": {
               "$ref": "Player.Position.Percentage",
               "$ref": "Player.Position.Percentage",
              "required": true,
               "description": "Percentage value to seek to",
               "description": "Percentage value to seek to"
              "required": true
             }
             }
           },
           },
           "additionalProperties": false,
           "type": "object"
          "required": true
         },
         },
         {
         {
           "type": "object",
           "additionalProperties": false,
           "properties": {
           "properties": {
             "time": {
             "time": {
               "$ref": "Player.Position.Time",
               "$ref": "Player.Position.Time",
              "required": true,
               "description": "Time to seek to",
               "description": "Time to seek to"
              "required": true
             }
             }
           },
           },
           "additionalProperties": false,
           "type": "object"
          "required": true
         },
         },
         {
         {
           "type": "object",
           "additionalProperties": false,
           "properties": {
           "properties": {
             "step": {
             "step": {
               "type": "string",
               "description": "Seek by predefined jumps",
               "enum": [
               "enums": [
                 "smallforward",
                 "smallforward",
                 "smallbackward",
                 "smallbackward",
Line 5,065: Line 3,433:
               ],
               ],
               "required": true,
               "required": true,
               "description": "Seek by predefined jumps"
               "type": "string"
             }
             }
           },
           },
           "additionalProperties": false,
           "type": "object"
          "required": true
         },
         },
         {
         {
           "type": "object",
           "additionalProperties": false,
           "properties": {
           "properties": {
             "seconds": {
             "seconds": {
               "type": "integer",
               "description": "Seek by the given number of seconds",
               "required": true,
               "required": true,
               "description": "Seek by the given number of seconds"
               "type": "integer"
             }
             }
           },
           },
           "additionalProperties": false,
           "type": "object"
          "required": true
         }
         }
       ]
       ]
     }
     }
   ],
   ],
  "permission": "ControlPlayback",
   "returns": {
   "returns": {
    "type": "object",
     "properties": {
     "properties": {
       "percentage": {
       "percentage": {
         "$ref": "Player.Position.Percentage"
         "$ref": "Player.Position.Percentage",
        "default": 0.0
       },
       },
       "time": {
       "time": {
Line 5,098: Line 3,465:
         "$ref": "Global.Time"
         "$ref": "Global.Time"
       }
       }
     }
     },
   }
    "type": "object"
}
   },
</syntaxhighlight>}}
  "type": "method"
==== Player.SetAudioStream ====
}</syntaxhighlight>}}==== Player.SetAudioStream ====Set the audio stream played by the player<br />'''Permissions:'''* ControlPlayback'''Parameters:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA"># ''[[#Player.Id|Player.Id]]'' playerid<br /># ''mixed: string|integer'' stream<br /></div>'''Returns:''' <div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">'''Type:''' ''string''<br /></div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
Set the audio stream played by the player<br />
'''Permissions:'''
* ControlPlayback
'''Parameters:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
# ''[[#Player.Id|Player.Id]]'' playerid<br />
# ''mixed: string|integer'' stream<br />
</div>
'''Returns:'''  
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
'''Type:''' ''string''<br />
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
  "type": "method",
   "description": "Set the audio stream played by the player",
   "description": "Set the audio stream played by the player",
  "transport": "Response",
  "permission": "ControlPlayback",
   "params": [
   "params": [
     {
     {
      "$ref": "Player.Id",
       "name": "playerid",
       "name": "playerid",
      "$ref": "Player.Id",
       "required": true
       "required": true
     },
     },
Line 5,132: Line 3,482:
       "type": [
       "type": [
         {
         {
           "type": "string",
           "enums": [
          "enum": [
             "previous",
             "previous",
             "next"
             "next"
           ]
           ],
          "type": "string"
         },
         },
         {
         {
           "type": "integer",
           "description": "Index of the audio stream to play",
           "minimum": 0,
           "minimum": 0,
           "description": "Index of the audio stream to play"
           "type": "integer"
         }
         }
       ]
       ]
     }
     }
   ],
   ],
   "returns": "string"
  "permission": "ControlPlayback",
}
   "returns": {
</syntaxhighlight>}}
    "type": "string"
==== Player.SetPartymode ====
  },
Turn partymode on or off<br />
  "type": "method"
'''Permissions:'''
}</syntaxhighlight>}}==== Player.SetPartymode ====Turn partymode on or off<br />'''Permissions:'''* ControlPlayback'''Parameters:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA"># ''[[#Player.Id|Player.Id]]'' playerid<br /># ''[[#Global.Toggle|Global.Toggle]]'' partymode<br /></div>'''Returns:''' <div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">'''Type:''' ''string''<br /></div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
* ControlPlayback
'''Parameters:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
# ''[[#Player.Id|Player.Id]]'' playerid<br />
# ''[[#Global.Toggle|Global.Toggle]]'' partymode<br />
</div>
'''Returns:'''  
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
'''Type:''' ''string''<br />
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
  "type": "method",
   "description": "Turn partymode on or off",
   "description": "Turn partymode on or off",
  "transport": "Response",
  "permission": "ControlPlayback",
   "params": [
   "params": [
     {
     {
      "$ref": "Player.Id",
       "name": "playerid",
       "name": "playerid",
      "$ref": "Player.Id",
       "required": true
       "required": true
     },
     },
     {
     {
      "$ref": "Global.Toggle",
       "name": "partymode",
       "name": "partymode",
      "$ref": "Global.Toggle",
       "required": true
       "required": true
     }
     }
   ],
   ],
   "returns": "string"
  "permission": "ControlPlayback",
}
   "returns": {
</syntaxhighlight>}}
    "type": "string"
==== Player.SetRepeat ====
  },
Set the repeat mode of the player<br />
  "type": "method"
'''Permissions:'''
}</syntaxhighlight>}}==== Player.SetRepeat ====Set the repeat mode of the player<br />'''Permissions:'''* ControlPlayback'''Parameters:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA"># ''[[#Player.Id|Player.Id]]'' playerid<br /># ''mixed: [[#Player.Repeat|Player.Repeat]]|string'' repeat<br /></div>'''Returns:''' <div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">'''Type:''' ''string''<br /></div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
* ControlPlayback
'''Parameters:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
# ''[[#Player.Id|Player.Id]]'' playerid<br />
# ''mixed: [[#Player.Repeat|Player.Repeat]]|string'' repeat<br />
</div>
'''Returns:'''  
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
'''Type:''' ''string''<br />
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
  "type": "method",
   "description": "Set the repeat mode of the player",
   "description": "Set the repeat mode of the player",
  "transport": "Response",
  "permission": "ControlPlayback",
   "params": [
   "params": [
     {
     {
      "$ref": "Player.Id",
       "name": "playerid",
       "name": "playerid",
      "$ref": "Player.Id",
       "required": true
       "required": true
     },
     },
     {
     {
       "name": "repeat",
       "name": "repeat",
      "required": true,
       "type": [
       "type": [
         {
         {
           "$ref": "Player.Repeat",
           "$ref": "Player.Repeat"
          "required": true
         },
         },
         {
         {
           "type": "string",
           "enums": [
          "enum": [
             "cycle"
             "cycle"
           ],
           ],
           "required": true
           "type": "string"
         }
         }
       ],
       ]
      "required": true
     }
     }
   ],
   ],
   "returns": "string"
  "permission": "ControlPlayback",
}
   "returns": {
</syntaxhighlight>}}
    "type": "string"
==== Player.SetShuffle ====
  },
Shuffle/Unshuffle items in the player<br />
  "type": "method"
'''Permissions:'''
}</syntaxhighlight>}}==== Player.SetShuffle ====Shuffle/Unshuffle items in the player<br />'''Permissions:'''* ControlPlayback'''Parameters:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA"># ''[[#Player.Id|Player.Id]]'' playerid<br /># ''[[#Global.Toggle|Global.Toggle]]'' shuffle<br /></div>'''Returns:''' <div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">'''Type:''' ''string''<br /></div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
* ControlPlayback
'''Parameters:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
# ''[[#Player.Id|Player.Id]]'' playerid<br />
# ''[[#Global.Toggle|Global.Toggle]]'' shuffle<br />
</div>
'''Returns:'''  
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
'''Type:''' ''string''<br />
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
  "type": "method",
   "description": "Shuffle/Unshuffle items in the player",
   "description": "Shuffle/Unshuffle items in the player",
  "transport": "Response",
  "permission": "ControlPlayback",
   "params": [
   "params": [
     {
     {
      "$ref": "Player.Id",
       "name": "playerid",
       "name": "playerid",
      "$ref": "Player.Id",
       "required": true
       "required": true
     },
     },
     {
     {
      "$ref": "Global.Toggle",
       "name": "shuffle",
       "name": "shuffle",
      "$ref": "Global.Toggle",
       "required": true
       "required": true
     }
     }
   ],
   ],
   "returns": "string"
  "permission": "ControlPlayback",
}
   "returns": {
</syntaxhighlight>}}
    "type": "string"
==== Player.SetSpeed ====
  },
Set the speed of the current playback<br />
  "type": "method"
'''Permissions:'''
}</syntaxhighlight>}}==== Player.SetSpeed ====Set the speed of the current playback<br />'''Permissions:'''* ControlPlayback'''Parameters:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA"># ''[[#Player.Id|Player.Id]]'' playerid<br /># ''mixed: integer|[[#Global.IncrementDecrement|Global.IncrementDecrement]]'' speed<br /></div>'''Returns:''' <div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">'''Type:''' ''[[#Player.Speed|Player.Speed]]''<br /></div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
* ControlPlayback
'''Parameters:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
# ''[[#Player.Id|Player.Id]]'' playerid<br />
# ''mixed: integer|[[#Global.IncrementDecrement|Global.IncrementDecrement]]'' speed<br />
</div>
'''Returns:'''  
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
'''Type:''' ''[[#Player.Speed|Player.Speed]]''<br />
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
  "type": "method",
   "description": "Set the speed of the current playback",
   "description": "Set the speed of the current playback",
  "transport": "Response",
  "permission": "ControlPlayback",
   "params": [
   "params": [
     {
     {
      "$ref": "Player.Id",
       "name": "playerid",
       "name": "playerid",
      "$ref": "Player.Id",
       "required": true
       "required": true
     },
     },
     {
     {
       "name": "speed",
       "name": "speed",
      "required": true,
       "type": [
       "type": [
         {
         {
           "type": "integer",
           "enums": [
          "required": true,
          "enum": [
             -32,
             -32,
             -16,
             -16,
Line 5,308: Line 3,595:
             16,
             16,
             32
             32
           ]
           ],
          "type": "integer"
         },
         },
         {
         {
           "$ref": "Global.IncrementDecrement",
           "$ref": "Global.IncrementDecrement"
          "required": true
         }
         }
       ],
       ]
      "required": true
     }
     }
   ],
   ],
  "permission": "ControlPlayback",
   "returns": {
   "returns": {
     "$ref": "Player.Speed"
     "$ref": "Player.Speed"
   }
   },
}
  "type": "method"
</syntaxhighlight>}}
}</syntaxhighlight>}}==== Player.SetSubtitle ====Set the subtitle displayed by the player<br />'''Permissions:'''* ControlPlayback'''Parameters:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA"># ''[[#Player.Id|Player.Id]]'' playerid<br /># ''mixed: string|integer'' subtitle<br /># [''boolean'' enable = False] (Whether to enable subtitles to be displayed after setting the new subtitle)<br /></div>'''Returns:''' <div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">'''Type:''' ''string''<br /></div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
==== Player.SetSubtitle ====
Set the subtitle displayed by the player<br />
'''Permissions:'''
* ControlPlayback
'''Parameters:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
# ''[[#Player.Id|Player.Id]]'' playerid<br />
# ''mixed: string|integer'' subtitle<br />
# [''boolean'' enable = False] (Whether to enable subtitles to be displayed after setting the new subtitle)<br />
</div>
'''Returns:'''  
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
'''Type:''' ''string''<br />
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
  "type": "method",
   "description": "Set the subtitle displayed by the player",
   "description": "Set the subtitle displayed by the player",
  "transport": "Response",
  "permission": "ControlPlayback",
   "params": [
   "params": [
     {
     {
      "$ref": "Player.Id",
       "name": "playerid",
       "name": "playerid",
      "$ref": "Player.Id",
       "required": true
       "required": true
     },
     },
Line 5,354: Line 3,622:
       "type": [
       "type": [
         {
         {
           "type": "string",
           "enums": [
          "enum": [
             "previous",
             "previous",
             "next",
             "next",
             "off",
             "off",
             "on"
             "on"
           ]
           ],
          "type": "string"
         },
         },
         {
         {
           "type": "integer",
           "description": "Index of the subtitle to display",
           "minimum": 0,
           "minimum": 0,
           "description": "Index of the subtitle to display"
           "type": "integer"
         }
         }
       ]
       ]
     },
     },
     {
     {
      "default": false,
      "description": "Whether to enable subtitles to be displayed after setting the new subtitle",
       "name": "enable",
       "name": "enable",
       "type": "boolean",
       "type": "boolean"
      "default": false,
      "description": "Whether to enable subtitles to be displayed after setting the new subtitle"
     }
     }
   ],
   ],
   "returns": "string"
  "permission": "ControlPlayback",
}
   "returns": {
</syntaxhighlight>}}
    "type": "string"
==== Player.SetVideoStream ====
  },
Set the video stream played by the player<br />
  "type": "method"
'''Permissions:'''
}</syntaxhighlight>}}==== Player.SetVideoStream ====Set the video stream played by the player<br />'''Permissions:'''* ControlPlayback'''Parameters:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA"># ''[[#Player.Id|Player.Id]]'' playerid<br /># ''mixed: string|integer'' stream<br /></div>'''Returns:''' <div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">'''Type:''' ''string''<br /></div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
* ControlPlayback
'''Parameters:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
# ''[[#Player.Id|Player.Id]]'' playerid<br />
# ''mixed: string|integer'' stream<br />
</div>
'''Returns:'''  
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
'''Type:''' ''string''<br />
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
  "type": "method",
   "description": "Set the video stream played by the player",
   "description": "Set the video stream played by the player",
  "transport": "Response",
  "permission": "ControlPlayback",
   "params": [
   "params": [
     {
     {
      "$ref": "Player.Id",
       "name": "playerid",
       "name": "playerid",
      "$ref": "Player.Id",
       "required": true
       "required": true
     },
     },
Line 5,409: Line 3,662:
       "type": [
       "type": [
         {
         {
           "type": "string",
           "enums": [
          "enum": [
             "previous",
             "previous",
             "next"
             "next"
           ]
           ],
          "type": "string"
         },
         },
         {
         {
           "type": "integer",
           "description": "Index of the video stream to play",
           "minimum": 0,
           "minimum": 0,
           "description": "Index of the video stream to play"
           "type": "integer"
         }
         }
       ]
       ]
     }
     }
   ],
   ],
   "returns": "string"
  "permission": "ControlPlayback",
}
   "returns": {
</syntaxhighlight>}}
    "type": "string"
==== Player.SetViewMode ====
  },
Set view mode of video player<br />
  "type": "method"
'''Permissions:'''
}</syntaxhighlight>}}==== Player.SetViewMode ====Set view mode of video player<br />'''Permissions:'''* ControlPlayback'''Parameters:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA"># ''mixed: [[#Player.CustomViewMode|Player.CustomViewMode]]|[[#Player.ViewMode|Player.ViewMode]]'' viewmode<br /></div>'''Returns:''' <div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">'''Type:''' ''string''<br /></div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
* ControlPlayback
'''Parameters:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
# ''mixed: [[#Player.CustomViewMode|Player.CustomViewMode]]|[[#Player.ViewMode|Player.ViewMode]]'' viewmode<br />
</div>
'''Returns:'''  
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
'''Type:''' ''string''<br />
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
  "type": "method",
   "description": "Set view mode of video player",
   "description": "Set view mode of video player",
  "transport": "Response",
  "permission": "ControlPlayback",
   "params": [
   "params": [
     {
     {
       "name": "viewmode",
       "name": "viewmode",
      "required": true,
       "type": [
       "type": [
         {
         {
           "$ref": "Player.CustomViewMode",
           "$ref": "Player.CustomViewMode",
           "description": "Custom view mode",
           "description": "Custom view mode"
          "required": true
         },
         },
         {
         {
          "name": "value",
           "$ref": "Player.ViewMode"
           "$ref": "Player.ViewMode",
          "required": true
         }
         }
       ],
       ]
      "required": true
     }
     }
   ],
   ],
  "returns": "string"
}
</syntaxhighlight>}}
==== Player.Stop ====
Stops playback<br />
'''Permissions:'''
* ControlPlayback
'''Parameters:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
# ''[[#Player.Id|Player.Id]]'' playerid<br />
</div>
'''Returns:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
'''Type:''' ''string''<br />
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
  "type": "method",
  "description": "Stops playback",
  "transport": "Response",
   "permission": "ControlPlayback",
   "permission": "ControlPlayback",
   "params": [
  "returns": {
    "type": "string"
  },
  "type": "method"
}</syntaxhighlight>}}==== Player.Stop ====Stops playback<br />'''Permissions:'''* ControlPlayback'''Parameters:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA"># ''[[#Player.Id|Player.Id]]'' playerid<br /></div>'''Returns:''' <div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">'''Type:''' ''string''<br /></div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
  "description": "Stops playback",
   "params": [
     {
     {
      "$ref": "Player.Id",
       "name": "playerid",
       "name": "playerid",
      "$ref": "Player.Id",
       "required": true
       "required": true
     }
     }
   ],
   ],
   "returns": "string"
  "permission": "ControlPlayback",
}
   "returns": {
</syntaxhighlight>}}
    "type": "string"
==== Player.Zoom ====
  },
Zoom current picture<br />
  "type": "method"
'''Permissions:'''
}</syntaxhighlight>}}==== Player.Zoom ====Zoom current picture<br />'''Permissions:'''* ControlPlayback'''Parameters:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA"># ''[[#Player.Id|Player.Id]]'' playerid<br /># ''mixed: string|integer'' zoom<br /></div>'''Returns:''' <div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">'''Type:''' ''string''<br /></div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
* ControlPlayback
'''Parameters:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
# ''[[#Player.Id|Player.Id]]'' playerid<br />
# ''mixed: string|integer'' zoom<br />
</div>
'''Returns:'''  
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
'''Type:''' ''string''<br />
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
  "type": "method",
   "description": "Zoom current picture",
   "description": "Zoom current picture",
  "transport": "Response",
  "permission": "ControlPlayback",
   "params": [
   "params": [
     {
     {
      "$ref": "Player.Id",
       "name": "playerid",
       "name": "playerid",
      "$ref": "Player.Id",
       "required": true
       "required": true
     },
     },
     {
     {
       "name": "zoom",
       "name": "zoom",
      "required": true,
       "type": [
       "type": [
         {
         {
           "type": "string",
           "enums": [
          "enum": [
             "in",
             "in",
             "out"
             "out"
           ],
           ],
           "required": true
           "type": "string"
         },
         },
         {
         {
           "type": "integer",
           "description": "zoom level",
          "maximum": 10,
           "minimum": 1,
           "minimum": 1,
           "maximum": 10,
           "type": "integer"
          "description": "zoom level",
          "required": true
         }
         }
       ],
       ]
      "required": true
     }
     }
   ],
   ],
   "returns": "string"
  "permission": "ControlPlayback",
}
   "returns": {
</syntaxhighlight>}}
    "type": "string"
=== Playlist ===
  },
==== Playlist.Add ====
  "type": "method"
Add item(s) to playlist<br />
}</syntaxhighlight>}}=== Playlist ======= Playlist.Add ====Add item(s) to playlist<br />'''Permissions:'''* ControlPlayback'''Parameters:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA"># ''[[#Playlist.Id|Playlist.Id]]'' playlistid<br /># ''mixed: [[#Playlist.Item|Playlist.Item]]|array'' item<br /></div>'''Returns:''' <div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">'''Type:''' ''string''<br /></div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
'''Permissions:'''
* ControlPlayback
'''Parameters:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
# ''[[#Playlist.Id|Playlist.Id]]'' playlistid<br />
# ''mixed: [[#Playlist.Item|Playlist.Item]]|array'' item<br />
</div>
'''Returns:'''  
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
'''Type:''' ''string''<br />
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
  "type": "method",
   "description": "Add item(s) to playlist",
   "description": "Add item(s) to playlist",
  "transport": "Response",
  "permission": "ControlPlayback",
   "params": [
   "params": [
     {
     {
      "$ref": "Playlist.Id",
       "name": "playlistid",
       "name": "playlistid",
      "$ref": "Playlist.Id",
       "required": true
       "required": true
     },
     },
     {
     {
       "name": "item",
       "name": "item",
      "required": true,
       "type": [
       "type": [
         {
         {
           "$ref": "Playlist.Item",
           "$ref": "Playlist.Item"
          "required": true
         },
         },
         {
         {
          "type": "array",
           "items": {
           "items": {
             "$ref": "Playlist.Item"
             "$ref": "Playlist.Item"
           },
           },
           "required": true
           "type": "array"
         }
         }
       ],
       ]
      "required": true
     }
     }
   ],
   ],
   "returns": "string"
  "permission": "ControlPlayback",
}
   "returns": {
</syntaxhighlight>}}
    "type": "string"
==== Playlist.Clear ====
  },
Clear playlist<br />
  "type": "method"
'''Permissions:'''
}</syntaxhighlight>}}==== Playlist.Clear ====Clear playlist<br />'''Permissions:'''* ControlPlayback'''Parameters:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA"># ''[[#Playlist.Id|Playlist.Id]]'' playlistid<br /></div>'''Returns:''' <div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">'''Type:''' ''string''<br /></div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
* ControlPlayback
'''Parameters:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
# ''[[#Playlist.Id|Playlist.Id]]'' playlistid<br />
</div>
'''Returns:'''  
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
'''Type:''' ''string''<br />
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
  "type": "method",
   "description": "Clear playlist",
   "description": "Clear playlist",
  "transport": "Response",
  "permission": "ControlPlayback",
   "params": [
   "params": [
     {
     {
      "$ref": "Playlist.Id",
       "name": "playlistid",
       "name": "playlistid",
      "$ref": "Playlist.Id",
       "required": true
       "required": true
     }
     }
   ],
   ],
   "returns": "string"
  "permission": "ControlPlayback",
}
   "returns": {
</syntaxhighlight>}}
    "type": "string"
==== Playlist.GetItems ====
  },
Get all items from playlist<br />
  "type": "method"
'''Permissions:'''
}</syntaxhighlight>}}==== Playlist.GetItems ====Get all items from playlist<br />'''Permissions:'''* ReadData'''Parameters:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA"># ''[[#Playlist.Id|Playlist.Id]]'' playlistid<br /># [''[[#List.Fields.All|List.Fields.All]]'' properties]<br /># [''[[#List.Limits|List.Limits]]'' limits]<br /># [''[[#List.Sort|List.Sort]]'' sort]<br /></div>'''Returns:''' <div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">'''Type:''' ''object''<br />'''Properties:'''# ''array[[#List.Item.All|List.Item.All]]'' items<br /># ''[[#List.LimitsReturned|List.LimitsReturned]]'' limits<br /></div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
* ReadData
'''Parameters:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
# ''[[#Playlist.Id|Playlist.Id]]'' playlistid<br />
# [''[[#List.Fields.All|List.Fields.All]]'' properties]<br />
# [''[[#List.Limits|List.Limits]]'' limits]<br />
# [''[[#List.Sort|List.Sort]]'' sort]<br />
</div>
'''Returns:'''  
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
'''Type:''' ''object''<br />
'''Properties:'''
# ''[[#List.LimitsReturned|List.LimitsReturned]]'' limits<br />
# ''array[[#List.Item.All|List.Item.All]]'' items<br />
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
  "type": "method",
   "description": "Get all items from playlist",
   "description": "Get all items from playlist",
  "transport": "Response",
  "permission": "ReadData",
   "params": [
   "params": [
     {
     {
      "$ref": "Playlist.Id",
       "name": "playlistid",
       "name": "playlistid",
      "$ref": "Playlist.Id",
       "required": true
       "required": true
     },
     },
     {
     {
       "name": "properties",
       "$ref": "List.Fields.All",
       "$ref": "List.Fields.All"
       "name": "properties"
     },
     },
     {
     {
       "name": "limits",
       "$ref": "List.Limits",
       "$ref": "List.Limits"
       "name": "limits"
     },
     },
     {
     {
       "name": "sort",
       "$ref": "List.Sort",
       "$ref": "List.Sort"
       "name": "sort"
     }
     }
   ],
   ],
  "permission": "ReadData",
   "returns": {
   "returns": {
    "type": "object",
     "properties": {
     "properties": {
      "limits": {
        "$ref": "List.LimitsReturned",
        "required": true
      },
       "items": {
       "items": {
        "type": "array",
         "items": {
         "items": {
           "$ref": "List.Item.All"
           "$ref": "List.Item.All"
         },
         },
        "required": true,
        "type": "array"
      },
      "limits": {
        "$ref": "List.LimitsReturned",
         "required": true
         "required": true
       }
       }
     }
     },
   }
    "type": "object"
}
   },
</syntaxhighlight>}}
  "type": "method"
==== Playlist.GetPlaylists ====
}</syntaxhighlight>}}==== Playlist.GetPlaylists ====Returns all existing playlists<br />'''Permissions:'''* ReadData'''Returns:''' <div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">'''Type:''' ''array''<br /></div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
Returns all existing playlists<br />
'''Permissions:'''
* ReadData
'''Returns:'''  
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
'''Type:''' ''array''<br />
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
  "type": "method",
   "description": "Returns all existing playlists",
   "description": "Returns all existing playlists",
   "transport": "Response",
   "params": [],
   "permission": "ReadData",
   "permission": "ReadData",
  "params": [],
   "returns": {
   "returns": {
    "type": "array",
    "uniqueItems": true,
     "items": {
     "items": {
      "type": "object",
       "properties": {
       "properties": {
         "playlistid": {
         "playlistid": {
Line 5,708: Line 3,847:
           "required": true
           "required": true
         }
         }
       }
       },
     }
      "type": "object"
   }
     },
}
    "type": "array",
</syntaxhighlight>}}
    "uniqueItems": true
==== Playlist.GetProperties ====
   },
Retrieves the values of the given properties<br />
  "type": "method"
'''Permissions:'''
}</syntaxhighlight>}}==== Playlist.GetProperties ====Retrieves the values of the given properties<br />'''Permissions:'''* ReadData'''Parameters:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA"># ''[[#Playlist.Id|Playlist.Id]]'' playlistid<br /># ''array'' properties<br /></div>'''Returns:''' <div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">'''Type:''' ''[[#Playlist.Property.Value|Playlist.Property.Value]]''<br /></div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
* ReadData
'''Parameters:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
# ''[[#Playlist.Id|Playlist.Id]]'' playlistid<br />
# ''array'' properties<br />
</div>
'''Returns:'''  
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
'''Type:''' ''[[#Playlist.Property.Value|Playlist.Property.Value]]''<br />
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
  "type": "method",
   "description": "Retrieves the values of the given properties",
   "description": "Retrieves the values of the given properties",
  "transport": "Response",
  "permission": "ReadData",
   "params": [
   "params": [
     {
     {
      "$ref": "Playlist.Id",
       "name": "playlistid",
       "name": "playlistid",
      "$ref": "Playlist.Id",
       "required": true
       "required": true
     },
     },
     {
     {
      "items": {
        "$ref": "Playlist.Property.Name"
      },
       "name": "properties",
       "name": "properties",
      "required": true,
       "type": "array",
       "type": "array",
       "uniqueItems": true,
       "uniqueItems": true
      "required": true,
      "items": {
        "$ref": "Playlist.Property.Name"
      }
     }
     }
   ],
   ],
  "permission": "ReadData",
   "returns": {
   "returns": {
     "$ref": "Playlist.Property.Value",
     "$ref": "Playlist.Property.Value"
    "required": true
  },
  }
  "type": "method"
}
}</syntaxhighlight>}}==== Playlist.Insert ====Insert item(s) into playlist. Does not work for picture playlists (aka slideshows).<br />'''Permissions:'''* ControlPlayback'''Parameters:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA"># ''[[#Playlist.Id|Playlist.Id]]'' playlistid<br /># ''[[#Playlist.Position|Playlist.Position]]'' position<br /># ''mixed: [[#Playlist.Item|Playlist.Item]]|array'' item<br /></div>'''Returns:''' <div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">'''Type:''' ''string''<br /></div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
</syntaxhighlight>}}
==== Playlist.Insert ====
Insert item(s) into playlist. Does not work for picture playlists (aka slideshows).<br />
'''Permissions:'''
* ControlPlayback
'''Parameters:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
# ''[[#Playlist.Id|Playlist.Id]]'' playlistid<br />
# ''[[#Playlist.Position|Playlist.Position]]'' position<br />
# ''mixed: [[#Playlist.Item|Playlist.Item]]|array'' item<br />
</div>
'''Returns:'''  
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
'''Type:''' ''string''<br />
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
  "type": "method",
   "description": "Insert item(s) into playlist. Does not work for picture playlists (aka slideshows).",
   "description": "Insert item(s) into playlist. Does not work for picture playlists (aka slideshows).",
  "transport": "Response",
  "permission": "ControlPlayback",
   "params": [
   "params": [
     {
     {
      "$ref": "Playlist.Id",
       "name": "playlistid",
       "name": "playlistid",
      "$ref": "Playlist.Id",
       "required": true
       "required": true
     },
     },
     {
     {
      "$ref": "Playlist.Position",
       "name": "position",
       "name": "position",
      "$ref": "Playlist.Position",
       "required": true
       "required": true
     },
     },
     {
     {
       "name": "item",
       "name": "item",
      "required": true,
       "type": [
       "type": [
         {
         {
           "$ref": "Playlist.Item",
           "$ref": "Playlist.Item"
          "required": true
         },
         },
         {
         {
          "type": "array",
           "items": {
           "items": {
             "$ref": "Playlist.Item"
             "$ref": "Playlist.Item"
           },
           },
           "required": true
           "type": "array"
         }
         }
       ],
       ]
      "required": true
     }
     }
   ],
   ],
   "returns": "string"
  "permission": "ControlPlayback",
}
   "returns": {
</syntaxhighlight>}}
    "type": "string"
==== Playlist.Remove ====
  },
Remove item from playlist. Does not work for picture playlists (aka slideshows).<br />
  "type": "method"
'''Permissions:'''
}</syntaxhighlight>}}==== Playlist.Remove ====Remove item from playlist. Does not work for picture playlists (aka slideshows).<br />'''Permissions:'''* ControlPlayback'''Parameters:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA"># ''[[#Playlist.Id|Playlist.Id]]'' playlistid<br /># ''[[#Playlist.Position|Playlist.Position]]'' position<br /></div>'''Returns:''' <div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">'''Type:''' ''string''<br /></div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
* ControlPlayback
'''Parameters:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
# ''[[#Playlist.Id|Playlist.Id]]'' playlistid<br />
# ''[[#Playlist.Position|Playlist.Position]]'' position<br />
</div>
'''Returns:'''  
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
'''Type:''' ''string''<br />
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
  "type": "method",
   "description": "Remove item from playlist. Does not work for picture playlists (aka slideshows).",
   "description": "Remove item from playlist. Does not work for picture playlists (aka slideshows).",
  "transport": "Response",
  "permission": "ControlPlayback",
   "params": [
   "params": [
     {
     {
      "$ref": "Playlist.Id",
       "name": "playlistid",
       "name": "playlistid",
      "$ref": "Playlist.Id",
       "required": true
       "required": true
     },
     },
     {
     {
      "$ref": "Playlist.Position",
       "name": "position",
       "name": "position",
      "$ref": "Playlist.Position",
       "required": true
       "required": true
     }
     }
   ],
   ],
   "returns": "string"
  "permission": "ControlPlayback",
}
   "returns": {
</syntaxhighlight>}}
    "type": "string"
==== Playlist.Swap ====
  },
Swap items in the playlist. Does not work for picture playlists (aka slideshows).<br />
  "type": "method"
'''Permissions:'''
}</syntaxhighlight>}}==== Playlist.Swap ====Swap items in the playlist. Does not work for picture playlists (aka slideshows).<br />'''Permissions:'''* ControlPlayback'''Parameters:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA"># ''[[#Playlist.Id|Playlist.Id]]'' playlistid<br /># ''[[#Playlist.Position|Playlist.Position]]'' position1<br /># ''[[#Playlist.Position|Playlist.Position]]'' position2<br /></div>'''Returns:''' <div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">'''Type:''' ''string''<br /></div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
* ControlPlayback
'''Parameters:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
# ''[[#Playlist.Id|Playlist.Id]]'' playlistid<br />
# ''[[#Playlist.Position|Playlist.Position]]'' position1<br />
# ''[[#Playlist.Position|Playlist.Position]]'' position2<br />
</div>
'''Returns:'''  
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
'''Type:''' ''string''<br />
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
  "type": "method",
   "description": "Swap items in the playlist. Does not work for picture playlists (aka slideshows).",
   "description": "Swap items in the playlist. Does not work for picture playlists (aka slideshows).",
  "transport": "Response",
  "permission": "ControlPlayback",
   "params": [
   "params": [
     {
     {
      "$ref": "Playlist.Id",
       "name": "playlistid",
       "name": "playlistid",
      "$ref": "Playlist.Id",
       "required": true
       "required": true
     },
     },
     {
     {
      "$ref": "Playlist.Position",
       "name": "position1",
       "name": "position1",
      "$ref": "Playlist.Position",
       "required": true
       "required": true
     },
     },
     {
     {
      "$ref": "Playlist.Position",
       "name": "position2",
       "name": "position2",
      "$ref": "Playlist.Position",
       "required": true
       "required": true
     }
     }
   ],
   ],
   "returns": "string"
  "permission": "ControlPlayback",
}
   "returns": {
</syntaxhighlight>}}
    "type": "string"
=== Profiles ===
  },
==== Profiles.GetCurrentProfile ====
  "type": "method"
Retrieve the current profile<br />
}</syntaxhighlight>}}=== Profiles ======= Profiles.GetCurrentProfile ====Retrieve the current profile<br />'''Permissions:'''* ReadData'''Parameters:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA"># [''[[#Profiles.Fields.Profile|Profiles.Fields.Profile]]'' properties]<br /></div>'''Returns:''' <div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">'''Type:''' ''[[#Profiles.Details.Profile|Profiles.Details.Profile]]''<br /></div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
'''Permissions:'''
* ReadData
'''Parameters:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
# [''[[#Profiles.Fields.Profile|Profiles.Fields.Profile]]'' properties]<br />
</div>
'''Returns:'''  
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
'''Type:''' ''[[#Profiles.Details.Profile|Profiles.Details.Profile]]''<br />
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
  "type": "method",
   "description": "Retrieve the current profile",
   "description": "Retrieve the current profile",
  "transport": "Response",
  "permission": "ReadData",
   "params": [
   "params": [
     {
     {
       "name": "properties",
       "$ref": "Profiles.Fields.Profile",
       "$ref": "Profiles.Fields.Profile"
       "name": "properties"
     }
     }
   ],
   ],
  "permission": "ReadData",
   "returns": {
   "returns": {
     "$ref": "Profiles.Details.Profile",
     "$ref": "Profiles.Details.Profile"
    "required": true
  },
  }
  "type": "method"
}
}</syntaxhighlight>}}==== Profiles.GetProfiles ====Retrieve all profiles<br />'''Permissions:'''* ReadData'''Parameters:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA"># [''[[#Profiles.Fields.Profile|Profiles.Fields.Profile]]'' properties]<br /># [''[[#List.Limits|List.Limits]]'' limits]<br /># [''[[#List.Sort|List.Sort]]'' sort]<br /></div>'''Returns:''' <div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">'''Type:''' ''object''<br />'''Properties:'''# ''[[#List.LimitsReturned|List.LimitsReturned]]'' limits<br /># ''array[[#Profiles.Details.Profile|Profiles.Details.Profile]]'' profiles<br /></div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
</syntaxhighlight>}}
==== Profiles.GetProfiles ====
Retrieve all profiles<br />
'''Permissions:'''
* ReadData
'''Parameters:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
# [''[[#Profiles.Fields.Profile|Profiles.Fields.Profile]]'' properties]<br />
# [''[[#List.Limits|List.Limits]]'' limits]<br />
# [''[[#List.Sort|List.Sort]]'' sort]<br />
</div>
'''Returns:'''  
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
'''Type:''' ''object''<br />
'''Properties:'''
# ''[[#List.LimitsReturned|List.LimitsReturned]]'' limits<br />
# ''array[[#Profiles.Details.Profile|Profiles.Details.Profile]]'' profiles<br />
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
  "type": "method",
   "description": "Retrieve all profiles",
   "description": "Retrieve all profiles",
  "transport": "Response",
  "permission": "ReadData",
   "params": [
   "params": [
     {
     {
       "name": "properties",
       "$ref": "Profiles.Fields.Profile",
       "$ref": "Profiles.Fields.Profile"
       "name": "properties"
     },
     },
     {
     {
       "name": "limits",
       "$ref": "List.Limits",
       "$ref": "List.Limits"
       "name": "limits"
     },
     },
     {
     {
       "name": "sort",
       "$ref": "List.Sort",
       "$ref": "List.Sort"
       "name": "sort"
     }
     }
   ],
   ],
  "permission": "ReadData",
   "returns": {
   "returns": {
    "type": "object",
     "properties": {
     "properties": {
       "limits": {
       "limits": {
Line 5,956: Line 3,991:
       },
       },
       "profiles": {
       "profiles": {
        "type": "array",
        "required": true,
         "items": {
         "items": {
           "$ref": "Profiles.Details.Profile"
           "$ref": "Profiles.Details.Profile"
         }
         },
        "required": true,
        "type": "array"
       }
       }
     }
     },
   }
    "type": "object"
}
   },
</syntaxhighlight>}}
  "type": "method"
==== Profiles.LoadProfile ====
}</syntaxhighlight>}}==== Profiles.LoadProfile ====Load the specified profile<br />'''Permissions:'''* Navigate'''Parameters:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA"># ''string'' profile (Profile name)<br /># [''boolean'' prompt = False] (Prompt for password)<br /># [''[[#Profiles.Password|Profiles.Password]]'' password]<br /></div>'''Returns:''' <div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">'''Type:''' ''string''<br /></div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
Load the specified profile<br />
'''Permissions:'''
* Navigate
'''Parameters:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
# ''string'' profile (Profile name)<br />
# [''boolean'' prompt] (Prompt for password)<br />
# [''[[#Profiles.Password|Profiles.Password]]'' password]<br />
</div>
'''Returns:'''  
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
'''Type:''' ''string''<br />
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
  "type": "method",
   "description": "Load the specified profile",
   "description": "Load the specified profile",
  "transport": "Response",
  "permission": "Navigate",
   "params": [
   "params": [
     {
     {
      "description": "Profile name",
       "name": "profile",
       "name": "profile",
      "type": "string",
       "required": true,
       "required": true,
       "description": "Profile name"
       "type": "string"
     },
     },
     {
     {
      "default": false,
      "description": "Prompt for password",
       "name": "prompt",
       "name": "prompt",
       "type": "boolean",
       "type": "boolean"
      "description": "Prompt for password"
     },
     },
     {
     {
       "name": "password",
       "$ref": "Profiles.Password",
       "$ref": "Profiles.Password"
       "name": "password"
     }
     }
   ],
   ],
   "returns": "string"
  "permission": "Navigate",
}
   "returns": {
</syntaxhighlight>}}
    "type": "string"
=== Settings ===
  },
==== Settings.GetCategories ====
  "type": "method"
Retrieves all setting categories<br />
}</syntaxhighlight>}}=== Settings ======= Settings.GetCategories ====Retrieves all setting categories<br />'''Permissions:'''* ReadData'''Parameters:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA"># [''[[#Setting.Level|Setting.Level]]'' level = standard]<br /># [''string'' section = ""]<br /># [''string'' properties]<br /></div>'''Returns:''' <div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">'''Type:''' ''object''<br />'''Properties:'''# [''array[[#Setting.Details.Category|Setting.Details.Category]]'' categories]<br /></div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
'''Permissions:'''
* ReadData
'''Parameters:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
# [''[[#Setting.Level|Setting.Level]]'' level = standard]<br />
# [''string'' section = ""]<br />
# [''string'' properties]<br />
</div>
'''Returns:'''  
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
'''Type:''' ''object''<br />
'''Properties:'''
# [''array[[#Setting.Details.Category|Setting.Details.Category]]'' categories]<br />
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
  "type": "method",
   "description": "Retrieves all setting categories",
   "description": "Retrieves all setting categories",
  "transport": "Response",
  "permission": "ReadData",
   "params": [
   "params": [
     {
     {
      "name": "level",
       "$ref": "Setting.Level",
       "$ref": "Setting.Level",
       "default": "standard"
       "default": "standard",
      "name": "level"
     },
     },
     {
     {
      "default": "",
       "name": "section",
       "name": "section",
       "type": "string",
       "type": "string"
      "default": ""
     },
     },
     {
     {
      "name": "properties",
       "extends": "Item.Fields.Base",
       "extends": "Item.Fields.Base",
       "items": {
       "items": {
         "type": "string",
         "enums": [
        "enum": [
           "settings"
           "settings"
         ]
         ],
       }
        "type": "string"
       },
      "name": "properties"
     }
     }
   ],
   ],
  "permission": "ReadData",
   "returns": {
   "returns": {
    "type": "object",
     "properties": {
     "properties": {
       "categories": {
       "categories": {
        "type": "array",
         "items": {
         "items": {
           "$ref": "Setting.Details.Category"
           "$ref": "Setting.Details.Category"
         }
         },
        "type": "array"
       }
       }
     }
     },
   }
    "type": "object"
}
   },
</syntaxhighlight>}}
  "type": "method"
==== Settings.GetSections ====
}</syntaxhighlight>}}==== Settings.GetSections ====Retrieves all setting sections<br />'''Permissions:'''* ReadData'''Parameters:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA"># [''[[#Setting.Level|Setting.Level]]'' level = standard]<br /># [''[[#Setting.Level|Setting.Level]]'' properties]<br /></div>'''Returns:''' <div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">'''Type:''' ''object''<br />'''Properties:'''# [''array[[#Setting.Details.Section|Setting.Details.Section]]'' sections]<br /></div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
Retrieves all setting sections<br />
'''Permissions:'''
* ReadData
'''Parameters:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
# [''[[#Setting.Level|Setting.Level]]'' level = standard]<br />
# [''[[#Setting.Level|Setting.Level]]'' properties]<br />
</div>
'''Returns:'''  
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
'''Type:''' ''object''<br />
'''Properties:'''
# [''array[[#Setting.Details.Section|Setting.Details.Section]]'' sections]<br />
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
  "type": "method",
   "description": "Retrieves all setting sections",
   "description": "Retrieves all setting sections",
  "transport": "Response",
  "permission": "ReadData",
   "params": [
   "params": [
     {
     {
      "name": "level",
       "$ref": "Setting.Level",
       "$ref": "Setting.Level",
       "default": "standard"
       "default": "standard",
      "name": "level"
     },
     },
     {
     {
      "name": "properties",
       "extends": "Item.Fields.Base",
       "extends": "Item.Fields.Base",
       "items": {
       "items": {
         "type": "string",
         "enums": [
        "enum": [
           "categories"
           "categories"
         ]
         ],
       }
        "type": "string"
       },
      "name": "properties"
     }
     }
   ],
   ],
  "permission": "ReadData",
   "returns": {
   "returns": {
    "type": "object",
     "properties": {
     "properties": {
       "sections": {
       "sections": {
        "type": "array",
         "items": {
         "items": {
           "$ref": "Setting.Details.Section"
           "$ref": "Setting.Details.Section"
         }
         },
        "type": "array"
       }
       }
     }
     },
   }
    "type": "object"
}
   },
</syntaxhighlight>}}
  "type": "method"
==== Settings.GetSettingValue ====
}</syntaxhighlight>}}==== Settings.GetSettingValue ====Retrieves the value of a setting<br />'''Permissions:'''* ReadData'''Parameters:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA"># ''string'' setting<br /></div>'''Returns:''' <div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">'''Type:''' ''object''<br />'''Properties:'''# ''[[#Setting.Value.Extended|Setting.Value.Extended]]'' value<br /></div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
Retrieves the value of a setting<br />
'''Permissions:'''
* ReadData
'''Parameters:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
# ''string'' setting<br />
</div>
'''Returns:'''  
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
'''Type:''' ''object''<br />
'''Properties:'''
# ''[[#Setting.Value.Extended|Setting.Value.Extended]]'' value<br />
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
  "type": "method",
   "description": "Retrieves the value of a setting",
   "description": "Retrieves the value of a setting",
  "transport": "Response",
  "permission": "ReadData",
   "params": [
   "params": [
     {
     {
      "minLength": 1,
       "name": "setting",
       "name": "setting",
      "type": "string",
       "required": true,
       "required": true,
       "minLength": 1
       "type": "string"
     }
     }
   ],
   ],
  "permission": "ReadData",
   "returns": {
   "returns": {
    "type": "object",
     "properties": {
     "properties": {
       "value": {
       "value": {
Line 6,150: Line 4,112:
         "required": true
         "required": true
       }
       }
     }
     },
   }
    "type": "object"
}
   },
</syntaxhighlight>}}
  "type": "method"
==== Settings.GetSettings ====
}</syntaxhighlight>}}==== Settings.GetSettings ====Retrieves all settings<br />'''Permissions:'''* ReadData'''Parameters:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA"># [''[[#Setting.Level|Setting.Level]]'' level = standard]<br /># [''mixed: object'' filter]<br /></div>'''Returns:''' <div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">'''Type:''' ''object''<br />'''Properties:'''# [''array[[#Setting.Details.Setting|Setting.Details.Setting]]'' settings]<br /></div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
Retrieves all settings<br />
'''Permissions:'''
* ReadData
'''Parameters:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
# [''[[#Setting.Level|Setting.Level]]'' level = standard]<br />
# [''mixed: object'' filter = None]<br />
</div>
'''Returns:'''  
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
'''Type:''' ''object''<br />
'''Properties:'''
# [''array[[#Setting.Details.Setting|Setting.Details.Setting]]'' settings]<br />
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
  "type": "method",
   "description": "Retrieves all settings",
   "description": "Retrieves all settings",
  "transport": "Response",
  "permission": "ReadData",
   "params": [
   "params": [
     {
     {
      "name": "level",
       "$ref": "Setting.Level",
       "$ref": "Setting.Level",
       "default": "standard"
       "default": "standard",
      "name": "level"
     },
     },
     {
     {
Line 6,185: Line 4,128:
       "type": [
       "type": [
         {
         {
           "type": "object",
           "additionalProperties": false,
           "properties": {
           "properties": {
             "section": {
             "category": {
               "type": "string",
               "minLength": 1,
               "required": true,
               "required": true,
               "minLength": 1
               "type": "string"
             },
             },
             "category": {
             "section": {
               "type": "string",
               "minLength": 1,
               "required": true,
               "required": true,
               "minLength": 1
               "type": "string"
             }
             }
           },
           },
           "additionalProperties": false,
           "type": "object"
          "required": true
         }
         }
       ],
       ]
      "default": null
     }
     }
   ],
   ],
  "permission": "ReadData",
   "returns": {
   "returns": {
    "type": "object",
     "properties": {
     "properties": {
       "settings": {
       "settings": {
        "type": "array",
         "items": {
         "items": {
           "$ref": "Setting.Details.Setting"
           "$ref": "Setting.Details.Setting"
         }
         },
        "type": "array"
       }
       }
     }
     },
   }
    "type": "object"
}
   },
</syntaxhighlight>}}
  "type": "method"
==== Settings.ResetSettingValue ====
}</syntaxhighlight>}}==== Settings.ResetSettingValue ====Resets the value of a setting<br />'''Permissions:'''* ReadData'''Parameters:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA"># ''string'' setting<br /></div>'''Returns:''' <div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">'''Type:''' ''string''<br /></div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
Resets the value of a setting<br />
'''Permissions:'''
* WriteSetting
'''Parameters:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
# ''string'' setting<br />
</div>
'''Returns:'''  
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
'''Type:''' ''string''<br />
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
  "type": "method",
   "description": "Resets the value of a setting",
   "description": "Resets the value of a setting",
  "transport": "Response",
  "permission": "WriteSetting",
   "params": [
   "params": [
     {
     {
      "minLength": 1,
       "name": "setting",
       "name": "setting",
      "type": "string",
       "required": true,
       "required": true,
       "minLength": 1
       "type": "string"
     }
     }
   ],
   ],
   "returns": "string"
  "permission": "ReadData",
}
   "returns": {
</syntaxhighlight>}}
    "type": "string"
==== Settings.SetSettingValue ====
  },
Changes the value of a setting<br />
  "type": "method"
'''Permissions:'''
}</syntaxhighlight>}}==== Settings.SetSettingValue ====Changes the value of a setting<br />'''Permissions:'''* ReadData'''Parameters:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA"># ''string'' setting<br /># ''[[#Setting.Value.Extended|Setting.Value.Extended]]'' value<br /></div>'''Returns:''' <div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">'''Type:''' ''boolean''<br /></div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
* WriteSetting
'''Parameters:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
# ''string'' setting<br />
# ''[[#Setting.Value.Extended|Setting.Value.Extended]]'' value<br />
</div>
'''Returns:'''  
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
'''Type:''' ''boolean''<br />
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
  "type": "method",
   "description": "Changes the value of a setting",
   "description": "Changes the value of a setting",
  "transport": "Response",
  "permission": "WriteSetting",
   "params": [
   "params": [
     {
     {
      "minLength": 1,
       "name": "setting",
       "name": "setting",
      "type": "string",
       "required": true,
       "required": true,
       "minLength": 1
       "type": "string"
     },
     },
     {
     {
      "$ref": "Setting.Value.Extended",
       "name": "value",
       "name": "value",
      "$ref": "Setting.Value.Extended",
       "required": true
       "required": true
     }
     }
   ],
   ],
   "returns": "boolean"
  "permission": "ReadData",
}
   "returns": {
</syntaxhighlight>}}
    "type": "boolean"
=== System ===
  },
==== System.EjectOpticalDrive ====
  "type": "method"
Ejects or closes the optical disc drive (if available)<br />
}</syntaxhighlight>}}=== System ======= System.EjectOpticalDrive ====Ejects or closes the optical disc drive (if available)<br />'''Permissions:'''* ControlSystem'''Returns:''' <div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">'''Type:''' ''string''<br /></div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
'''Permissions:'''
* ControlSystem
'''Returns:'''  
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
'''Type:''' ''string''<br />
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
  "type": "method",
   "description": "Ejects or closes the optical disc drive (if available)",
   "description": "Ejects or closes the optical disc drive (if available)",
   "transport": "Response",
   "params": [],
   "permission": "ControlSystem",
   "permission": "ControlSystem",
   "params": [],
   "returns": {
   "returns": "string"
    "type": "string"
}
  },
</syntaxhighlight>}}
   "type": "method"
==== System.GetProperties ====
}</syntaxhighlight>}}==== System.GetProperties ====Retrieves the values of the given properties<br />'''Permissions:'''* ReadData'''Parameters:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA"># ''array'' properties<br /></div>'''Returns:''' <div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">'''Type:''' ''[[#System.Property.Value|System.Property.Value]]''<br /></div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
Retrieves the values of the given properties<br />
'''Permissions:'''
* ReadData
'''Parameters:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
# ''array'' properties<br />
</div>
'''Returns:'''  
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
'''Type:''' ''[[#System.Property.Value|System.Property.Value]]''<br />
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
  "type": "method",
   "description": "Retrieves the values of the given properties",
   "description": "Retrieves the values of the given properties",
  "transport": "Response",
  "permission": "ReadData",
   "params": [
   "params": [
     {
     {
      "items": {
        "$ref": "System.Property.Name"
      },
       "name": "properties",
       "name": "properties",
      "required": true,
       "type": "array",
       "type": "array",
       "uniqueItems": true,
       "uniqueItems": true
      "required": true,
      "items": {
        "$ref": "System.Property.Name"
      }
     }
     }
   ],
   ],
  "permission": "ReadData",
   "returns": {
   "returns": {
     "$ref": "System.Property.Value",
     "$ref": "System.Property.Value"
    "required": true
  },
  }
  "type": "method"
}
}</syntaxhighlight>}}==== System.Hibernate ====Puts the system running Kodi into hibernate mode<br />'''Permissions:'''* ControlPower'''Returns:''' <div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">'''Type:''' ''string''<br /></div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
</syntaxhighlight>}}
   "description": "Puts the system running Kodi into hibernate mode",
==== System.Hibernate ====
   "params": [],
Puts the system running Kodi into hibernate mode<br />
'''Permissions:'''
* ControlPower
'''Returns:'''  
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
'''Type:''' ''string''<br />
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
  "type": "method",
   "description": "Puts the system running Kodi into hibernate mode",
   "transport": "Response",
   "permission": "ControlPower",
   "permission": "ControlPower",
  "returns": {
    "type": "string"
  },
  "type": "method"
}</syntaxhighlight>}}==== System.Reboot ====Reboots the system running Kodi<br />'''Permissions:'''* ControlPower'''Returns:''' <div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">'''Type:''' ''string''<br /></div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
  "description": "Reboots the system running Kodi",
   "params": [],
   "params": [],
  "returns": "string"
}
</syntaxhighlight>}}
==== System.Reboot ====
Reboots the system running Kodi<br />
'''Permissions:'''
* ControlPower
'''Returns:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
'''Type:''' ''string''<br />
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
  "type": "method",
  "description": "Reboots the system running Kodi",
  "transport": "Response",
   "permission": "ControlPower",
   "permission": "ControlPower",
  "returns": {
    "type": "string"
  },
  "type": "method"
}</syntaxhighlight>}}==== System.Shutdown ====Shuts the system running Kodi down<br />'''Permissions:'''* ControlPower'''Returns:''' <div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">'''Type:''' ''string''<br /></div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
  "description": "Shuts the system running Kodi down",
   "params": [],
   "params": [],
  "returns": "string"
}
</syntaxhighlight>}}
==== System.Shutdown ====
Shuts the system running Kodi down<br />
'''Permissions:'''
* ControlPower
'''Returns:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
'''Type:''' ''string''<br />
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
  "type": "method",
  "description": "Shuts the system running Kodi down",
  "transport": "Response",
   "permission": "ControlPower",
   "permission": "ControlPower",
  "returns": {
    "type": "string"
  },
  "type": "method"
}</syntaxhighlight>}}==== System.Suspend ====Suspends the system running Kodi<br />'''Permissions:'''* ControlPower'''Returns:''' <div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">'''Type:''' ''string''<br /></div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
  "description": "Suspends the system running Kodi",
   "params": [],
   "params": [],
  "returns": "string"
}
</syntaxhighlight>}}
==== System.Suspend ====
Suspends the system running Kodi<br />
'''Permissions:'''
* ControlPower
'''Returns:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
'''Type:''' ''string''<br />
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
  "type": "method",
  "description": "Suspends the system running Kodi",
  "transport": "Response",
   "permission": "ControlPower",
   "permission": "ControlPower",
   "params": [],
   "returns": {
   "returns": "string"
    "type": "string"
}
  },
</syntaxhighlight>}}
   "type": "method"
=== Textures ===
}</syntaxhighlight>}}=== Textures ======= Textures.GetTextures ====Retrieve all textures<br />'''Permissions:'''* ReadData'''Parameters:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA"># [''[[#Textures.Fields.Texture|Textures.Fields.Texture]]'' properties]<br /># [''[[#List.Filter.Textures|List.Filter.Textures]]'' filter]<br /></div>'''Returns:''' <div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">'''Type:''' ''object''<br />'''Properties:'''# ''array[[#Textures.Details.Texture|Textures.Details.Texture]]'' textures<br /></div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
==== Textures.GetTextures ====
Retrieve all textures<br />
'''Permissions:'''
* ReadData
'''Parameters:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
# [''[[#Textures.Fields.Texture|Textures.Fields.Texture]]'' properties]<br />
# [''[[#List.Filter.Textures|List.Filter.Textures]]'' filter]<br />
</div>
'''Returns:'''  
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
'''Type:''' ''object''<br />
'''Properties:'''
# ''array[[#Textures.Details.Texture|Textures.Details.Texture]]'' textures<br />
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
  "type": "method",
   "description": "Retrieve all textures",
   "description": "Retrieve all textures",
  "transport": "Response",
  "permission": "ReadData",
   "params": [
   "params": [
     {
     {
       "name": "properties",
       "$ref": "Textures.Fields.Texture",
       "$ref": "Textures.Fields.Texture"
       "name": "properties"
     },
     },
     {
     {
       "name": "filter",
       "$ref": "List.Filter.Textures",
       "$ref": "List.Filter.Textures"
       "name": "filter"
     }
     }
   ],
   ],
  "permission": "ReadData",
   "returns": {
   "returns": {
    "type": "object",
     "properties": {
     "properties": {
       "textures": {
       "textures": {
        "type": "array",
        "required": true,
         "items": {
         "items": {
           "$ref": "Textures.Details.Texture"
           "$ref": "Textures.Details.Texture"
         }
         },
        "required": true,
        "type": "array"
       }
       }
     }
     },
   }
    "type": "object"
}
   },
</syntaxhighlight>}}
  "type": "method"
==== Textures.RemoveTexture ====
}</syntaxhighlight>}}==== Textures.RemoveTexture ====Remove the specified texture<br />'''Permissions:'''* RemoveData'''Parameters:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA"># ''[[#Library.Id|Library.Id]]'' textureid (Texture database identifier)<br /></div>'''Returns:''' <div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">'''Type:''' ''string''<br /></div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
Remove the specified texture<br />
'''Permissions:'''
* RemoveData
'''Parameters:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
# ''[[#Library.Id|Library.Id]]'' textureid (Texture database identifier)<br />
</div>
'''Returns:'''  
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
'''Type:''' ''string''<br />
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
  "type": "method",
   "description": "Remove the specified texture",
   "description": "Remove the specified texture",
  "transport": "Response",
  "permission": "RemoveData",
   "params": [
   "params": [
     {
     {
      "$ref": "Library.Id",
      "description": "Texture database identifier",
       "name": "textureid",
       "name": "textureid",
      "$ref": "Library.Id",
       "required": true
       "required": true,
      "description": "Texture database identifier"
     }
     }
   ],
   ],
  "returns": "string"
}
</syntaxhighlight>}}
=== VideoLibrary ===
==== VideoLibrary.Clean ====
Cleans the video library for non-existent items<br />
'''Permissions:'''
* RemoveData
'''Parameters:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
# [''boolean'' showdialogs = True] (Whether or not to show the progress bar or any other GUI dialog)<br />
# [''string'' content = video] (Content type to clean for)<br />
</div>
'''Returns:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
'''Type:''' ''string''<br />
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
  "type": "method",
  "description": "Cleans the video library for non-existent items",
  "transport": "Response",
   "permission": "RemoveData",
   "permission": "RemoveData",
   "params": [
  "returns": {
    "type": "string"
  },
  "type": "method"
}</syntaxhighlight>}}=== VideoLibrary ======= VideoLibrary.Clean ====Cleans the video library for non-existent items<br />'''Permissions:'''* RemoveData'''Parameters:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA"># [''boolean'' showdialogs = True] (Whether or not to show the progress bar or any other GUI dialog)<br /># [''string'' content = video] (Content type to clean for)<br /></div>'''Returns:''' <div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">'''Type:''' ''string''<br /></div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
  "description": "Cleans the video library for non-existent items",
   "params": [
     {
     {
      "default": true,
      "description": "Whether or not to show the progress bar or any other GUI dialog",
       "name": "showdialogs",
       "name": "showdialogs",
       "type": "boolean",
       "type": "boolean"
      "default": true,
      "description": "Whether or not to show the progress bar or any other GUI dialog"
     },
     },
     {
     {
      "name": "content",
      "type": "string",
       "default": "video",
       "default": "video",
       "enum": [
       "description": "Content type to clean for",
      "enums": [
         "video",
         "video",
         "movies",
         "movies",
Line 6,520: Line 4,311:
         "musicvideos"
         "musicvideos"
       ],
       ],
       "description": "Content type to clean for"
       "name": "content",
      "type": "string"
     }
     }
   ],
   ],
   "returns": "string"
  "permission": "RemoveData",
}
   "returns": {
</syntaxhighlight>}}
    "type": "string"
==== VideoLibrary.Export ====
  },
Exports all items from the video library<br />
  "type": "method"
'''Permissions:'''
}</syntaxhighlight>}}==== VideoLibrary.Export ====Exports all items from the video library<br />'''Permissions:'''* WriteFile'''Parameters:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA"># [''mixed: object|object'' options]<br /></div>'''Returns:''' <div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">'''Type:''' ''string''<br /></div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
* WriteFile
'''Parameters:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
# [''mixed: object|object'' options]<br />
</div>
'''Returns:'''  
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
'''Type:''' ''string''<br />
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
  "type": "method",
   "description": "Exports all items from the video library",
   "description": "Exports all items from the video library",
  "transport": "Response",
  "permission": "WriteFile",
   "params": [
   "params": [
     {
     {
Line 6,549: Line 4,327:
       "type": [
       "type": [
         {
         {
          "type": "object",
          "required": true,
           "additionalProperties": false,
           "additionalProperties": false,
           "properties": {
           "properties": {
             "path": {
             "path": {
               "type": "string",
               "description": "Path to the directory to where the data should be exported",
              "minLength": 1,
               "required": true,
               "required": true,
               "minLength": 1,
               "type": "string"
              "description": "Path to the directory to where the data should be exported"
             }
             }
           }
           },
          "type": "object"
         },
         },
         {
         {
          "type": "object",
          "required": true,
           "additionalProperties": false,
           "additionalProperties": false,
           "properties": {
           "properties": {
             "overwrite": {
             "actorthumbs": {
              "type": "boolean",
               "default": false,
               "default": false,
               "description": "Whether to overwrite existing exported files"
               "description": "Whether to export actor thumbnails",
              "type": "boolean"
             },
             },
             "images": {
             "images": {
              "type": "boolean",
               "default": false,
               "default": false,
               "description": "Whether to export thumbnails and fanart images"
               "description": "Whether to export thumbnails and fanart images",
              "type": "boolean"
             },
             },
             "actorthumbs": {
             "overwrite": {
              "type": "boolean",
               "default": false,
               "default": false,
               "description": "Whether to export actor thumbnails"
               "description": "Whether to overwrite existing exported files",
              "type": "boolean"
             }
             }
           }
           },
          "type": "object"
         }
         }
       ]
       ]
     }
     }
   ],
   ],
   "returns": "string"
  "permission": "WriteFile",
}
   "returns": {
</syntaxhighlight>}}
    "type": "string"
==== VideoLibrary.GetEpisodeDetails ====
  },
Retrieve details about a specific tv show episode<br />
  "type": "method"
'''Permissions:'''
}</syntaxhighlight>}}==== VideoLibrary.GetEpisodeDetails ====Retrieve details about a specific tv show episode<br />'''Permissions:'''* ReadData'''Parameters:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA"># ''[[#Library.Id|Library.Id]]'' episodeid<br /># [''[[#Video.Fields.Episode|Video.Fields.Episode]]'' properties]<br /></div>'''Returns:''' <div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">'''Type:''' ''object''<br />'''Properties:'''# [''[[#Video.Details.Episode|Video.Details.Episode]]'' episodedetails]<br /></div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
* ReadData
'''Parameters:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
# ''[[#Library.Id|Library.Id]]'' episodeid<br />
# [''[[#Video.Fields.Episode|Video.Fields.Episode]]'' properties]<br />
</div>
'''Returns:'''  
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
'''Type:''' ''object''<br />
'''Properties:'''
# [''[[#Video.Details.Episode|Video.Details.Episode]]'' episodedetails]<br />
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
  "type": "method",
   "description": "Retrieve details about a specific tv show episode",
   "description": "Retrieve details about a specific tv show episode",
  "transport": "Response",
  "permission": "ReadData",
   "params": [
   "params": [
     {
     {
      "$ref": "Library.Id",
       "name": "episodeid",
       "name": "episodeid",
      "$ref": "Library.Id",
       "required": true
       "required": true
     },
     },
     {
     {
       "name": "properties",
       "$ref": "Video.Fields.Episode",
       "$ref": "Video.Fields.Episode"
       "name": "properties"
     }
     }
   ],
   ],
  "permission": "ReadData",
   "returns": {
   "returns": {
    "type": "object",
     "properties": {
     "properties": {
       "episodedetails": {
       "episodedetails": {
         "$ref": "Video.Details.Episode"
         "$ref": "Video.Details.Episode"
       }
       }
     }
     },
   }
    "type": "object"
}
   },
</syntaxhighlight>}}
  "type": "method"
==== VideoLibrary.GetEpisodes ====
}</syntaxhighlight>}}==== VideoLibrary.GetEpisodes ====Retrieve all tv show episodes<br />'''Permissions:'''* ReadData'''Parameters:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA"># [''[[#Library.Id|Library.Id]]'' tvshowid = -1]<br /># [''integer'' season = -1]<br /># [''[[#Video.Fields.Episode|Video.Fields.Episode]]'' properties]<br /># [''[[#List.Limits|List.Limits]]'' limits]<br /># [''[[#List.Sort|List.Sort]]'' sort]<br /># [''mixed: object|object|object|object|object|[[#List.Filter.Episodes|List.Filter.Episodes]]'' filter]<br /></div>'''Returns:''' <div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">'''Type:''' ''object''<br />'''Properties:'''# [''array[[#Video.Details.Episode|Video.Details.Episode]]'' episodes]<br /># ''[[#List.LimitsReturned|List.LimitsReturned]]'' limits<br /></div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
Retrieve all tv show episodes<br />
'''Permissions:'''
* ReadData
'''Parameters:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
# [''[[#Library.Id|Library.Id]]'' tvshowid]<br />
# [''integer'' season = -1]<br />
# [''[[#Video.Fields.Episode|Video.Fields.Episode]]'' properties]<br />
# [''[[#List.Limits|List.Limits]]'' limits]<br />
# [''[[#List.Sort|List.Sort]]'' sort]<br />
# [''mixed: object|object|object|object|object|[[#List.Filter.Episodes|List.Filter.Episodes]]'' filter]<br />
</div>
'''Returns:'''  
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
'''Type:''' ''object''<br />
'''Properties:'''
# ''[[#List.LimitsReturned|List.LimitsReturned]]'' limits<br />
# [''array[[#Video.Details.Episode|Video.Details.Episode]]'' episodes]<br />
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
  "type": "method",
   "description": "Retrieve all tv show episodes",
   "description": "Retrieve all tv show episodes",
  "transport": "Response",
  "permission": "ReadData",
   "params": [
   "params": [
     {
     {
       "name": "tvshowid",
       "$ref": "Library.Id",
       "$ref": "Library.Id"
      "default": -1,
       "name": "tvshowid"
     },
     },
     {
     {
      "default": -1,
      "minimum": 0,
       "name": "season",
       "name": "season",
       "type": "integer",
       "type": "integer"
      "minimum": 0,
      "default": -1
     },
     },
     {
     {
       "name": "properties",
       "$ref": "Video.Fields.Episode",
       "$ref": "Video.Fields.Episode"
       "name": "properties"
     },
     },
     {
     {
       "name": "limits",
       "$ref": "List.Limits",
       "$ref": "List.Limits"
       "name": "limits"
     },
     },
     {
     {
       "name": "sort",
       "$ref": "List.Sort",
       "$ref": "List.Sort"
       "name": "sort"
     },
     },
     {
     {
Line 6,684: Line 4,420:
       "type": [
       "type": [
         {
         {
           "type": "object",
           "additionalProperties": false,
           "properties": {
           "properties": {
             "genreid": {
             "genreid": {
               "$ref": "Library.Id",
               "$ref": "Library.Id",
              "required": true,
               "description": "Requires tvshowid to be set",
               "description": "Requires tvshowid to be set"
              "required": true
             }
             }
           },
           },
           "additionalProperties": false
           "type": "object"
         },
         },
         {
         {
           "type": "object",
           "additionalProperties": false,
           "properties": {
           "properties": {
             "genre": {
             "genre": {
               "type": "string",
               "description": "Requires tvshowid to be set",
               "minLength": 1,
               "minLength": 1,
               "required": true,
               "required": true,
               "description": "Requires tvshowid to be set"
               "type": "string"
             }
             }
           },
           },
           "additionalProperties": false
           "type": "object"
         },
         },
         {
         {
           "type": "object",
           "additionalProperties": false,
           "properties": {
           "properties": {
             "year": {
             "year": {
              "type": "integer",
               "minimum": 0,
               "minimum": 0,
               "required": true
               "required": true,
              "type": "integer"
             }
             }
           },
           },
           "additionalProperties": false
           "type": "object"
         },
         },
         {
         {
           "type": "object",
           "additionalProperties": false,
           "properties": {
           "properties": {
             "actor": {
             "actor": {
               "type": "string",
               "description": "Requires tvshowid to be set",
               "minLength": 1,
               "minLength": 1,
               "required": true,
               "required": true,
               "description": "Requires tvshowid to be set"
               "type": "string"
             }
             }
           },
           },
           "additionalProperties": false
           "type": "object"
         },
         },
         {
         {
           "type": "object",
           "additionalProperties": false,
           "properties": {
           "properties": {
             "director": {
             "director": {
              "type": "string",
               "minLength": 1,
               "minLength": 1,
               "required": true
               "required": true,
              "type": "string"
             }
             }
           },
           },
           "additionalProperties": false
           "type": "object"
         },
         },
         {
         {
Line 6,746: Line 4,482:
     }
     }
   ],
   ],
  "permission": "ReadData",
   "returns": {
   "returns": {
    "type": "object",
     "properties": {
     "properties": {
      "episodes": {
        "items": {
          "$ref": "Video.Details.Episode"
        },
        "type": "array"
      },
       "limits": {
       "limits": {
         "$ref": "List.LimitsReturned",
         "$ref": "List.LimitsReturned",
         "required": true
         "required": true
      },
      "episodes": {
        "type": "array",
        "items": {
          "$ref": "Video.Details.Episode"
        }
       }
       }
     }
     },
   }
    "type": "object"
}
   },
</syntaxhighlight>}}
  "type": "method"
==== VideoLibrary.GetGenres ====
}</syntaxhighlight>}}==== VideoLibrary.GetGenres ====Retrieve all genres<br />'''Permissions:'''* ReadData'''Parameters:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA"># ''string'' type<br /># [''[[#Library.Fields.Genre|Library.Fields.Genre]]'' properties]<br /># [''[[#List.Limits|List.Limits]]'' limits]<br /># [''[[#List.Sort|List.Sort]]'' sort]<br /></div>'''Returns:''' <div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">'''Type:''' ''object''<br />'''Properties:'''# ''array[[#Library.Details.Genre|Library.Details.Genre]]'' genres<br /># ''[[#List.LimitsReturned|List.LimitsReturned]]'' limits<br /></div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
Retrieve all genres<br />
'''Permissions:'''
* ReadData
'''Parameters:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
# ''string'' type<br />
# [''[[#Library.Fields.Genre|Library.Fields.Genre]]'' properties]<br />
# [''[[#List.Limits|List.Limits]]'' limits]<br />
# [''[[#List.Sort|List.Sort]]'' sort]<br />
</div>
'''Returns:'''  
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
'''Type:''' ''object''<br />
'''Properties:'''
# ''[[#List.LimitsReturned|List.LimitsReturned]]'' limits<br />
# ''array[[#Library.Details.Genre|Library.Details.Genre]]'' genres<br />
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
  "type": "method",
   "description": "Retrieve all genres",
   "description": "Retrieve all genres",
  "transport": "Response",
  "permission": "ReadData",
   "params": [
   "params": [
     {
     {
       "name": "type",
       "enums": [
      "type": "string",
      "required": true,
      "enum": [
         "movie",
         "movie",
         "tvshow",
         "tvshow",
         "musicvideo"
         "musicvideo"
       ]
       ],
      "name": "type",
      "required": true,
      "type": "string"
     },
     },
     {
     {
       "name": "properties",
       "$ref": "Library.Fields.Genre",
       "$ref": "Library.Fields.Genre"
       "name": "properties"
     },
     },
     {
     {
       "name": "limits",
       "$ref": "List.Limits",
       "$ref": "List.Limits"
       "name": "limits"
     },
     },
     {
     {
       "name": "sort",
       "$ref": "List.Sort",
       "$ref": "List.Sort"
       "name": "sort"
     }
     }
   ],
   ],
  "permission": "ReadData",
   "returns": {
   "returns": {
    "type": "object",
     "properties": {
     "properties": {
      "genres": {
        "items": {
          "$ref": "Library.Details.Genre"
        },
        "required": true,
        "type": "array"
      },
       "limits": {
       "limits": {
         "$ref": "List.LimitsReturned",
         "$ref": "List.LimitsReturned",
         "required": true
         "required": true
      },
      "genres": {
        "type": "array",
        "required": true,
        "items": {
          "$ref": "Library.Details.Genre"
        }
       }
       }
     }
     },
   }
    "type": "object"
}
   },
</syntaxhighlight>}}
  "type": "method"
==== VideoLibrary.GetInProgressTVShows ====
}</syntaxhighlight>}}==== VideoLibrary.GetInProgressTVShows ====Retrieve all in progress tvshows<br />'''Permissions:'''* ReadData'''Parameters:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA"># [''[[#Video.Fields.TVShow|Video.Fields.TVShow]]'' properties]<br /># [''[[#List.Limits|List.Limits]]'' limits]<br /># [''[[#List.Sort|List.Sort]]'' sort]<br /></div>'''Returns:''' <div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">'''Type:''' ''object''<br />'''Properties:'''# ''[[#List.LimitsReturned|List.LimitsReturned]]'' limits<br /># [''array[[#Video.Details.TVShow|Video.Details.TVShow]]'' tvshows]<br /></div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
Retrieve all in progress tvshows<br />
'''Permissions:'''
* ReadData
'''Parameters:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
# [''[[#Video.Fields.TVShow|Video.Fields.TVShow]]'' properties]<br />
# [''[[#List.Limits|List.Limits]]'' limits]<br />
# [''[[#List.Sort|List.Sort]]'' sort]<br />
</div>
'''Returns:'''  
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
'''Type:''' ''object''<br />
'''Properties:'''
# ''[[#List.LimitsReturned|List.LimitsReturned]]'' limits<br />
# [''array[[#Video.Details.TVShow|Video.Details.TVShow]]'' tvshows]<br />
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
  "type": "method",
   "description": "Retrieve all in progress tvshows",
   "description": "Retrieve all in progress tvshows",
  "transport": "Response",
  "permission": "ReadData",
   "params": [
   "params": [
     {
     {
       "name": "properties",
       "$ref": "Video.Fields.TVShow",
       "$ref": "Video.Fields.TVShow"
       "name": "properties"
     },
     },
     {
     {
       "name": "limits",
       "$ref": "List.Limits",
       "$ref": "List.Limits"
       "name": "limits"
     },
     },
     {
     {
       "name": "sort",
       "$ref": "List.Sort",
       "$ref": "List.Sort"
       "name": "sort"
     }
     }
   ],
   ],
  "permission": "ReadData",
   "returns": {
   "returns": {
    "type": "object",
     "properties": {
     "properties": {
       "limits": {
       "limits": {
Line 6,874: Line 4,567:
       },
       },
       "tvshows": {
       "tvshows": {
        "type": "array",
         "items": {
         "items": {
           "$ref": "Video.Details.TVShow"
           "$ref": "Video.Details.TVShow"
         }
         },
        "type": "array"
       }
       }
     }
     },
   }
    "type": "object"
}
   },
</syntaxhighlight>}}
  "type": "method"
==== VideoLibrary.GetMovieDetails ====
}</syntaxhighlight>}}==== VideoLibrary.GetMovieDetails ====Retrieve details about a specific movie<br />'''Permissions:'''* ReadData'''Parameters:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA"># ''[[#Library.Id|Library.Id]]'' movieid<br /># [''[[#Video.Fields.Movie|Video.Fields.Movie]]'' properties]<br /></div>'''Returns:''' <div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">'''Type:''' ''object''<br />'''Properties:'''# [''[[#Video.Details.Movie|Video.Details.Movie]]'' moviedetails]<br /></div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
Retrieve details about a specific movie<br />
'''Permissions:'''
* ReadData
'''Parameters:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
# ''[[#Library.Id|Library.Id]]'' movieid<br />
# [''[[#Video.Fields.Movie|Video.Fields.Movie]]'' properties]<br />
</div>
'''Returns:'''  
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
'''Type:''' ''object''<br />
'''Properties:'''
# [''[[#Video.Details.Movie|Video.Details.Movie]]'' moviedetails]<br />
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
  "type": "method",
   "description": "Retrieve details about a specific movie",
   "description": "Retrieve details about a specific movie",
  "transport": "Response",
  "permission": "ReadData",
   "params": [
   "params": [
     {
     {
      "$ref": "Library.Id",
       "name": "movieid",
       "name": "movieid",
      "$ref": "Library.Id",
       "required": true
       "required": true
     },
     },
     {
     {
       "name": "properties",
       "$ref": "Video.Fields.Movie",
       "$ref": "Video.Fields.Movie"
       "name": "properties"
     }
     }
   ],
   ],
  "permission": "ReadData",
   "returns": {
   "returns": {
    "type": "object",
     "properties": {
     "properties": {
       "moviedetails": {
       "moviedetails": {
         "$ref": "Video.Details.Movie"
         "$ref": "Video.Details.Movie"
       }
       }
     }
     },
   }
    "type": "object"
}
   },
</syntaxhighlight>}}
  "type": "method"
==== VideoLibrary.GetMovieSetDetails ====
}</syntaxhighlight>}}==== VideoLibrary.GetMovieSetDetails ====Retrieve details about a specific movie set<br />'''Permissions:'''* ReadData'''Parameters:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA"># ''[[#Library.Id|Library.Id]]'' setid<br /># [''[[#Video.Fields.MovieSet|Video.Fields.MovieSet]]'' properties]<br /># [''object'' movies]<br /></div>'''Returns:''' <div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">'''Type:''' ''object''<br />'''Properties:'''# [''[[#Video.Details.MovieSet.Extended|Video.Details.MovieSet.Extended]]'' setdetails]<br /></div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
Retrieve details about a specific movie set<br />
'''Permissions:'''
* ReadData
'''Parameters:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
# ''[[#Library.Id|Library.Id]]'' setid<br />
# [''[[#Video.Fields.MovieSet|Video.Fields.MovieSet]]'' properties]<br />
# [''object'' movies]<br />
</div>
'''Returns:'''  
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
'''Type:''' ''object''<br />
'''Properties:'''
# [''[[#Video.Details.MovieSet.Extended|Video.Details.MovieSet.Extended]]'' setdetails]<br />
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
  "type": "method",
   "description": "Retrieve details about a specific movie set",
   "description": "Retrieve details about a specific movie set",
  "transport": "Response",
  "permission": "ReadData",
   "params": [
   "params": [
     {
     {
      "$ref": "Library.Id",
       "name": "setid",
       "name": "setid",
      "$ref": "Library.Id",
       "required": true
       "required": true
     },
     },
     {
     {
       "name": "properties",
       "$ref": "Video.Fields.MovieSet",
       "$ref": "Video.Fields.MovieSet"
       "name": "properties"
     },
     },
     {
     {
       "name": "movies",
       "name": "movies",
      "type": "object",
       "properties": {
       "properties": {
        "limits": {
          "$ref": "List.Limits"
        },
         "properties": {
         "properties": {
           "$ref": "Video.Fields.Movie"
           "$ref": "Video.Fields.Movie"
        },
        "limits": {
          "$ref": "List.Limits"
         },
         },
         "sort": {
         "sort": {
           "$ref": "List.Sort"
           "$ref": "List.Sort"
         }
         }
       }
       },
      "type": "object"
     }
     }
   ],
   ],
  "permission": "ReadData",
   "returns": {
   "returns": {
    "type": "object",
     "properties": {
     "properties": {
       "setdetails": {
       "setdetails": {
         "$ref": "Video.Details.MovieSet.Extended"
         "$ref": "Video.Details.MovieSet.Extended"
       }
       }
     }
     },
   }
    "type": "object"
}
   },
</syntaxhighlight>}}
  "type": "method"
==== VideoLibrary.GetMovieSets ====
}</syntaxhighlight>}}==== VideoLibrary.GetMovieSets ====Retrieve all movie sets<br />'''Permissions:'''* ReadData'''Parameters:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA"># [''[[#Video.Fields.MovieSet|Video.Fields.MovieSet]]'' properties]<br /># [''[[#List.Limits|List.Limits]]'' limits]<br /># [''[[#List.Sort|List.Sort]]'' sort]<br /></div>'''Returns:''' <div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">'''Type:''' ''object''<br />'''Properties:'''# ''[[#List.LimitsReturned|List.LimitsReturned]]'' limits<br /># [''array[[#Video.Details.MovieSet|Video.Details.MovieSet]]'' sets]<br /></div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
Retrieve all movie sets<br />
'''Permissions:'''
* ReadData
'''Parameters:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
# [''[[#Video.Fields.MovieSet|Video.Fields.MovieSet]]'' properties]<br />
# [''[[#List.Limits|List.Limits]]'' limits]<br />
# [''[[#List.Sort|List.Sort]]'' sort]<br />
</div>
'''Returns:'''  
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
'''Type:''' ''object''<br />
'''Properties:'''
# ''[[#List.LimitsReturned|List.LimitsReturned]]'' limits<br />
# [''array[[#Video.Details.MovieSet|Video.Details.MovieSet]]'' sets]<br />
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
  "type": "method",
   "description": "Retrieve all movie sets",
   "description": "Retrieve all movie sets",
  "transport": "Response",
  "permission": "ReadData",
   "params": [
   "params": [
     {
     {
       "name": "properties",
       "$ref": "Video.Fields.MovieSet",
       "$ref": "Video.Fields.MovieSet"
       "name": "properties"
     },
     },
     {
     {
       "name": "limits",
       "$ref": "List.Limits",
       "$ref": "List.Limits"
       "name": "limits"
     },
     },
     {
     {
       "name": "sort",
       "$ref": "List.Sort",
       "$ref": "List.Sort"
       "name": "sort"
     }
     }
   ],
   ],
  "permission": "ReadData",
   "returns": {
   "returns": {
    "type": "object",
     "properties": {
     "properties": {
       "limits": {
       "limits": {
Line 7,028: Line 4,661:
       },
       },
       "sets": {
       "sets": {
        "type": "array",
         "items": {
         "items": {
           "$ref": "Video.Details.MovieSet"
           "$ref": "Video.Details.MovieSet"
         }
         },
        "type": "array"
       }
       }
     }
     },
   }
    "type": "object"
}
   },
</syntaxhighlight>}}
  "type": "method"
==== VideoLibrary.GetMovies ====
}</syntaxhighlight>}}==== VideoLibrary.GetMovies ====Retrieve all movies<br />'''Permissions:'''* ReadData'''Parameters:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA"># [''[[#Video.Fields.Movie|Video.Fields.Movie]]'' properties]<br /># [''[[#List.Limits|List.Limits]]'' limits]<br /># [''[[#List.Sort|List.Sort]]'' sort]<br /># [''mixed: object|object|object|object|object|object|object|object|object|object|[[#List.Filter.Movies|List.Filter.Movies]]'' filter]<br /></div>'''Returns:''' <div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">'''Type:''' ''object''<br />'''Properties:'''# ''[[#List.LimitsReturned|List.LimitsReturned]]'' limits<br /># [''array[[#Video.Details.Movie|Video.Details.Movie]]'' movies]<br /></div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
Retrieve all movies<br />
'''Permissions:'''
* ReadData
'''Parameters:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
# [''[[#Video.Fields.Movie|Video.Fields.Movie]]'' properties]<br />
# [''[[#List.Limits|List.Limits]]'' limits]<br />
# [''[[#List.Sort|List.Sort]]'' sort]<br />
# [''mixed: object|object|object|object|object|object|object|object|object|object|[[#List.Filter.Movies|List.Filter.Movies]]'' filter]<br />
</div>
'''Returns:'''  
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
'''Type:''' ''object''<br />
'''Properties:'''
# ''[[#List.LimitsReturned|List.LimitsReturned]]'' limits<br />
# [''array[[#Video.Details.Movie|Video.Details.Movie]]'' movies]<br />
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
  "type": "method",
   "description": "Retrieve all movies",
   "description": "Retrieve all movies",
  "transport": "Response",
  "permission": "ReadData",
   "params": [
   "params": [
     {
     {
       "name": "properties",
       "$ref": "Video.Fields.Movie",
       "$ref": "Video.Fields.Movie"
       "name": "properties"
     },
     },
     {
     {
       "name": "limits",
       "$ref": "List.Limits",
       "$ref": "List.Limits"
       "name": "limits"
     },
     },
     {
     {
       "name": "sort",
       "$ref": "List.Sort",
       "$ref": "List.Sort"
       "name": "sort"
     },
     },
     {
     {
Line 7,078: Line 4,689:
       "type": [
       "type": [
         {
         {
           "type": "object",
           "additionalProperties": false,
           "properties": {
           "properties": {
             "genreid": {
             "genreid": {
Line 7,085: Line 4,696:
             }
             }
           },
           },
           "additionalProperties": false
           "type": "object"
         },
         },
         {
         {
           "type": "object",
           "additionalProperties": false,
           "properties": {
           "properties": {
             "genre": {
             "genre": {
              "type": "string",
               "minLength": 1,
               "minLength": 1,
               "required": true
               "required": true,
              "type": "string"
             }
             }
           },
           },
           "additionalProperties": false
           "type": "object"
         },
         },
         {
         {
           "type": "object",
           "additionalProperties": false,
           "properties": {
           "properties": {
             "year": {
             "year": {
              "type": "integer",
               "minimum": 0,
               "minimum": 0,
               "required": true
               "required": true,
              "type": "integer"
             }
             }
           },
           },
           "additionalProperties": false
           "type": "object"
         },
         },
         {
         {
           "type": "object",
           "additionalProperties": false,
           "properties": {
           "properties": {
             "actor": {
             "actor": {
              "type": "string",
               "minLength": 1,
               "minLength": 1,
               "required": true
               "required": true,
              "type": "string"
             }
             }
           },
           },
           "additionalProperties": false
           "type": "object"
         },
         },
         {
         {
           "type": "object",
           "additionalProperties": false,
           "properties": {
           "properties": {
             "director": {
             "director": {
              "type": "string",
               "minLength": 1,
               "minLength": 1,
               "required": true
               "required": true,
              "type": "string"
             }
             }
           },
           },
           "additionalProperties": false
           "type": "object"
         },
         },
         {
         {
           "type": "object",
           "additionalProperties": false,
           "properties": {
           "properties": {
             "studio": {
             "studio": {
              "type": "string",
               "minLength": 1,
               "minLength": 1,
               "required": true
               "required": true,
              "type": "string"
             }
             }
           },
           },
           "additionalProperties": false
           "type": "object"
         },
         },
         {
         {
           "type": "object",
           "additionalProperties": false,
           "properties": {
           "properties": {
             "country": {
             "country": {
              "type": "string",
               "minLength": 1,
               "minLength": 1,
               "required": true
               "required": true,
              "type": "string"
             }
             }
           },
           },
           "additionalProperties": false
           "type": "object"
         },
         },
         {
         {
           "type": "object",
           "additionalProperties": false,
           "properties": {
           "properties": {
             "setid": {
             "setid": {
Line 7,161: Line 4,772:
             }
             }
           },
           },
           "additionalProperties": false
           "type": "object"
         },
         },
         {
         {
           "type": "object",
           "additionalProperties": false,
           "properties": {
           "properties": {
             "set": {
             "set": {
              "type": "string",
               "minLength": 1,
               "minLength": 1,
               "required": true
               "required": true,
              "type": "string"
             }
             }
           },
           },
           "additionalProperties": false
           "type": "object"
         },
         },
         {
         {
           "type": "object",
           "additionalProperties": false,
           "properties": {
           "properties": {
             "tag": {
             "tag": {
              "type": "string",
               "minLength": 1,
               "minLength": 1,
               "required": true
               "required": true,
              "type": "string"
             }
             }
           },
           },
           "additionalProperties": false
           "type": "object"
         },
         },
         {
         {
Line 7,191: Line 4,802:
     }
     }
   ],
   ],
  "permission": "ReadData",
   "returns": {
   "returns": {
    "type": "object",
     "properties": {
     "properties": {
       "limits": {
       "limits": {
Line 7,199: Line 4,810:
       },
       },
       "movies": {
       "movies": {
        "type": "array",
         "items": {
         "items": {
           "$ref": "Video.Details.Movie"
           "$ref": "Video.Details.Movie"
         }
         },
        "type": "array"
       }
       }
     }
     },
   }
    "type": "object"
}
   },
</syntaxhighlight>}}
  "type": "method"
==== VideoLibrary.GetMusicVideoDetails ====
}</syntaxhighlight>}}==== VideoLibrary.GetMusicVideoDetails ====Retrieve details about a specific music video<br />'''Permissions:'''* ReadData'''Parameters:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA"># ''[[#Library.Id|Library.Id]]'' musicvideoid<br /># [''[[#Video.Fields.MusicVideo|Video.Fields.MusicVideo]]'' properties]<br /></div>'''Returns:''' <div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">'''Type:''' ''object''<br />'''Properties:'''# [''[[#Video.Details.MusicVideo|Video.Details.MusicVideo]]'' musicvideodetails]<br /></div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
Retrieve details about a specific music video<br />
'''Permissions:'''
* ReadData
'''Parameters:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
# ''[[#Library.Id|Library.Id]]'' musicvideoid<br />
# [''[[#Video.Fields.MusicVideo|Video.Fields.MusicVideo]]'' properties]<br />
</div>
'''Returns:'''  
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
'''Type:''' ''object''<br />
'''Properties:'''
# [''[[#Video.Details.MusicVideo|Video.Details.MusicVideo]]'' musicvideodetails]<br />
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
  "type": "method",
   "description": "Retrieve details about a specific music video",
   "description": "Retrieve details about a specific music video",
  "transport": "Response",
  "permission": "ReadData",
   "params": [
   "params": [
     {
     {
      "$ref": "Library.Id",
       "name": "musicvideoid",
       "name": "musicvideoid",
      "$ref": "Library.Id",
       "required": true
       "required": true
     },
     },
     {
     {
       "name": "properties",
       "$ref": "Video.Fields.MusicVideo",
       "$ref": "Video.Fields.MusicVideo"
       "name": "properties"
     }
     }
   ],
   ],
  "permission": "ReadData",
   "returns": {
   "returns": {
    "type": "object",
     "properties": {
     "properties": {
       "musicvideodetails": {
       "musicvideodetails": {
         "$ref": "Video.Details.MusicVideo"
         "$ref": "Video.Details.MusicVideo"
       }
       }
     }
     },
   }
    "type": "object"
}
   },
</syntaxhighlight>}}
  "type": "method"
==== VideoLibrary.GetMusicVideos ====
}</syntaxhighlight>}}==== VideoLibrary.GetMusicVideos ====Retrieve all music videos<br />'''Permissions:'''* ReadData'''Parameters:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA"># [''[[#Video.Fields.MusicVideo|Video.Fields.MusicVideo]]'' properties]<br /># [''[[#List.Limits|List.Limits]]'' limits]<br /># [''[[#List.Sort|List.Sort]]'' sort]<br /># [''mixed: object|object|object|object|object|object|object|[[#List.Filter.MusicVideos|List.Filter.MusicVideos]]'' filter]<br /></div>'''Returns:''' <div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">'''Type:''' ''object''<br />'''Properties:'''# ''[[#List.LimitsReturned|List.LimitsReturned]]'' limits<br /># [''array[[#Video.Details.MusicVideo|Video.Details.MusicVideo]]'' musicvideos]<br /></div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
Retrieve all music videos<br />
'''Permissions:'''
* ReadData
'''Parameters:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
# [''[[#Video.Fields.MusicVideo|Video.Fields.MusicVideo]]'' properties]<br />
# [''[[#List.Limits|List.Limits]]'' limits]<br />
# [''[[#List.Sort|List.Sort]]'' sort]<br />
# [''mixed: object|object|object|object|object|object|object|[[#List.Filter.MusicVideos|List.Filter.MusicVideos]]'' filter]<br />
</div>
'''Returns:'''  
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
'''Type:''' ''object''<br />
'''Properties:'''
# ''[[#List.LimitsReturned|List.LimitsReturned]]'' limits<br />
# [''array[[#Video.Details.MusicVideo|Video.Details.MusicVideo]]'' musicvideos]<br />
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
  "type": "method",
   "description": "Retrieve all music videos",
   "description": "Retrieve all music videos",
  "transport": "Response",
  "permission": "ReadData",
   "params": [
   "params": [
     {
     {
       "name": "properties",
       "$ref": "Video.Fields.MusicVideo",
       "$ref": "Video.Fields.MusicVideo"
       "name": "properties"
     },
     },
     {
     {
       "name": "limits",
       "$ref": "List.Limits",
       "$ref": "List.Limits"
       "name": "limits"
     },
     },
     {
     {
       "name": "sort",
       "$ref": "List.Sort",
       "$ref": "List.Sort"
       "name": "sort"
     },
     },
     {
     {
Line 7,291: Line 4,861:
       "type": [
       "type": [
         {
         {
           "type": "object",
           "additionalProperties": false,
           "properties": {
           "properties": {
             "artist": {
             "artist": {
              "type": "string",
               "minLength": 1,
               "minLength": 1,
               "required": true
               "required": true,
              "type": "string"
             }
             }
           },
           },
           "additionalProperties": false
           "type": "object"
         },
         },
         {
         {
           "type": "object",
           "additionalProperties": false,
           "properties": {
           "properties": {
             "genreid": {
             "genreid": {
Line 7,309: Line 4,879:
             }
             }
           },
           },
           "additionalProperties": false
           "type": "object"
         },
         },
         {
         {
           "type": "object",
           "additionalProperties": false,
           "properties": {
           "properties": {
             "genre": {
             "genre": {
              "type": "string",
               "minLength": 1,
               "minLength": 1,
               "required": true
               "required": true,
              "type": "string"
             }
             }
           },
           },
           "additionalProperties": false
           "type": "object"
         },
         },
         {
         {
           "type": "object",
           "additionalProperties": false,
           "properties": {
           "properties": {
             "year": {
             "year": {
              "type": "integer",
               "minimum": 0,
               "minimum": 0,
               "required": true
               "required": true,
              "type": "integer"
             }
             }
           },
           },
           "additionalProperties": false
           "type": "object"
         },
         },
         {
         {
           "type": "object",
           "additionalProperties": false,
           "properties": {
           "properties": {
             "director": {
             "director": {
              "type": "string",
               "minLength": 1,
               "minLength": 1,
               "required": true
               "required": true,
              "type": "string"
             }
             }
           },
           },
           "additionalProperties": false
           "type": "object"
         },
         },
         {
         {
           "type": "object",
           "additionalProperties": false,
           "properties": {
           "properties": {
             "studio": {
             "studio": {
              "type": "string",
               "minLength": 1,
               "minLength": 1,
               "required": true
               "required": true,
              "type": "string"
             }
             }
           },
           },
           "additionalProperties": false
           "type": "object"
         },
         },
         {
         {
           "type": "object",
           "additionalProperties": false,
           "properties": {
           "properties": {
             "tag": {
             "tag": {
              "type": "string",
               "minLength": 1,
               "minLength": 1,
               "required": true
               "required": true,
              "type": "string"
             }
             }
           },
           },
           "additionalProperties": false
           "type": "object"
         },
         },
         {
         {
Line 7,372: Line 4,942:
     }
     }
   ],
   ],
  "permission": "ReadData",
   "returns": {
   "returns": {
    "type": "object",
     "properties": {
     "properties": {
       "limits": {
       "limits": {
Line 7,380: Line 4,950:
       },
       },
       "musicvideos": {
       "musicvideos": {
        "type": "array",
         "items": {
         "items": {
           "$ref": "Video.Details.MusicVideo"
           "$ref": "Video.Details.MusicVideo"
         }
         },
        "type": "array"
       }
       }
     }
     },
   }
    "type": "object"
}
   },
</syntaxhighlight>}}
  "type": "method"
==== VideoLibrary.GetRecentlyAddedEpisodes ====
}</syntaxhighlight>}}==== VideoLibrary.GetRecentlyAddedEpisodes ====Retrieve all recently added tv episodes<br />'''Permissions:'''* ReadData'''Parameters:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA"># [''[[#Video.Fields.Episode|Video.Fields.Episode]]'' properties]<br /># [''[[#List.Limits|List.Limits]]'' limits]<br /># [''[[#List.Sort|List.Sort]]'' sort]<br /></div>'''Returns:''' <div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">'''Type:''' ''object''<br />'''Properties:'''# [''array[[#Video.Details.Episode|Video.Details.Episode]]'' episodes]<br /># ''[[#List.LimitsReturned|List.LimitsReturned]]'' limits<br /></div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
Retrieve all recently added tv episodes<br />
'''Permissions:'''
* ReadData
'''Parameters:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
# [''[[#Video.Fields.Episode|Video.Fields.Episode]]'' properties]<br />
# [''[[#List.Limits|List.Limits]]'' limits]<br />
# [''[[#List.Sort|List.Sort]]'' sort]<br />
</div>
'''Returns:'''  
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
'''Type:''' ''object''<br />
'''Properties:'''
# ''[[#List.LimitsReturned|List.LimitsReturned]]'' limits<br />
# [''array[[#Video.Details.Episode|Video.Details.Episode]]'' episodes]<br />
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
  "type": "method",
   "description": "Retrieve all recently added tv episodes",
   "description": "Retrieve all recently added tv episodes",
  "transport": "Response",
  "permission": "ReadData",
   "params": [
   "params": [
     {
     {
       "name": "properties",
       "$ref": "Video.Fields.Episode",
       "$ref": "Video.Fields.Episode"
       "name": "properties"
     },
     },
     {
     {
       "name": "limits",
       "$ref": "List.Limits",
       "$ref": "List.Limits"
       "name": "limits"
     },
     },
     {
     {
       "name": "sort",
       "$ref": "List.Sort",
       "$ref": "List.Sort"
       "name": "sort"
     }
     }
   ],
   ],
  "permission": "ReadData",
   "returns": {
   "returns": {
    "type": "object",
     "properties": {
     "properties": {
      "episodes": {
        "items": {
          "$ref": "Video.Details.Episode"
        },
        "type": "array"
      },
       "limits": {
       "limits": {
         "$ref": "List.LimitsReturned",
         "$ref": "List.LimitsReturned",
         "required": true
         "required": true
      },
      "episodes": {
        "type": "array",
        "items": {
          "$ref": "Video.Details.Episode"
        }
       }
       }
     }
     },
   }
    "type": "object"
}
   },
</syntaxhighlight>}}
  "type": "method"
==== VideoLibrary.GetRecentlyAddedMovies ====
}</syntaxhighlight>}}==== VideoLibrary.GetRecentlyAddedMovies ====Retrieve all recently added movies<br />'''Permissions:'''* ReadData'''Parameters:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA"># [''[[#Video.Fields.Movie|Video.Fields.Movie]]'' properties]<br /># [''[[#List.Limits|List.Limits]]'' limits]<br /># [''[[#List.Sort|List.Sort]]'' sort]<br /></div>'''Returns:''' <div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">'''Type:''' ''object''<br />'''Properties:'''# ''[[#List.LimitsReturned|List.LimitsReturned]]'' limits<br /># [''array[[#Video.Details.Movie|Video.Details.Movie]]'' movies]<br /></div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
Retrieve all recently added movies<br />
'''Permissions:'''
* ReadData
'''Parameters:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
# [''[[#Video.Fields.Movie|Video.Fields.Movie]]'' properties]<br />
# [''[[#List.Limits|List.Limits]]'' limits]<br />
# [''[[#List.Sort|List.Sort]]'' sort]<br />
</div>
'''Returns:'''  
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
'''Type:''' ''object''<br />
'''Properties:'''
# ''[[#List.LimitsReturned|List.LimitsReturned]]'' limits<br />
# [''array[[#Video.Details.Movie|Video.Details.Movie]]'' movies]<br />
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
  "type": "method",
   "description": "Retrieve all recently added movies",
   "description": "Retrieve all recently added movies",
  "transport": "Response",
  "permission": "ReadData",
   "params": [
   "params": [
     {
     {
       "name": "properties",
       "$ref": "Video.Fields.Movie",
       "$ref": "Video.Fields.Movie"
       "name": "properties"
     },
     },
     {
     {
       "name": "limits",
       "$ref": "List.Limits",
       "$ref": "List.Limits"
       "name": "limits"
     },
     },
     {
     {
       "name": "sort",
       "$ref": "List.Sort",
       "$ref": "List.Sort"
       "name": "sort"
     }
     }
   ],
   ],
  "permission": "ReadData",
   "returns": {
   "returns": {
    "type": "object",
     "properties": {
     "properties": {
       "limits": {
       "limits": {
Line 7,488: Line 5,016:
       },
       },
       "movies": {
       "movies": {
        "type": "array",
         "items": {
         "items": {
           "$ref": "Video.Details.Movie"
           "$ref": "Video.Details.Movie"
         }
         },
        "type": "array"
       }
       }
     }
     },
   }
    "type": "object"
}
   },
</syntaxhighlight>}}
  "type": "method"
==== VideoLibrary.GetRecentlyAddedMusicVideos ====
}</syntaxhighlight>}}==== VideoLibrary.GetRecentlyAddedMusicVideos ====Retrieve all recently added music videos<br />'''Permissions:'''* ReadData'''Parameters:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA"># [''[[#Video.Fields.MusicVideo|Video.Fields.MusicVideo]]'' properties]<br /># [''[[#List.Limits|List.Limits]]'' limits]<br /># [''[[#List.Sort|List.Sort]]'' sort]<br /></div>'''Returns:''' <div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">'''Type:''' ''object''<br />'''Properties:'''# ''[[#List.LimitsReturned|List.LimitsReturned]]'' limits<br /># [''array[[#Video.Details.MusicVideo|Video.Details.MusicVideo]]'' musicvideos]<br /></div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
Retrieve all recently added music videos<br />
'''Permissions:'''
* ReadData
'''Parameters:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
# [''[[#Video.Fields.MusicVideo|Video.Fields.MusicVideo]]'' properties]<br />
# [''[[#List.Limits|List.Limits]]'' limits]<br />
# [''[[#List.Sort|List.Sort]]'' sort]<br />
</div>
'''Returns:'''  
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
'''Type:''' ''object''<br />
'''Properties:'''
# ''[[#List.LimitsReturned|List.LimitsReturned]]'' limits<br />
# [''array[[#Video.Details.MusicVideo|Video.Details.MusicVideo]]'' musicvideos]<br />
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
  "type": "method",
   "description": "Retrieve all recently added music videos",
   "description": "Retrieve all recently added music videos",
  "transport": "Response",
  "permission": "ReadData",
   "params": [
   "params": [
     {
     {
       "name": "properties",
       "$ref": "Video.Fields.MusicVideo",
       "$ref": "Video.Fields.MusicVideo"
       "name": "properties"
     },
     },
     {
     {
       "name": "limits",
       "$ref": "List.Limits",
       "$ref": "List.Limits"
       "name": "limits"
     },
     },
     {
     {
       "name": "sort",
       "$ref": "List.Sort",
       "$ref": "List.Sort"
       "name": "sort"
     }
     }
   ],
   ],
  "permission": "ReadData",
   "returns": {
   "returns": {
    "type": "object",
     "properties": {
     "properties": {
       "limits": {
       "limits": {
Line 7,542: Line 5,049:
       },
       },
       "musicvideos": {
       "musicvideos": {
        "type": "array",
         "items": {
         "items": {
           "$ref": "Video.Details.MusicVideo"
           "$ref": "Video.Details.MusicVideo"
         }
         },
        "type": "array"
       }
       }
     }
     },
   }
    "type": "object"
}
   },
</syntaxhighlight>}}
  "type": "method"
==== VideoLibrary.GetSeasonDetails ====
}</syntaxhighlight>}}==== VideoLibrary.GetSeasonDetails ====Retrieve details about a specific tv show season<br />'''Permissions:'''* ReadData'''Parameters:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA"># ''[[#Library.Id|Library.Id]]'' seasonid<br /># [''[[#Video.Fields.Season|Video.Fields.Season]]'' properties]<br /></div>'''Returns:''' <div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">'''Type:''' ''object''<br />'''Properties:'''# [''[[#Video.Details.Season|Video.Details.Season]]'' seasondetails]<br /></div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
Retrieve details about a specific tv show season<br />
'''Permissions:'''
* ReadData
'''Parameters:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
# ''[[#Library.Id|Library.Id]]'' seasonid<br />
# [''[[#Video.Fields.Season|Video.Fields.Season]]'' properties]<br />
</div>
'''Returns:'''  
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
'''Type:''' ''object''<br />
'''Properties:'''
# [''[[#Video.Details.Season|Video.Details.Season]]'' seasondetails]<br />
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
  "type": "method",
   "description": "Retrieve details about a specific tv show season",
   "description": "Retrieve details about a specific tv show season",
  "transport": "Response",
  "permission": "ReadData",
   "params": [
   "params": [
     {
     {
      "$ref": "Library.Id",
       "name": "seasonid",
       "name": "seasonid",
      "$ref": "Library.Id",
       "required": true
       "required": true
     },
     },
     {
     {
       "name": "properties",
       "$ref": "Video.Fields.Season",
       "$ref": "Video.Fields.Season"
       "name": "properties"
     }
     }
   ],
   ],
  "permission": "ReadData",
   "returns": {
   "returns": {
    "type": "object",
     "properties": {
     "properties": {
       "seasondetails": {
       "seasondetails": {
         "$ref": "Video.Details.Season"
         "$ref": "Video.Details.Season"
       }
       }
     }
     },
   }
    "type": "object"
}
   },
</syntaxhighlight>}}
  "type": "method"
==== VideoLibrary.GetSeasons ====
}</syntaxhighlight>}}==== VideoLibrary.GetSeasons ====Retrieve all tv seasons<br />'''Permissions:'''* ReadData'''Parameters:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA"># [''[[#Library.Id|Library.Id]]'' tvshowid = -1]<br /># [''[[#Video.Fields.Season|Video.Fields.Season]]'' properties]<br /># [''[[#List.Limits|List.Limits]]'' limits]<br /># [''[[#List.Sort|List.Sort]]'' sort]<br /></div>'''Returns:''' <div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">'''Type:''' ''object''<br />'''Properties:'''# ''[[#List.LimitsReturned|List.LimitsReturned]]'' limits<br /># [''array[[#Video.Details.Season|Video.Details.Season]]'' seasons]<br /></div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
Retrieve all tv seasons<br />
'''Permissions:'''
* ReadData
'''Parameters:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
# [''[[#Library.Id|Library.Id]]'' tvshowid]<br />
# [''[[#Video.Fields.Season|Video.Fields.Season]]'' properties]<br />
# [''[[#List.Limits|List.Limits]]'' limits]<br />
# [''[[#List.Sort|List.Sort]]'' sort]<br />
</div>
'''Returns:'''  
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
'''Type:''' ''object''<br />
'''Properties:'''
# ''[[#List.LimitsReturned|List.LimitsReturned]]'' limits<br />
# [''array[[#Video.Details.Season|Video.Details.Season]]'' seasons]<br />
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
  "type": "method",
   "description": "Retrieve all tv seasons",
   "description": "Retrieve all tv seasons",
  "transport": "Response",
  "permission": "ReadData",
   "params": [
   "params": [
     {
     {
       "name": "tvshowid",
       "$ref": "Library.Id",
       "$ref": "Library.Id"
      "default": -1,
       "name": "tvshowid"
     },
     },
     {
     {
       "name": "properties",
       "$ref": "Video.Fields.Season",
       "$ref": "Video.Fields.Season"
       "name": "properties"
     },
     },
     {
     {
       "name": "limits",
       "$ref": "List.Limits",
       "$ref": "List.Limits"
       "name": "limits"
     },
     },
     {
     {
       "name": "sort",
       "$ref": "List.Sort",
       "$ref": "List.Sort"
       "name": "sort"
     }
     }
   ],
   ],
  "permission": "ReadData",
   "returns": {
   "returns": {
    "type": "object",
     "properties": {
     "properties": {
       "limits": {
       "limits": {
Line 7,643: Line 5,110:
       },
       },
       "seasons": {
       "seasons": {
        "type": "array",
         "items": {
         "items": {
           "$ref": "Video.Details.Season"
           "$ref": "Video.Details.Season"
         }
         },
        "type": "array"
       }
       }
     }
     },
   }
    "type": "object"
}
   },
</syntaxhighlight>}}
  "type": "method"
==== VideoLibrary.GetTVShowDetails ====
}</syntaxhighlight>}}==== VideoLibrary.GetTVShowDetails ====Retrieve details about a specific tv show<br />'''Permissions:'''* ReadData'''Parameters:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA"># ''[[#Library.Id|Library.Id]]'' tvshowid<br /># [''[[#Video.Fields.TVShow|Video.Fields.TVShow]]'' properties]<br /></div>'''Returns:''' <div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">'''Type:''' ''object''<br />'''Properties:'''# [''[[#Video.Details.TVShow|Video.Details.TVShow]]'' tvshowdetails]<br /></div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
Retrieve details about a specific tv show<br />
'''Permissions:'''
* ReadData
'''Parameters:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
# ''[[#Library.Id|Library.Id]]'' tvshowid<br />
# [''[[#Video.Fields.TVShow|Video.Fields.TVShow]]'' properties]<br />
</div>
'''Returns:'''  
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
'''Type:''' ''object''<br />
'''Properties:'''
# [''[[#Video.Details.TVShow|Video.Details.TVShow]]'' tvshowdetails]<br />
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
  "type": "method",
   "description": "Retrieve details about a specific tv show",
   "description": "Retrieve details about a specific tv show",
  "transport": "Response",
  "permission": "ReadData",
   "params": [
   "params": [
     {
     {
      "$ref": "Library.Id",
       "name": "tvshowid",
       "name": "tvshowid",
      "$ref": "Library.Id",
       "required": true
       "required": true
     },
     },
     {
     {
       "name": "properties",
       "$ref": "Video.Fields.TVShow",
       "$ref": "Video.Fields.TVShow"
       "name": "properties"
     }
     }
   ],
   ],
  "permission": "ReadData",
   "returns": {
   "returns": {
    "type": "object",
     "properties": {
     "properties": {
       "tvshowdetails": {
       "tvshowdetails": {
         "$ref": "Video.Details.TVShow"
         "$ref": "Video.Details.TVShow"
       }
       }
     }
     },
   }
    "type": "object"
}
   },
</syntaxhighlight>}}
  "type": "method"
==== VideoLibrary.GetTVShows ====
}</syntaxhighlight>}}==== VideoLibrary.GetTVShows ====Retrieve all tv shows<br />'''Permissions:'''* ReadData'''Parameters:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA"># [''[[#Video.Fields.TVShow|Video.Fields.TVShow]]'' properties]<br /># [''[[#List.Limits|List.Limits]]'' limits]<br /># [''[[#List.Sort|List.Sort]]'' sort]<br /># [''mixed: object|object|object|object|object|object|[[#List.Filter.TVShows|List.Filter.TVShows]]'' filter]<br /></div>'''Returns:''' <div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">'''Type:''' ''object''<br />'''Properties:'''# ''[[#List.LimitsReturned|List.LimitsReturned]]'' limits<br /># [''array[[#Video.Details.TVShow|Video.Details.TVShow]]'' tvshows]<br /></div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
Retrieve all tv shows<br />
'''Permissions:'''
* ReadData
'''Parameters:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
# [''[[#Video.Fields.TVShow|Video.Fields.TVShow]]'' properties]<br />
# [''[[#List.Limits|List.Limits]]'' limits]<br />
# [''[[#List.Sort|List.Sort]]'' sort]<br />
# [''mixed: object|object|object|object|object|object|[[#List.Filter.TVShows|List.Filter.TVShows]]'' filter]<br />
</div>
'''Returns:'''  
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
'''Type:''' ''object''<br />
'''Properties:'''
# ''[[#List.LimitsReturned|List.LimitsReturned]]'' limits<br />
# [''array[[#Video.Details.TVShow|Video.Details.TVShow]]'' tvshows]<br />
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
  "type": "method",
   "description": "Retrieve all tv shows",
   "description": "Retrieve all tv shows",
  "transport": "Response",
  "permission": "ReadData",
   "params": [
   "params": [
     {
     {
       "name": "properties",
       "$ref": "Video.Fields.TVShow",
       "$ref": "Video.Fields.TVShow"
       "name": "properties"
     },
     },
     {
     {
       "name": "limits",
       "$ref": "List.Limits",
       "$ref": "List.Limits"
       "name": "limits"
     },
     },
     {
     {
       "name": "sort",
       "$ref": "List.Sort",
       "$ref": "List.Sort"
       "name": "sort"
     },
     },
     {
     {
Line 7,735: Line 5,161:
       "type": [
       "type": [
         {
         {
           "type": "object",
           "additionalProperties": false,
           "properties": {
           "properties": {
             "genreid": {
             "genreid": {
Line 7,742: Line 5,168:
             }
             }
           },
           },
           "additionalProperties": false
           "type": "object"
         },
         },
         {
         {
           "type": "object",
           "additionalProperties": false,
           "properties": {
           "properties": {
             "genre": {
             "genre": {
              "type": "string",
               "minLength": 1,
               "minLength": 1,
               "required": true
               "required": true,
              "type": "string"
             }
             }
           },
           },
           "additionalProperties": false
           "type": "object"
         },
         },
         {
         {
           "type": "object",
           "additionalProperties": false,
           "properties": {
           "properties": {
             "year": {
             "year": {
              "type": "integer",
               "minimum": 0,
               "minimum": 0,
               "required": true
               "required": true,
              "type": "integer"
             }
             }
           },
           },
           "additionalProperties": false
           "type": "object"
         },
         },
         {
         {
           "type": "object",
           "additionalProperties": false,
           "properties": {
           "properties": {
             "actor": {
             "actor": {
              "type": "string",
               "minLength": 1,
               "minLength": 1,
               "required": true
               "required": true,
              "type": "string"
             }
             }
           },
           },
           "additionalProperties": false
           "type": "object"
         },
         },
         {
         {
           "type": "object",
           "additionalProperties": false,
           "properties": {
           "properties": {
             "studio": {
             "studio": {
              "type": "string",
               "minLength": 1,
               "minLength": 1,
               "required": true
               "required": true,
              "type": "string"
             }
             }
           },
           },
           "additionalProperties": false
           "type": "object"
         },
         },
         {
         {
           "type": "object",
           "additionalProperties": false,
           "properties": {
           "properties": {
             "tag": {
             "tag": {
              "type": "string",
               "minLength": 1,
               "minLength": 1,
               "required": true
               "required": true,
              "type": "string"
             }
             }
           },
           },
           "additionalProperties": false
           "type": "object"
         },
         },
         {
         {
Line 7,805: Line 5,231:
     }
     }
   ],
   ],
  "permission": "ReadData",
   "returns": {
   "returns": {
    "type": "object",
     "properties": {
     "properties": {
       "limits": {
       "limits": {
Line 7,813: Line 5,239:
       },
       },
       "tvshows": {
       "tvshows": {
        "type": "array",
         "items": {
         "items": {
           "$ref": "Video.Details.TVShow"
           "$ref": "Video.Details.TVShow"
         }
         },
        "type": "array"
       }
       }
     }
     },
   }
    "type": "object"
}
   },
</syntaxhighlight>}}
  "type": "method"
==== VideoLibrary.GetTags ====
}</syntaxhighlight>}}==== VideoLibrary.GetTags ====Retrieve all tags<br />'''Permissions:'''* ReadData'''Parameters:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA"># ''string'' type<br /># [''[[#Library.Fields.Tag|Library.Fields.Tag]]'' properties]<br /># [''[[#List.Limits|List.Limits]]'' limits]<br /># [''[[#List.Sort|List.Sort]]'' sort]<br /></div>'''Returns:''' <div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">'''Type:''' ''object''<br />'''Properties:'''# ''[[#List.LimitsReturned|List.LimitsReturned]]'' limits<br /># ''array[[#Library.Details.Tag|Library.Details.Tag]]'' tags<br /></div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
Retrieve all tags<br />
'''Permissions:'''
* ReadData
'''Parameters:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
# ''string'' type<br />
# [''[[#Library.Fields.Tag|Library.Fields.Tag]]'' properties]<br />
# [''[[#List.Limits|List.Limits]]'' limits]<br />
# [''[[#List.Sort|List.Sort]]'' sort]<br />
</div>
'''Returns:'''  
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
'''Type:''' ''object''<br />
'''Properties:'''
# ''[[#List.LimitsReturned|List.LimitsReturned]]'' limits<br />
# ''array[[#Library.Details.Tag|Library.Details.Tag]]'' tags<br />
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
  "type": "method",
   "description": "Retrieve all tags",
   "description": "Retrieve all tags",
  "transport": "Response",
  "permission": "ReadData",
   "params": [
   "params": [
     {
     {
       "name": "type",
       "enums": [
      "type": "string",
      "required": true,
      "enum": [
         "movie",
         "movie",
         "tvshow",
         "tvshow",
         "musicvideo"
         "musicvideo"
       ]
       ],
      "name": "type",
      "required": true,
      "type": "string"
     },
     },
     {
     {
       "name": "properties",
       "$ref": "Library.Fields.Tag",
       "$ref": "Library.Fields.Tag"
       "name": "properties"
     },
     },
     {
     {
       "name": "limits",
       "$ref": "List.Limits",
       "$ref": "List.Limits"
       "name": "limits"
     },
     },
     {
     {
       "name": "sort",
       "$ref": "List.Sort",
       "$ref": "List.Sort"
       "name": "sort"
     }
     }
   ],
   ],
  "permission": "ReadData",
   "returns": {
   "returns": {
    "type": "object",
     "properties": {
     "properties": {
       "limits": {
       "limits": {
Line 7,878: Line 5,282:
       },
       },
       "tags": {
       "tags": {
        "type": "array",
        "required": true,
         "items": {
         "items": {
           "$ref": "Library.Details.Tag"
           "$ref": "Library.Details.Tag"
         }
         },
        "required": true,
        "type": "array"
       }
       }
     }
     },
   }
    "type": "object"
}
   },
</syntaxhighlight>}}
  "type": "method"
==== VideoLibrary.RefreshEpisode ====
}</syntaxhighlight>}}==== VideoLibrary.RefreshEpisode ====Refresh the given episode in the library<br />'''Permissions:'''* UpdateData'''Parameters:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA"># ''[[#Library.Id|Library.Id]]'' episodeid<br /># [''boolean'' ignorenfo = False] (Whether or not to ignore a local NFO if present.)<br /># [''string'' title = ""] (Title to use for searching (instead of determining it from the item's filename/path).)<br /></div>'''Returns:''' <div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">'''Type:''' ''string''<br /></div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
Refresh the given episode in the library<br />
'''Permissions:'''
* UpdateData
'''Parameters:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
# ''[[#Library.Id|Library.Id]]'' episodeid<br />
# ''boolean'' ignorenfo = False (Whether or not to ignore a local NFO if present.)<br />
# ''string'' title = "" (Title to use for searching (instead of determining it from the item's filename/path).)<br />
</div>
'''Returns:'''  
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
'''Type:''' ''string''<br />
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
  "type": "method",
   "description": "Refresh the given episode in the library",
   "description": "Refresh the given episode in the library",
  "transport": "Response",
  "permission": "UpdateData",
   "params": [
   "params": [
     {
     {
      "$ref": "Library.Id",
       "name": "episodeid",
       "name": "episodeid",
      "$ref": "Library.Id",
       "required": true
       "required": true
     },
     },
     {
     {
      "default": false,
      "description": "Whether or not to ignore a local NFO if present.",
       "name": "ignorenfo",
       "name": "ignorenfo",
       "type": "boolean",
       "type": "boolean"
      "required": false,
      "default": false,
      "description": "Whether or not to ignore a local NFO if present."
     },
     },
     {
     {
      "default": "",
      "description": "Title to use for searching (instead of determining it from the item's filename/path).",
       "name": "title",
       "name": "title",
       "type": "string",
       "type": "string"
      "required": "false",
      "default": "",
      "description": "Title to use for searching (instead of determining it from the item's filename/path)."
     }
     }
   ],
   ],
   "returns": "string"
  "permission": "UpdateData",
}
   "returns": {
</syntaxhighlight>}}
    "type": "string"
==== VideoLibrary.RefreshMovie ====
  },
Refresh the given movie in the library<br />
  "type": "method"
'''Permissions:'''
}</syntaxhighlight>}}==== VideoLibrary.RefreshMovie ====Refresh the given movie in the library<br />'''Permissions:'''* UpdateData'''Parameters:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA"># ''[[#Library.Id|Library.Id]]'' movieid<br /># [''boolean'' ignorenfo = False] (Whether or not to ignore a local NFO if present.)<br /># [''string'' title = ""] (Title to use for searching (instead of determining it from the item's filename/path).)<br /></div>'''Returns:''' <div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">'''Type:''' ''string''<br /></div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
* UpdateData
'''Parameters:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
# ''[[#Library.Id|Library.Id]]'' movieid<br />
# ''boolean'' ignorenfo = False (Whether or not to ignore a local NFO if present.)<br />
# ''string'' title = "" (Title to use for searching (instead of determining it from the item's filename/path).)<br />
</div>
'''Returns:'''  
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
'''Type:''' ''string''<br />
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
  "type": "method",
   "description": "Refresh the given movie in the library",
   "description": "Refresh the given movie in the library",
  "transport": "Response",
  "permission": "UpdateData",
   "params": [
   "params": [
     {
     {
      "$ref": "Library.Id",
       "name": "movieid",
       "name": "movieid",
      "$ref": "Library.Id",
       "required": true
       "required": true
     },
     },
     {
     {
      "default": false,
      "description": "Whether or not to ignore a local NFO if present.",
       "name": "ignorenfo",
       "name": "ignorenfo",
       "type": "boolean",
       "type": "boolean"
      "required": false,
      "default": false,
      "description": "Whether or not to ignore a local NFO if present."
     },
     },
     {
     {
      "default": "",
      "description": "Title to use for searching (instead of determining it from the item's filename/path).",
       "name": "title",
       "name": "title",
       "type": "string",
       "type": "string"
      "required": "false",
      "default": "",
      "description": "Title to use for searching (instead of determining it from the item's filename/path)."
     }
     }
   ],
   ],
   "returns": "string"
  "permission": "UpdateData",
}
   "returns": {
</syntaxhighlight>}}
    "type": "string"
==== VideoLibrary.RefreshMusicVideo ====
  },
Refresh the given music video in the library<br />
  "type": "method"
'''Permissions:'''
}</syntaxhighlight>}}==== VideoLibrary.RefreshMusicVideo ====Refresh the given music video in the library<br />'''Permissions:'''* UpdateData'''Parameters:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA"># ''[[#Library.Id|Library.Id]]'' musicvideoid<br /># [''boolean'' ignorenfo = False] (Whether or not to ignore a local NFO if present.)<br /># [''string'' title = ""] (Title to use for searching (instead of determining it from the item's filename/path).)<br /></div>'''Returns:''' <div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">'''Type:''' ''string''<br /></div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
* UpdateData
'''Parameters:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
# ''[[#Library.Id|Library.Id]]'' musicvideoid<br />
# ''boolean'' ignorenfo = False (Whether or not to ignore a local NFO if present.)<br />
# ''string'' title = "" (Title to use for searching (instead of determining it from the item's filename/path).)<br />
</div>
'''Returns:'''  
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
'''Type:''' ''string''<br />
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
  "type": "method",
   "description": "Refresh the given music video in the library",
   "description": "Refresh the given music video in the library",
  "transport": "Response",
  "permission": "UpdateData",
   "params": [
   "params": [
     {
     {
      "$ref": "Library.Id",
       "name": "musicvideoid",
       "name": "musicvideoid",
      "$ref": "Library.Id",
       "required": true
       "required": true
     },
     },
     {
     {
      "default": false,
      "description": "Whether or not to ignore a local NFO if present.",
       "name": "ignorenfo",
       "name": "ignorenfo",
       "type": "boolean",
       "type": "boolean"
      "required": false,
      "default": false,
      "description": "Whether or not to ignore a local NFO if present."
     },
     },
     {
     {
      "default": "",
      "description": "Title to use for searching (instead of determining it from the item's filename/path).",
       "name": "title",
       "name": "title",
       "type": "string",
       "type": "string"
      "required": "false",
      "default": "",
      "description": "Title to use for searching (instead of determining it from the item's filename/path)."
     }
     }
   ],
   ],
   "returns": "string"
  "permission": "UpdateData",
}
   "returns": {
</syntaxhighlight>}}
    "type": "string"
==== VideoLibrary.RefreshTVShow ====
  },
Refresh the given tv show in the library<br />
  "type": "method"
'''Permissions:'''
}</syntaxhighlight>}}==== VideoLibrary.RefreshTVShow ====Refresh the given tv show in the library<br />'''Permissions:'''* UpdateData'''Parameters:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA"># ''[[#Library.Id|Library.Id]]'' tvshowid<br /># [''boolean'' ignorenfo = False] (Whether or not to ignore a local NFO if present.)<br /># [''boolean'' refreshepisodes = False] (Whether or not to refresh all episodes belonging to the TV show.)<br /># [''string'' title = ""] (Title to use for searching (instead of determining it from the item's filename/path).)<br /></div>'''Returns:''' <div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">'''Type:''' ''string''<br /></div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
* UpdateData
'''Parameters:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
# ''[[#Library.Id|Library.Id]]'' tvshowid<br />
# ''boolean'' ignorenfo = False (Whether or not to ignore a local NFO if present.)<br />
# ''boolean'' refreshepisodes = False (Whether or not to refresh all episodes belonging to the TV show.)<br />
# ''string'' title = "" (Title to use for searching (instead of determining it from the item's filename/path).)<br />
</div>
'''Returns:'''  
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
'''Type:''' ''string''<br />
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
  "type": "method",
   "description": "Refresh the given tv show in the library",
   "description": "Refresh the given tv show in the library",
  "transport": "Response",
  "permission": "UpdateData",
   "params": [
   "params": [
     {
     {
      "$ref": "Library.Id",
       "name": "tvshowid",
       "name": "tvshowid",
      "$ref": "Library.Id",
       "required": true
       "required": true
     },
     },
     {
     {
      "default": false,
      "description": "Whether or not to ignore a local NFO if present.",
       "name": "ignorenfo",
       "name": "ignorenfo",
       "type": "boolean",
       "type": "boolean"
      "required": false,
      "default": false,
      "description": "Whether or not to ignore a local NFO if present."
     },
     },
     {
     {
      "default": false,
      "description": "Whether or not to refresh all episodes belonging to the TV show.",
       "name": "refreshepisodes",
       "name": "refreshepisodes",
       "type": "boolean",
       "type": "boolean"
      "required": false,
      "default": false,
      "description": "Whether or not to refresh all episodes belonging to the TV show."
     },
     },
     {
     {
      "default": "",
      "description": "Title to use for searching (instead of determining it from the item's filename/path).",
       "name": "title",
       "name": "title",
       "type": "string",
       "type": "string"
      "required": "false",
      "default": "",
      "description": "Title to use for searching (instead of determining it from the item's filename/path)."
     }
     }
   ],
   ],
   "returns": "string"
  "permission": "UpdateData",
}
   "returns": {
</syntaxhighlight>}}
    "type": "string"
==== VideoLibrary.RemoveEpisode ====
  },
Removes the given episode from the library<br />
  "type": "method"
'''Permissions:'''
}</syntaxhighlight>}}==== VideoLibrary.RemoveEpisode ====Removes the given episode from the library<br />'''Permissions:'''* RemoveData'''Parameters:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA"># ''[[#Library.Id|Library.Id]]'' episodeid<br /></div>'''Returns:''' <div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">'''Type:''' ''string''<br /></div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
* RemoveData
'''Parameters:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
# ''[[#Library.Id|Library.Id]]'' episodeid<br />
</div>
'''Returns:'''  
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
'''Type:''' ''string''<br />
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
  "type": "method",
   "description": "Removes the given episode from the library",
   "description": "Removes the given episode from the library",
  "transport": "Response",
  "permission": "RemoveData",
   "params": [
   "params": [
     {
     {
      "$ref": "Library.Id",
       "name": "episodeid",
       "name": "episodeid",
      "$ref": "Library.Id",
       "required": true
       "required": true
     }
     }
   ],
   ],
   "returns": "string"
  "permission": "RemoveData",
}
   "returns": {
</syntaxhighlight>}}
    "type": "string"
==== VideoLibrary.RemoveMovie ====
  },
Removes the given movie from the library<br />
  "type": "method"
'''Permissions:'''
}</syntaxhighlight>}}==== VideoLibrary.RemoveMovie ====Removes the given movie from the library<br />'''Permissions:'''* RemoveData'''Parameters:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA"># ''[[#Library.Id|Library.Id]]'' movieid<br /></div>'''Returns:''' <div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">'''Type:''' ''string''<br /></div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
* RemoveData
'''Parameters:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
# ''[[#Library.Id|Library.Id]]'' movieid<br />
</div>
'''Returns:'''  
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
'''Type:''' ''string''<br />
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
  "type": "method",
   "description": "Removes the given movie from the library",
   "description": "Removes the given movie from the library",
  "transport": "Response",
  "permission": "RemoveData",
   "params": [
   "params": [
     {
     {
      "$ref": "Library.Id",
       "name": "movieid",
       "name": "movieid",
      "$ref": "Library.Id",
       "required": true
       "required": true
     }
     }
   ],
   ],
   "returns": "string"
  "permission": "RemoveData",
}
   "returns": {
</syntaxhighlight>}}
    "type": "string"
==== VideoLibrary.RemoveMusicVideo ====
  },
Removes the given music video from the library<br />
  "type": "method"
'''Permissions:'''
}</syntaxhighlight>}}==== VideoLibrary.RemoveMusicVideo ====Removes the given music video from the library<br />'''Permissions:'''* RemoveData'''Parameters:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA"># ''[[#Library.Id|Library.Id]]'' musicvideoid<br /></div>'''Returns:''' <div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">'''Type:''' ''string''<br /></div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
* RemoveData
'''Parameters:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
# ''[[#Library.Id|Library.Id]]'' musicvideoid<br />
</div>
'''Returns:'''  
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
'''Type:''' ''string''<br />
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
  "type": "method",
   "description": "Removes the given music video from the library",
   "description": "Removes the given music video from the library",
  "transport": "Response",
  "permission": "RemoveData",
   "params": [
   "params": [
     {
     {
      "$ref": "Library.Id",
       "name": "musicvideoid",
       "name": "musicvideoid",
      "$ref": "Library.Id",
       "required": true
       "required": true
     }
     }
   ],
   ],
   "returns": "string"
  "permission": "RemoveData",
}
   "returns": {
</syntaxhighlight>}}
    "type": "string"
==== VideoLibrary.RemoveTVShow ====
  },
Removes the given tv show from the library<br />
  "type": "method"
'''Permissions:'''
}</syntaxhighlight>}}==== VideoLibrary.RemoveTVShow ====Removes the given tv show from the library<br />'''Permissions:'''* RemoveData'''Parameters:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA"># ''[[#Library.Id|Library.Id]]'' tvshowid<br /></div>'''Returns:''' <div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">'''Type:''' ''string''<br /></div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
* RemoveData
'''Parameters:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
# ''[[#Library.Id|Library.Id]]'' tvshowid<br />
</div>
'''Returns:'''  
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
'''Type:''' ''string''<br />
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
  "type": "method",
   "description": "Removes the given tv show from the library",
   "description": "Removes the given tv show from the library",
  "transport": "Response",
  "permission": "RemoveData",
   "params": [
   "params": [
     {
     {
      "$ref": "Library.Id",
       "name": "tvshowid",
       "name": "tvshowid",
      "$ref": "Library.Id",
       "required": true
       "required": true
     }
     }
   ],
   ],
   "returns": "string"
  "permission": "RemoveData",
}
   "returns": {
</syntaxhighlight>}}
    "type": "string"
==== VideoLibrary.Scan ====
  },
Scans the video sources for new library items<br />
  "type": "method"
'''Permissions:'''
}</syntaxhighlight>}}==== VideoLibrary.Scan ====Scans the video sources for new library items<br />'''Permissions:'''* UpdateData'''Parameters:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA"># [''string'' directory = ""]<br /># [''boolean'' showdialogs = True] (Whether or not to show the progress bar or any other GUI dialog)<br /></div>'''Returns:''' <div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">'''Type:''' ''string''<br /></div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
* UpdateData
'''Parameters:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
# [''string'' directory = ""]<br />
# [''boolean'' showdialogs = True] (Whether or not to show the progress bar or any other GUI dialog)<br />
</div>
'''Returns:'''  
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
'''Type:''' ''string''<br />
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
  "type": "method",
   "description": "Scans the video sources for new library items",
   "description": "Scans the video sources for new library items",
  "transport": "Response",
  "permission": "UpdateData",
   "params": [
   "params": [
     {
     {
      "default": "",
       "name": "directory",
       "name": "directory",
       "type": "string",
       "type": "string"
      "default": ""
     },
     },
     {
     {
      "default": true,
      "description": "Whether or not to show the progress bar or any other GUI dialog",
       "name": "showdialogs",
       "name": "showdialogs",
       "type": "boolean",
       "type": "boolean"
      "default": true,
      "description": "Whether or not to show the progress bar or any other GUI dialog"
     }
     }
   ],
   ],
   "returns": "string"
  "permission": "UpdateData",
}
   "returns": {
</syntaxhighlight>}}
    "type": "string"
==== VideoLibrary.SetEpisodeDetails ====
  },
Update the given episode with the given details<br />
  "type": "method"
'''Permissions:'''
}</syntaxhighlight>}}==== VideoLibrary.SetEpisodeDetails ====Update the given episode with the given details<br />'''Permissions:'''* UpdateData'''Parameters:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA"># ''[[#Library.Id|Library.Id]]'' episodeid<br /># [''[[#Optional.String|Optional.String]]'' title = None]<br /># [''[[#Optional.Integer|Optional.Integer]]'' playcount = None]<br /># [''[[#Optional.Integer|Optional.Integer]]'' runtime = None] (Runtime in seconds)<br /># [''mixed: null|[[#Array.String|Array.String]]'' director = None]<br /># [''[[#Optional.String|Optional.String]]'' plot = None]<br /># [''[[#Optional.Number|Optional.Number]]'' rating = None]<br /># [''[[#Optional.String|Optional.String]]'' votes = None]<br /># [''[[#Optional.String|Optional.String]]'' lastplayed = None]<br /># [''mixed: null|[[#Array.String|Array.String]]'' writer = None]<br /># [''[[#Optional.String|Optional.String]]'' firstaired = None]<br /># [''[[#Optional.String|Optional.String]]'' productioncode = None]<br /># [''[[#Optional.Integer|Optional.Integer]]'' season = None]<br /># [''[[#Optional.Integer|Optional.Integer]]'' episode = None]<br /># [''[[#Optional.String|Optional.String]]'' originaltitle = None]<br /># [''[[#Optional.String|Optional.String]]'' thumbnail = None]<br /># [''[[#Optional.String|Optional.String]]'' fanart = None]<br /># [''mixed: null|[[#Media.Artwork.Set|Media.Artwork.Set]]'' art = None]<br /># [''mixed: null|[[#Video.Resume|Video.Resume]]'' resume = None]<br /># [''[[#Optional.Integer|Optional.Integer]]'' userrating = None]<br /># [''[[#Video.Ratings.Set|Video.Ratings.Set]]'' ratings]<br /># [''[[#Optional.String|Optional.String]]'' dateadded = None]<br /># [''mixed: null|[[#Media.UniqueID.Set|Media.UniqueID.Set]]'' uniqueid = None]<br /></div>'''Returns:''' <div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">'''Type:''' ''string''<br /></div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
* UpdateData
'''Parameters:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
# ''[[#Library.Id|Library.Id]]'' episodeid<br />
# [''[[#Optional.String|Optional.String]]'' title]<br />
# [''[[#Optional.Integer|Optional.Integer]]'' playcount]<br />
# [''[[#Optional.Integer|Optional.Integer]]'' runtime] (Runtime in seconds)<br />
# [''mixed: [[#Array.String|Array.String]]'' director = None]<br />
# [''[[#Optional.String|Optional.String]]'' plot]<br />
# [''[[#Optional.Number|Optional.Number]]'' rating]<br />
# [''[[#Optional.String|Optional.String]]'' votes]<br />
# [''[[#Optional.String|Optional.String]]'' lastplayed]<br />
# [''mixed: [[#Array.String|Array.String]]'' writer = None]<br />
# [''[[#Optional.String|Optional.String]]'' firstaired]<br />
# [''[[#Optional.String|Optional.String]]'' productioncode]<br />
# [''[[#Optional.Integer|Optional.Integer]]'' season]<br />
# [''[[#Optional.Integer|Optional.Integer]]'' episode]<br />
# [''[[#Optional.String|Optional.String]]'' originaltitle]<br />
# [''[[#Optional.String|Optional.String]]'' thumbnail]<br />
# [''[[#Optional.String|Optional.String]]'' fanart]<br />
# [''mixed: [[#Media.Artwork.Set|Media.Artwork.Set]]'' art = None]<br />
# [''mixed: [[#Video.Resume|Video.Resume]]'' resume = None]<br />
# [''[[#Optional.Integer|Optional.Integer]]'' userrating]<br />
# [''[[#Video.Ratings.Set|Video.Ratings.Set]]'' ratings]<br />
# [''[[#Optional.String|Optional.String]]'' dateadded]<br />
# [''mixed: [[#Media.UniqueID.Set|Media.UniqueID.Set]]'' uniqueid = None]<br />
</div>
'''Returns:'''  
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
'''Type:''' ''string''<br />
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
  "type": "method",
   "description": "Update the given episode with the given details",
   "description": "Update the given episode with the given details",
  "transport": "Response",
  "permission": "UpdateData",
   "params": [
   "params": [
     {
     {
      "$ref": "Library.Id",
       "name": "episodeid",
       "name": "episodeid",
      "$ref": "Library.Id",
       "required": true
       "required": true
     },
     },
     {
     {
       "name": "title",
       "$ref": "Optional.String",
       "$ref": "Optional.String"
      "default": null,
       "name": "title"
     },
     },
     {
     {
       "name": "playcount",
       "$ref": "Optional.Integer",
       "$ref": "Optional.Integer"
      "default": null,
       "name": "playcount"
     },
     },
     {
     {
      "name": "runtime",
       "$ref": "Optional.Integer",
       "$ref": "Optional.Integer",
       "description": "Runtime in seconds"
      "default": null,
       "description": "Runtime in seconds",
      "name": "runtime"
     },
     },
     {
     {
      "default": null,
       "name": "director",
       "name": "director",
       "type": [
       "type": [
        "null",
         {
         {
           "$ref": "Array.String",
           "type": "null"
           "required": true
        },
        {
           "$ref": "Array.String"
         }
         }
       ],
       ]
      "default": null
     },
     },
     {
     {
       "name": "plot",
       "$ref": "Optional.String",
       "$ref": "Optional.String"
      "default": null,
       "name": "plot"
     },
     },
     {
     {
       "name": "rating",
       "$ref": "Optional.Number",
       "$ref": "Optional.Number"
      "default": null,
       "name": "rating"
     },
     },
     {
     {
       "name": "votes",
       "$ref": "Optional.String",
       "$ref": "Optional.String"
      "default": null,
       "name": "votes"
     },
     },
     {
     {
       "name": "lastplayed",
       "$ref": "Optional.String",
       "$ref": "Optional.String"
      "default": null,
       "name": "lastplayed"
     },
     },
     {
     {
      "default": null,
       "name": "writer",
       "name": "writer",
       "type": [
       "type": [
        "null",
         {
         {
           "$ref": "Array.String",
           "type": "null"
           "required": true
        },
        {
           "$ref": "Array.String"
         }
         }
       ],
       ]
      "default": null
     },
     },
     {
     {
       "name": "firstaired",
       "$ref": "Optional.String",
       "$ref": "Optional.String"
      "default": null,
       "name": "firstaired"
     },
     },
     {
     {
       "name": "productioncode",
       "$ref": "Optional.String",
       "$ref": "Optional.String"
      "default": null,
       "name": "productioncode"
     },
     },
     {
     {
       "name": "season",
       "$ref": "Optional.Integer",
       "$ref": "Optional.Integer"
      "default": null,
       "name": "season"
     },
     },
     {
     {
       "name": "episode",
       "$ref": "Optional.Integer",
       "$ref": "Optional.Integer"
      "default": null,
       "name": "episode"
     },
     },
     {
     {
       "name": "originaltitle",
       "$ref": "Optional.String",
       "$ref": "Optional.String"
      "default": null,
       "name": "originaltitle"
     },
     },
     {
     {
       "name": "thumbnail",
       "$ref": "Optional.String",
       "$ref": "Optional.String"
      "default": null,
       "name": "thumbnail"
     },
     },
     {
     {
       "name": "fanart",
       "$ref": "Optional.String",
       "$ref": "Optional.String"
      "default": null,
       "name": "fanart"
     },
     },
     {
     {
      "default": null,
       "name": "art",
       "name": "art",
       "type": [
       "type": [
        "null",
         {
         {
           "$ref": "Media.Artwork.Set",
          "type": "null"
          "required": true
        },
        {
           "$ref": "Media.Artwork.Set"
         }
         }
       ],
       ]
      "default": null
     },
     },
     {
     {
      "default": null,
       "name": "resume",
       "name": "resume",
       "type": [
       "type": [
        "null",
         {
         {
           "$ref": "Video.Resume",
           "type": "null"
           "required": true
        },
        {
           "$ref": "Video.Resume"
         }
         }
       ],
       ]
      "default": null
     },
     },
     {
     {
       "name": "userrating",
       "$ref": "Optional.Integer",
       "$ref": "Optional.Integer"
      "default": null,
       "name": "userrating"
     },
     },
     {
     {
       "name": "ratings",
       "$ref": "Video.Ratings.Set",
       "$ref": "Video.Ratings.Set"
       "name": "ratings"
     },
     },
     {
     {
       "name": "dateadded",
       "$ref": "Optional.String",
       "$ref": "Optional.String"
      "default": null,
       "name": "dateadded"
     },
     },
     {
     {
      "default": null,
       "name": "uniqueid",
       "name": "uniqueid",
       "type": [
       "type": [
        "null",
         {
         {
           "$ref": "Media.UniqueID.Set",
          "type": "null"
          "required": true
        },
        {
           "$ref": "Media.UniqueID.Set"
         }
         }
       ],
       ]
      "default": null
     }
     }
   ],
   ],
   "returns": "string"
  "permission": "UpdateData",
}
   "returns": {
</syntaxhighlight>}}
    "type": "string"
==== VideoLibrary.SetMovieDetails ====
  },
Update the given movie with the given details<br />
  "type": "method"
'''Permissions:'''
}</syntaxhighlight>}}==== VideoLibrary.SetMovieDetails ====Update the given movie with the given details<br />'''Permissions:'''* UpdateData'''Parameters:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA"># ''[[#Library.Id|Library.Id]]'' movieid<br /># [''[[#Optional.String|Optional.String]]'' title = None]<br /># [''[[#Optional.Integer|Optional.Integer]]'' playcount = None]<br /># [''[[#Optional.Integer|Optional.Integer]]'' runtime = None] (Runtime in seconds)<br /># [''mixed: null|[[#Array.String|Array.String]]'' director = None]<br /># [''mixed: null|[[#Array.String|Array.String]]'' studio = None]<br /># [''[[#Optional.Integer|Optional.Integer]]'' year = None] (linked with premiered. Overridden by premiered parameter)<br /># [''[[#Optional.String|Optional.String]]'' plot = None]<br /># [''mixed: null|[[#Array.String|Array.String]]'' genre = None]<br /># [''[[#Optional.Number|Optional.Number]]'' rating = None]<br /># [''[[#Optional.String|Optional.String]]'' mpaa = None]<br /># [''[[#Optional.String|Optional.String]]'' imdbnumber = None]<br /># [''[[#Optional.String|Optional.String]]'' votes = None]<br /># [''[[#Optional.String|Optional.String]]'' lastplayed = None]<br /># [''[[#Optional.String|Optional.String]]'' originaltitle = None]<br /># [''[[#Optional.String|Optional.String]]'' trailer = None]<br /># [''[[#Optional.String|Optional.String]]'' tagline = None]<br /># [''[[#Optional.String|Optional.String]]'' plotoutline = None]<br /># [''mixed: null|[[#Array.String|Array.String]]'' writer = None]<br /># [''mixed: null|[[#Array.String|Array.String]]'' country = None]<br /># [''[[#Optional.Integer|Optional.Integer]]'' top250 = None]<br /># [''[[#Optional.String|Optional.String]]'' sorttitle = None]<br /># [''[[#Optional.String|Optional.String]]'' set = None]<br /># [''mixed: null|[[#Array.String|Array.String]]'' showlink = None]<br /># [''[[#Optional.String|Optional.String]]'' thumbnail = None]<br /># [''[[#Optional.String|Optional.String]]'' fanart = None]<br /># [''mixed: null|[[#Array.String|Array.String]]'' tag = None]<br /># [''mixed: null|[[#Media.Artwork.Set|Media.Artwork.Set]]'' art = None]<br /># [''mixed: null|[[#Video.Resume|Video.Resume]]'' resume = None]<br /># [''[[#Optional.Integer|Optional.Integer]]'' userrating = None]<br /># [''[[#Video.Ratings.Set|Video.Ratings.Set]]'' ratings]<br /># [''[[#Optional.String|Optional.String]]'' dateadded = None]<br /># [''[[#Optional.String|Optional.String]]'' premiered = None] (linked with year. Overrides year)<br /># [''mixed: null|[[#Media.UniqueID.Set|Media.UniqueID.Set]]'' uniqueid = None]<br /></div>'''Returns:''' <div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">'''Type:''' ''string''<br /></div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
* UpdateData
'''Parameters:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
# ''[[#Library.Id|Library.Id]]'' movieid<br />
# [''[[#Optional.String|Optional.String]]'' title]<br />
# [''[[#Optional.Integer|Optional.Integer]]'' playcount]<br />
# [''[[#Optional.Integer|Optional.Integer]]'' runtime] (Runtime in seconds)<br />
# [''mixed: [[#Array.String|Array.String]]'' director = None]<br />
# [''mixed: [[#Array.String|Array.String]]'' studio = None]<br />
# [''[[#Optional.Integer|Optional.Integer]]'' year] (linked with premiered. Overridden by premiered parameter)<br />
# [''[[#Optional.String|Optional.String]]'' plot]<br />
# [''mixed: [[#Array.String|Array.String]]'' genre = None]<br />
# [''[[#Optional.Number|Optional.Number]]'' rating]<br />
# [''[[#Optional.String|Optional.String]]'' mpaa]<br />
# [''[[#Optional.String|Optional.String]]'' imdbnumber]<br />
# [''[[#Optional.String|Optional.String]]'' votes]<br />
# [''[[#Optional.String|Optional.String]]'' lastplayed]<br />
# [''[[#Optional.String|Optional.String]]'' originaltitle]<br />
# [''[[#Optional.String|Optional.String]]'' trailer]<br />
# [''[[#Optional.String|Optional.String]]'' tagline]<br />
# [''[[#Optional.String|Optional.String]]'' plotoutline]<br />
# [''mixed: [[#Array.String|Array.String]]'' writer = None]<br />
# [''mixed: [[#Array.String|Array.String]]'' country = None]<br />
# [''[[#Optional.Integer|Optional.Integer]]'' top250]<br />
# [''[[#Optional.String|Optional.String]]'' sorttitle]<br />
# [''[[#Optional.String|Optional.String]]'' set]<br />
# [''mixed: [[#Array.String|Array.String]]'' showlink = None]<br />
# [''[[#Optional.String|Optional.String]]'' thumbnail]<br />
# [''[[#Optional.String|Optional.String]]'' fanart]<br />
# [''mixed: [[#Array.String|Array.String]]'' tag = None]<br />
# [''mixed: [[#Media.Artwork.Set|Media.Artwork.Set]]'' art = None]<br />
# [''mixed: [[#Video.Resume|Video.Resume]]'' resume = None]<br />
# [''[[#Optional.Integer|Optional.Integer]]'' userrating]<br />
# [''[[#Video.Ratings.Set|Video.Ratings.Set]]'' ratings]<br />
# [''[[#Optional.String|Optional.String]]'' dateadded]<br />
# [''[[#Optional.String|Optional.String]]'' premiered] (linked with year. Overrides year)<br />
# [''mixed: [[#Media.UniqueID.Set|Media.UniqueID.Set]]'' uniqueid = None]<br />
</div>
'''Returns:'''  
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
'''Type:''' ''string''<br />
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
  "type": "method",
   "description": "Update the given movie with the given details",
   "description": "Update the given movie with the given details",
  "transport": "Response",
  "permission": "UpdateData",
   "params": [
   "params": [
     {
     {
      "$ref": "Library.Id",
       "name": "movieid",
       "name": "movieid",
      "$ref": "Library.Id",
       "required": true
       "required": true
     },
     },
     {
     {
       "name": "title",
       "$ref": "Optional.String",
       "$ref": "Optional.String"
      "default": null,
       "name": "title"
     },
     },
     {
     {
       "name": "playcount",
       "$ref": "Optional.Integer",
       "$ref": "Optional.Integer"
      "default": null,
       "name": "playcount"
     },
     },
     {
     {
      "name": "runtime",
       "$ref": "Optional.Integer",
       "$ref": "Optional.Integer",
       "description": "Runtime in seconds"
      "default": null,
       "description": "Runtime in seconds",
      "name": "runtime"
     },
     },
     {
     {
      "default": null,
       "name": "director",
       "name": "director",
       "type": [
       "type": [
        "null",
         {
         {
           "$ref": "Array.String",
           "type": "null"
           "required": true
        },
        {
           "$ref": "Array.String"
         }
         }
       ],
       ]
      "default": null
     },
     },
     {
     {
      "default": null,
       "name": "studio",
       "name": "studio",
       "type": [
       "type": [
        "null",
         {
         {
           "$ref": "Array.String",
           "type": "null"
           "required": true
        },
        {
           "$ref": "Array.String"
         }
         }
       ],
       ]
      "default": null
     },
     },
     {
     {
      "name": "year",
       "$ref": "Optional.Integer",
       "$ref": "Optional.Integer",
       "description": "linked with premiered. Overridden by premiered parameter"
      "default": null,
       "description": "linked with premiered. Overridden by premiered parameter",
      "name": "year"
     },
     },
     {
     {
       "name": "plot",
       "$ref": "Optional.String",
       "$ref": "Optional.String"
      "default": null,
       "name": "plot"
     },
     },
     {
     {
      "default": null,
       "name": "genre",
       "name": "genre",
       "type": [
       "type": [
        "null",
         {
         {
           "$ref": "Array.String",
           "type": "null"
           "required": true
        },
        {
           "$ref": "Array.String"
         }
         }
       ],
       ]
      "default": null
     },
     },
     {
     {
       "name": "rating",
       "$ref": "Optional.Number",
       "$ref": "Optional.Number"
      "default": null,
       "name": "rating"
     },
     },
     {
     {
       "name": "mpaa",
       "$ref": "Optional.String",
       "$ref": "Optional.String"
      "default": null,
       "name": "mpaa"
     },
     },
     {
     {
       "name": "imdbnumber",
       "$ref": "Optional.String",
       "$ref": "Optional.String"
      "default": null,
       "name": "imdbnumber"
     },
     },
     {
     {
       "name": "votes",
       "$ref": "Optional.String",
       "$ref": "Optional.String"
      "default": null,
       "name": "votes"
     },
     },
     {
     {
       "name": "lastplayed",
       "$ref": "Optional.String",
       "$ref": "Optional.String"
      "default": null,
       "name": "lastplayed"
     },
     },
     {
     {
       "name": "originaltitle",
       "$ref": "Optional.String",
       "$ref": "Optional.String"
      "default": null,
       "name": "originaltitle"
     },
     },
     {
     {
       "name": "trailer",
       "$ref": "Optional.String",
       "$ref": "Optional.String"
      "default": null,
       "name": "trailer"
     },
     },
     {
     {
       "name": "tagline",
       "$ref": "Optional.String",
       "$ref": "Optional.String"
      "default": null,
       "name": "tagline"
     },
     },
     {
     {
       "name": "plotoutline",
       "$ref": "Optional.String",
       "$ref": "Optional.String"
      "default": null,
       "name": "plotoutline"
     },
     },
     {
     {
      "default": null,
       "name": "writer",
       "name": "writer",
       "type": [
       "type": [
        "null",
         {
         {
           "$ref": "Array.String",
           "type": "null"
           "required": true
        },
        {
           "$ref": "Array.String"
         }
         }
       ],
       ]
      "default": null
     },
     },
     {
     {
      "default": null,
       "name": "country",
       "name": "country",
       "type": [
       "type": [
        "null",
         {
         {
           "$ref": "Array.String",
           "type": "null"
           "required": true
        },
        {
           "$ref": "Array.String"
         }
         }
       ],
       ]
      "default": null
     },
     },
     {
     {
       "name": "top250",
       "$ref": "Optional.Integer",
       "$ref": "Optional.Integer"
      "default": null,
       "name": "top250"
     },
     },
     {
     {
       "name": "sorttitle",
       "$ref": "Optional.String",
       "$ref": "Optional.String"
      "default": null,
       "name": "sorttitle"
     },
     },
     {
     {
       "name": "set",
       "$ref": "Optional.String",
       "$ref": "Optional.String"
      "default": null,
       "name": "set"
     },
     },
     {
     {
      "default": null,
       "name": "showlink",
       "name": "showlink",
       "type": [
       "type": [
        "null",
         {
         {
           "$ref": "Array.String",
           "type": "null"
           "required": true
        },
        {
           "$ref": "Array.String"
         }
         }
       ],
       ]
      "default": null
     },
     },
     {
     {
       "name": "thumbnail",
       "$ref": "Optional.String",
       "$ref": "Optional.String"
      "default": null,
       "name": "thumbnail"
     },
     },
     {
     {
       "name": "fanart",
       "$ref": "Optional.String",
       "$ref": "Optional.String"
      "default": null,
       "name": "fanart"
     },
     },
     {
     {
      "default": null,
       "name": "tag",
       "name": "tag",
       "type": [
       "type": [
        "null",
         {
         {
           "$ref": "Array.String",
           "type": "null"
           "required": true
        },
        {
           "$ref": "Array.String"
         }
         }
       ],
       ]
      "default": null
     },
     },
     {
     {
      "default": null,
       "name": "art",
       "name": "art",
       "type": [
       "type": [
        "null",
         {
         {
           "$ref": "Media.Artwork.Set",
          "type": "null"
          "required": true
        },
        {
           "$ref": "Media.Artwork.Set"
         }
         }
       ],
       ]
      "default": null
     },
     },
     {
     {
      "default": null,
       "name": "resume",
       "name": "resume",
       "type": [
       "type": [
        "null",
         {
         {
           "$ref": "Video.Resume",
           "type": "null"
           "required": true
        },
        {
           "$ref": "Video.Resume"
         }
         }
       ],
       ]
      "default": null
     },
     },
     {
     {
       "name": "userrating",
       "$ref": "Optional.Integer",
       "$ref": "Optional.Integer"
      "default": null,
       "name": "userrating"
     },
     },
     {
     {
       "name": "ratings",
       "$ref": "Video.Ratings.Set",
       "$ref": "Video.Ratings.Set"
       "name": "ratings"
     },
     },
     {
     {
       "name": "dateadded",
       "$ref": "Optional.String",
       "$ref": "Optional.String"
      "default": null,
       "name": "dateadded"
     },
     },
     {
     {
      "name": "premiered",
       "$ref": "Optional.String",
       "$ref": "Optional.String",
       "description": "linked with year. Overrides year"
      "default": null,
       "description": "linked with year. Overrides year",
      "name": "premiered"
     },
     },
     {
     {
      "default": null,
       "name": "uniqueid",
       "name": "uniqueid",
       "type": [
       "type": [
        "null",
         {
         {
           "$ref": "Media.UniqueID.Set",
          "type": "null"
          "required": true
        },
        {
           "$ref": "Media.UniqueID.Set"
         }
         }
       ],
       ]
      "default": null
     }
     }
   ],
   ],
   "returns": "string"
  "permission": "UpdateData",
}
   "returns": {
</syntaxhighlight>}}
    "type": "string"
==== VideoLibrary.SetMovieSetDetails ====
  },
Update the given movie set with the given details<br />
  "type": "method"
'''Permissions:'''
}</syntaxhighlight>}}==== VideoLibrary.SetMovieSetDetails ====Update the given movie set with the given details<br />'''Permissions:'''* UpdateData'''Parameters:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA"># ''[[#Library.Id|Library.Id]]'' setid<br /># [''[[#Optional.String|Optional.String]]'' title = None]<br /># [''mixed: null|[[#Media.Artwork.Set|Media.Artwork.Set]]'' art = None]<br /># [''[[#Optional.String|Optional.String]]'' plot = None]<br /></div>'''Returns:''' <div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">'''Type:''' ''string''<br /></div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
* UpdateData
'''Parameters:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
# ''[[#Library.Id|Library.Id]]'' setid<br />
# [''[[#Optional.String|Optional.String]]'' title]<br />
# [''mixed: [[#Media.Artwork.Set|Media.Artwork.Set]]'' art = None]<br />
# [''[[#Optional.String|Optional.String]]'' plot]<br />
</div>
'''Returns:'''  
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
'''Type:''' ''string''<br />
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
  "type": "method",
   "description": "Update the given movie set with the given details",
   "description": "Update the given movie set with the given details",
  "transport": "Response",
  "permission": "UpdateData",
   "params": [
   "params": [
     {
     {
      "$ref": "Library.Id",
       "name": "setid",
       "name": "setid",
      "$ref": "Library.Id",
       "required": true
       "required": true
     },
     },
     {
     {
       "name": "title",
       "$ref": "Optional.String",
       "$ref": "Optional.String"
      "default": null,
       "name": "title"
     },
     },
     {
     {
      "default": null,
       "name": "art",
       "name": "art",
       "type": [
       "type": [
        "null",
         {
         {
           "$ref": "Media.Artwork.Set",
          "type": "null"
          "required": true
        },
        {
           "$ref": "Media.Artwork.Set"
         }
         }
       ],
       ]
      "default": null
     },
     },
     {
     {
       "name": "plot",
       "$ref": "Optional.String",
       "$ref": "Optional.String"
      "default": null,
       "name": "plot"
     }
     }
   ],
   ],
  "returns": "string"
}
</syntaxhighlight>}}
==== VideoLibrary.SetMusicVideoDetails ====
Update the given music video with the given details<br />
'''Permissions:'''
* UpdateData
'''Parameters:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
# ''[[#Library.Id|Library.Id]]'' musicvideoid<br />
# [''[[#Optional.String|Optional.String]]'' title]<br />
# [''[[#Optional.Integer|Optional.Integer]]'' playcount]<br />
# [''[[#Optional.Integer|Optional.Integer]]'' runtime] (Runtime in seconds)<br />
# [''mixed: [[#Array.String|Array.String]]'' director = None]<br />
# [''mixed: [[#Array.String|Array.String]]'' studio = None]<br />
# [''[[#Optional.Integer|Optional.Integer]]'' year] (linked with premiered. Overridden by premiered parameter)<br />
# [''[[#Optional.String|Optional.String]]'' plot]<br />
# [''[[#Optional.String|Optional.String]]'' album]<br />
# [''mixed: [[#Array.String|Array.String]]'' artist]<br />
# [''mixed: [[#Array.String|Array.String]]'' genre = None]<br />
# [''[[#Optional.Integer|Optional.Integer]]'' track]<br />
# [''[[#Optional.String|Optional.String]]'' lastplayed]<br />
# [''[[#Optional.String|Optional.String]]'' thumbnail]<br />
# [''[[#Optional.String|Optional.String]]'' fanart]<br />
# [''mixed: [[#Array.String|Array.String]]'' tag = None]<br />
# [''mixed: [[#Media.Artwork.Set|Media.Artwork.Set]]'' art = None]<br />
# [''mixed: [[#Video.Resume|Video.Resume]]'' resume = None]<br />
# [''[[#Optional.Number|Optional.Number]]'' rating]<br />
# [''[[#Optional.Integer|Optional.Integer]]'' userrating]<br />
# [''[[#Optional.String|Optional.String]]'' dateadded]<br />
# [''[[#Optional.String|Optional.String]]'' premiered] (linked with year. Overrides year)<br />
</div>
'''Returns:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
'''Type:''' ''string''<br />
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
  "type": "method",
  "description": "Update the given music video with the given details",
  "transport": "Response",
   "permission": "UpdateData",
   "permission": "UpdateData",
   "params": [
  "returns": {
    "type": "string"
  },
  "type": "method"
}</syntaxhighlight>}}==== VideoLibrary.SetMusicVideoDetails ====Update the given music video with the given details<br />'''Permissions:'''* UpdateData'''Parameters:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA"># ''[[#Library.Id|Library.Id]]'' musicvideoid<br /># [''[[#Optional.String|Optional.String]]'' title = None]<br /># [''[[#Optional.Integer|Optional.Integer]]'' playcount = None]<br /># [''[[#Optional.Integer|Optional.Integer]]'' runtime = None] (Runtime in seconds)<br /># [''mixed: null|[[#Array.String|Array.String]]'' director = None]<br /># [''mixed: null|[[#Array.String|Array.String]]'' studio = None]<br /># [''[[#Optional.Integer|Optional.Integer]]'' year = None] (linked with premiered. Overridden by premiered parameter)<br /># [''[[#Optional.String|Optional.String]]'' plot = None]<br /># [''[[#Optional.String|Optional.String]]'' album = None]<br /># [''mixed: null|[[#Array.String|Array.String]]'' artist = None]<br /># [''mixed: null|[[#Array.String|Array.String]]'' genre = None]<br /># [''[[#Optional.Integer|Optional.Integer]]'' track = None]<br /># [''[[#Optional.String|Optional.String]]'' lastplayed = None]<br /># [''[[#Optional.String|Optional.String]]'' thumbnail = None]<br /># [''[[#Optional.String|Optional.String]]'' fanart = None]<br /># [''mixed: null|[[#Array.String|Array.String]]'' tag = None]<br /># [''mixed: null|[[#Media.Artwork.Set|Media.Artwork.Set]]'' art = None]<br /># [''mixed: null|[[#Video.Resume|Video.Resume]]'' resume = None]<br /># [''[[#Optional.Number|Optional.Number]]'' rating = None]<br /># [''[[#Optional.Integer|Optional.Integer]]'' userrating = None]<br /># [''[[#Optional.String|Optional.String]]'' dateadded = None]<br /># [''[[#Optional.String|Optional.String]]'' premiered = None] (linked with year. Overrides year)<br /></div>'''Returns:''' <div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">'''Type:''' ''string''<br /></div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
  "description": "Update the given music video with the given details",
   "params": [
     {
     {
      "$ref": "Library.Id",
       "name": "musicvideoid",
       "name": "musicvideoid",
      "$ref": "Library.Id",
       "required": true
       "required": true
     },
     },
     {
     {
       "name": "title",
       "$ref": "Optional.String",
       "$ref": "Optional.String"
      "default": null,
       "name": "title"
     },
     },
     {
     {
       "name": "playcount",
       "$ref": "Optional.Integer",
       "$ref": "Optional.Integer"
      "default": null,
       "name": "playcount"
     },
     },
     {
     {
      "name": "runtime",
       "$ref": "Optional.Integer",
       "$ref": "Optional.Integer",
       "description": "Runtime in seconds"
      "default": null,
       "description": "Runtime in seconds",
      "name": "runtime"
     },
     },
     {
     {
      "default": null,
       "name": "director",
       "name": "director",
       "type": [
       "type": [
        "null",
         {
         {
           "$ref": "Array.String",
           "type": "null"
           "required": true
        },
        {
           "$ref": "Array.String"
         }
         }
       ],
       ]
      "default": null
     },
     },
     {
     {
      "default": null,
       "name": "studio",
       "name": "studio",
       "type": [
       "type": [
        "null",
         {
         {
           "$ref": "Array.String",
           "type": "null"
           "required": true
        },
        {
           "$ref": "Array.String"
         }
         }
       ],
       ]
      "default": null
     },
     },
     {
     {
      "name": "year",
       "$ref": "Optional.Integer",
       "$ref": "Optional.Integer",
       "description": "linked with premiered. Overridden by premiered parameter"
      "default": null,
       "description": "linked with premiered. Overridden by premiered parameter",
      "name": "year"
     },
     },
     {
     {
       "name": "plot",
       "$ref": "Optional.String",
       "$ref": "Optional.String"
      "default": null,
       "name": "plot"
     },
     },
     {
     {
       "name": "album",
       "$ref": "Optional.String",
       "$ref": "Optional.String"
      "default": null,
       "name": "album"
     },
     },
     {
     {
      "default": null,
       "name": "artist",
       "name": "artist",
       "type": [
       "type": [
        "null",
         {
         {
           "$ref": "Array.String",
           "type": "null"
           "required": true
        },
        {
           "$ref": "Array.String"
         }
         }
       ]
       ]
     },
     },
     {
     {
      "default": null,
       "name": "genre",
       "name": "genre",
       "type": [
       "type": [
        "null",
         {
         {
           "$ref": "Array.String",
           "type": "null"
           "required": true
        },
        {
           "$ref": "Array.String"
         }
         }
       ],
       ]
      "default": null
     },
     },
     {
     {
       "name": "track",
       "$ref": "Optional.Integer",
       "$ref": "Optional.Integer"
      "default": null,
       "name": "track"
     },
     },
     {
     {
       "name": "lastplayed",
       "$ref": "Optional.String",
       "$ref": "Optional.String"
      "default": null,
       "name": "lastplayed"
     },
     },
     {
     {
       "name": "thumbnail",
       "$ref": "Optional.String",
       "$ref": "Optional.String"
      "default": null,
       "name": "thumbnail"
     },
     },
     {
     {
       "name": "fanart",
       "$ref": "Optional.String",
       "$ref": "Optional.String"
      "default": null,
       "name": "fanart"
     },
     },
     {
     {
      "default": null,
       "name": "tag",
       "name": "tag",
       "type": [
       "type": [
        "null",
         {
         {
           "$ref": "Array.String",
           "type": "null"
           "required": true
        },
        {
           "$ref": "Array.String"
         }
         }
       ],
       ]
      "default": null
     },
     },
     {
     {
      "default": null,
       "name": "art",
       "name": "art",
       "type": [
       "type": [
        "null",
         {
         {
           "$ref": "Media.Artwork.Set",
          "type": "null"
          "required": true
        },
        {
           "$ref": "Media.Artwork.Set"
         }
         }
       ],
       ]
      "default": null
     },
     },
     {
     {
      "default": null,
       "name": "resume",
       "name": "resume",
       "type": [
       "type": [
        "null",
         {
         {
           "$ref": "Video.Resume",
           "type": "null"
           "required": true
        },
        {
           "$ref": "Video.Resume"
         }
         }
       ],
       ]
      "default": null
     },
     },
     {
     {
       "name": "rating",
       "$ref": "Optional.Number",
       "$ref": "Optional.Number"
      "default": null,
       "name": "rating"
     },
     },
     {
     {
       "name": "userrating",
       "$ref": "Optional.Integer",
       "$ref": "Optional.Integer"
      "default": null,
       "name": "userrating"
     },
     },
     {
     {
       "name": "dateadded",
       "$ref": "Optional.String",
       "$ref": "Optional.String"
      "default": null,
       "name": "dateadded"
     },
     },
     {
     {
      "name": "premiered",
       "$ref": "Optional.String",
       "$ref": "Optional.String",
       "description": "linked with year. Overrides year"
      "default": null,
       "description": "linked with year. Overrides year",
      "name": "premiered"
     }
     }
   ],
   ],
   "returns": "string"
  "permission": "UpdateData",
}
   "returns": {
</syntaxhighlight>}}
    "type": "string"
==== VideoLibrary.SetSeasonDetails ====
  },
Update the given season with the given details<br />
  "type": "method"
'''Permissions:'''
}</syntaxhighlight>}}==== VideoLibrary.SetSeasonDetails ====Update the given season with the given details<br />'''Permissions:'''* UpdateData'''Parameters:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA"># ''[[#Library.Id|Library.Id]]'' seasonid<br /># [''mixed: null|[[#Media.Artwork.Set|Media.Artwork.Set]]'' art = None]<br /># [''[[#Optional.Integer|Optional.Integer]]'' userrating = None]<br /># [''[[#Optional.String|Optional.String]]'' title = None]<br /></div>'''Returns:''' <div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">'''Type:''' ''string''<br /></div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
* UpdateData
'''Parameters:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
# ''[[#Library.Id|Library.Id]]'' seasonid<br />
# [''mixed: [[#Media.Artwork.Set|Media.Artwork.Set]]'' art = None]<br />
# [''[[#Optional.Integer|Optional.Integer]]'' userrating]<br />
# [''[[#Optional.String|Optional.String]]'' title]<br />
</div>
'''Returns:'''  
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
'''Type:''' ''string''<br />
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
  "type": "method",
   "description": "Update the given season with the given details",
   "description": "Update the given season with the given details",
  "transport": "Response",
  "permission": "UpdateData",
   "params": [
   "params": [
     {
     {
      "$ref": "Library.Id",
       "name": "seasonid",
       "name": "seasonid",
      "$ref": "Library.Id",
       "required": true
       "required": true
     },
     },
     {
     {
      "default": null,
       "name": "art",
       "name": "art",
       "type": [
       "type": [
        "null",
         {
         {
           "$ref": "Media.Artwork.Set",
          "type": "null"
          "required": true
        },
        {
           "$ref": "Media.Artwork.Set"
         }
         }
       ],
       ]
      "default": null
     },
     },
     {
     {
       "name": "userrating",
       "$ref": "Optional.Integer",
       "$ref": "Optional.Integer"
      "default": null,
       "name": "userrating"
     },
     },
     {
     {
       "name": "title",
       "$ref": "Optional.String",
       "$ref": "Optional.String"
      "default": null,
       "name": "title"
     }
     }
   ],
   ],
   "returns": "string"
  "permission": "UpdateData",
}
   "returns": {
</syntaxhighlight>}}
    "type": "string"
==== VideoLibrary.SetTVShowDetails ====
  },
Update the given tvshow with the given details<br />
  "type": "method"
'''Permissions:'''
}</syntaxhighlight>}}==== VideoLibrary.SetTVShowDetails ====Update the given tvshow with the given details<br />'''Permissions:'''* UpdateData'''Parameters:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA"># ''[[#Library.Id|Library.Id]]'' tvshowid<br /># [''[[#Optional.String|Optional.String]]'' title = None]<br /># [''[[#Optional.Integer|Optional.Integer]]'' playcount = None]<br /># [''mixed: null|[[#Array.String|Array.String]]'' studio = None]<br /># [''[[#Optional.String|Optional.String]]'' plot = None]<br /># [''mixed: null|[[#Array.String|Array.String]]'' genre = None]<br /># [''[[#Optional.Number|Optional.Number]]'' rating = None]<br /># [''[[#Optional.String|Optional.String]]'' mpaa = None]<br /># [''[[#Optional.String|Optional.String]]'' imdbnumber = None]<br /># [''[[#Optional.String|Optional.String]]'' premiered = None]<br /># [''[[#Optional.String|Optional.String]]'' votes = None]<br /># [''[[#Optional.String|Optional.String]]'' lastplayed = None]<br /># [''[[#Optional.String|Optional.String]]'' originaltitle = None]<br /># [''[[#Optional.String|Optional.String]]'' sorttitle = None]<br /># [''[[#Optional.String|Optional.String]]'' episodeguide = None]<br /># [''[[#Optional.String|Optional.String]]'' thumbnail = None]<br /># [''[[#Optional.String|Optional.String]]'' fanart = None]<br /># [''mixed: null|[[#Array.String|Array.String]]'' tag = None]<br /># [''mixed: null|[[#Media.Artwork.Set|Media.Artwork.Set]]'' art = None]<br /># [''[[#Optional.Integer|Optional.Integer]]'' userrating = None]<br /># [''[[#Video.Ratings.Set|Video.Ratings.Set]]'' ratings]<br /># [''[[#Optional.String|Optional.String]]'' dateadded = None]<br /># [''[[#Optional.Integer|Optional.Integer]]'' runtime = None] (Runtime in seconds)<br /># [''[[#Optional.String|Optional.String]]'' status = None] (Valid values: 'returning series', 'in production', 'planned', 'cancelled', 'ended')<br /># [''mixed: null|[[#Media.UniqueID.Set|Media.UniqueID.Set]]'' uniqueid = None]<br /></div>'''Returns:''' <div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">'''Type:''' ''string''<br /></div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
* UpdateData
'''Parameters:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
# ''[[#Library.Id|Library.Id]]'' tvshowid<br />
# [''[[#Optional.String|Optional.String]]'' title]<br />
# [''[[#Optional.Integer|Optional.Integer]]'' playcount]<br />
# [''mixed: [[#Array.String|Array.String]]'' studio = None]<br />
# [''[[#Optional.String|Optional.String]]'' plot]<br />
# [''mixed: [[#Array.String|Array.String]]'' genre = None]<br />
# [''[[#Optional.Number|Optional.Number]]'' rating]<br />
# [''[[#Optional.String|Optional.String]]'' mpaa]<br />
# [''[[#Optional.String|Optional.String]]'' imdbnumber]<br />
# [''[[#Optional.String|Optional.String]]'' premiered]<br />
# [''[[#Optional.String|Optional.String]]'' votes]<br />
# [''[[#Optional.String|Optional.String]]'' lastplayed]<br />
# [''[[#Optional.String|Optional.String]]'' originaltitle]<br />
# [''[[#Optional.String|Optional.String]]'' sorttitle]<br />
# [''[[#Optional.String|Optional.String]]'' episodeguide]<br />
# [''[[#Optional.String|Optional.String]]'' thumbnail]<br />
# [''[[#Optional.String|Optional.String]]'' fanart]<br />
# [''mixed: [[#Array.String|Array.String]]'' tag = None]<br />
# [''mixed: [[#Media.Artwork.Set|Media.Artwork.Set]]'' art = None]<br />
# [''[[#Optional.Integer|Optional.Integer]]'' userrating]<br />
# [''[[#Video.Ratings.Set|Video.Ratings.Set]]'' ratings]<br />
# [''[[#Optional.String|Optional.String]]'' dateadded]<br />
# [''[[#Optional.Integer|Optional.Integer]]'' runtime] (Runtime in seconds)<br />
# [''[[#Optional.String|Optional.String]]'' status] (Valid values: 'returning series', 'in production', 'planned', 'cancelled', 'ended')<br />
# [''mixed: [[#Media.UniqueID.Set|Media.UniqueID.Set]]'' uniqueid = None]<br />
</div>
'''Returns:'''  
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
'''Type:''' ''string''<br />
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
  "type": "method",
   "description": "Update the given tvshow with the given details",
   "description": "Update the given tvshow with the given details",
  "transport": "Response",
  "permission": "UpdateData",
   "params": [
   "params": [
     {
     {
      "$ref": "Library.Id",
       "name": "tvshowid",
       "name": "tvshowid",
      "$ref": "Library.Id",
       "required": true
       "required": true
     },
     },
     {
     {
       "name": "title",
       "$ref": "Optional.String",
       "$ref": "Optional.String"
      "default": null,
       "name": "title"
     },
     },
     {
     {
       "name": "playcount",
       "$ref": "Optional.Integer",
       "$ref": "Optional.Integer"
      "default": null,
       "name": "playcount"
     },
     },
     {
     {
      "default": null,
       "name": "studio",
       "name": "studio",
       "type": [
       "type": [
        "null",
         {
         {
           "$ref": "Array.String",
           "type": "null"
           "required": true
        },
        {
           "$ref": "Array.String"
         }
         }
       ],
       ]
      "default": null
     },
     },
     {
     {
       "name": "plot",
       "$ref": "Optional.String",
       "$ref": "Optional.String"
      "default": null,
       "name": "plot"
     },
     },
     {
     {
      "default": null,
       "name": "genre",
       "name": "genre",
       "type": [
       "type": [
        "null",
         {
         {
           "$ref": "Array.String",
           "type": "null"
           "required": true
        },
        {
           "$ref": "Array.String"
         }
         }
       ],
       ]
      "default": null
     },
     },
     {
     {
       "name": "rating",
       "$ref": "Optional.Number",
       "$ref": "Optional.Number"
      "default": null,
       "name": "rating"
     },
     },
     {
     {
       "name": "mpaa",
       "$ref": "Optional.String",
       "$ref": "Optional.String"
      "default": null,
       "name": "mpaa"
     },
     },
     {
     {
       "name": "imdbnumber",
       "$ref": "Optional.String",
       "$ref": "Optional.String"
      "default": null,
       "name": "imdbnumber"
     },
     },
     {
     {
       "name": "premiered",
       "$ref": "Optional.String",
       "$ref": "Optional.String"
      "default": null,
       "name": "premiered"
     },
     },
     {
     {
       "name": "votes",
       "$ref": "Optional.String",
       "$ref": "Optional.String"
      "default": null,
       "name": "votes"
     },
     },
     {
     {
       "name": "lastplayed",
       "$ref": "Optional.String",
       "$ref": "Optional.String"
      "default": null,
       "name": "lastplayed"
     },
     },
     {
     {
       "name": "originaltitle",
       "$ref": "Optional.String",
       "$ref": "Optional.String"
      "default": null,
       "name": "originaltitle"
     },
     },
     {
     {
       "name": "sorttitle",
       "$ref": "Optional.String",
       "$ref": "Optional.String"
      "default": null,
       "name": "sorttitle"
     },
     },
     {
     {
       "name": "episodeguide",
       "$ref": "Optional.String",
       "$ref": "Optional.String"
      "default": null,
       "name": "episodeguide"
     },
     },
     {
     {
       "name": "thumbnail",
       "$ref": "Optional.String",
       "$ref": "Optional.String"
      "default": null,
       "name": "thumbnail"
     },
     },
     {
     {
       "name": "fanart",
       "$ref": "Optional.String",
       "$ref": "Optional.String"
      "default": null,
       "name": "fanart"
     },
     },
     {
     {
      "default": null,
       "name": "tag",
       "name": "tag",
       "type": [
       "type": [
        "null",
         {
         {
           "$ref": "Array.String",
           "type": "null"
           "required": true
        },
        {
           "$ref": "Array.String"
         }
         }
       ],
       ]
      "default": null
     },
     },
     {
     {
      "default": null,
       "name": "art",
       "name": "art",
       "type": [
       "type": [
        "null",
         {
         {
           "$ref": "Media.Artwork.Set",
          "type": "null"
          "required": true
        },
        {
           "$ref": "Media.Artwork.Set"
         }
         }
       ],
       ]
      "default": null
     },
     },
     {
     {
       "name": "userrating",
       "$ref": "Optional.Integer",
       "$ref": "Optional.Integer"
      "default": null,
       "name": "userrating"
     },
     },
     {
     {
       "name": "ratings",
       "$ref": "Video.Ratings.Set",
       "$ref": "Video.Ratings.Set"
       "name": "ratings"
     },
     },
     {
     {
       "name": "dateadded",
       "$ref": "Optional.String",
       "$ref": "Optional.String"
      "default": null,
       "name": "dateadded"
     },
     },
     {
     {
      "name": "runtime",
       "$ref": "Optional.Integer",
       "$ref": "Optional.Integer",
       "description": "Runtime in seconds"
      "default": null,
       "description": "Runtime in seconds",
      "name": "runtime"
     },
     },
     {
     {
      "name": "status",
       "$ref": "Optional.String",
       "$ref": "Optional.String",
       "description": "Valid values: 'returning series', 'in production', 'planned', 'cancelled', 'ended'"
      "default": null,
       "description": "Valid values: 'returning series', 'in production', 'planned', 'cancelled', 'ended'",
      "name": "status"
     },
     },
     {
     {
      "default": null,
       "name": "uniqueid",
       "name": "uniqueid",
       "type": [
       "type": [
        "null",
         {
         {
           "$ref": "Media.UniqueID.Set",
          "type": "null"
          "required": true
        },
        {
           "$ref": "Media.UniqueID.Set"
         }
         }
       ],
       ]
      "default": null
     }
     }
   ],
   ],
   "returns": "string"
  "permission": "UpdateData",
}
   "returns": {
</syntaxhighlight>}}
    "type": "string"
=== XBMC ===
  },
==== XBMC.GetInfoBooleans ====
  "type": "method"
Retrieve info booleans about Kodi and the system<br />
}</syntaxhighlight>}}=== XBMC ======= XBMC.GetInfoBooleans ====Retrieve info booleans about Kodi and the system<br />'''Permissions:'''* ReadData'''Parameters:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA"># ''array'' booleans<br /></div>'''Returns:''' <div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">'''Type:''' ''object (Object containing key-value pairs of the retrieved info booleans)''<br /></div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
'''Permissions:'''
* ReadData
'''Parameters:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
# ''array'' booleans<br />
</div>
'''Returns:'''  
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
'''Type:''' ''object (Object containing key-value pairs of the retrieved info booleans)''<br />
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
  "type": "method",
   "description": "Retrieve info booleans about Kodi and the system",
   "description": "Retrieve info booleans about Kodi and the system",
  "transport": "Response",
  "permission": "ReadData",
   "params": [
   "params": [
     {
     {
      "items": {
        "type": "string"
      },
      "minItems": 1,
       "name": "booleans",
       "name": "booleans",
      "type": "array",
       "required": true,
       "required": true,
       "items": {
       "type": "array"
        "type": "string"
      },
      "minItems": 1
     }
     }
   ],
   ],
  "permission": "ReadData",
   "returns": {
   "returns": {
    "type": "object",
    "description": "Object containing key-value pairs of the retrieved info booleans",
     "additionalProperties": {
     "additionalProperties": {
      "default": "",
       "type": "string"
       "type": "string"
     }
     },
   }
    "description": "Object containing key-value pairs of the retrieved info booleans",
}
    "type": "object"
</syntaxhighlight>}}
   },
==== XBMC.GetInfoLabels ====
  "type": "method"
Retrieve info labels about Kodi and the system<br />
}</syntaxhighlight>}}==== XBMC.GetInfoLabels ====Retrieve info labels about Kodi and the system<br />'''Permissions:'''* ReadData'''Parameters:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA"># ''array'' labels (See http://kodi.wiki/view/InfoLabels for a list of possible info labels)<br /></div>'''Returns:''' <div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">'''Type:''' ''object (Object containing key-value pairs of the retrieved info labels)''<br /></div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
'''Permissions:'''
* ReadData
'''Parameters:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
# ''array'' labels (See http://kodi.wiki/view/InfoLabels for a list of possible info labels)<br />
</div>
'''Returns:'''  
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
'''Type:''' ''object (Object containing key-value pairs of the retrieved info labels)''<br />
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
  "type": "method",
   "description": "Retrieve info labels about Kodi and the system",
   "description": "Retrieve info labels about Kodi and the system",
  "transport": "Response",
  "permission": "ReadData",
   "params": [
   "params": [
     {
     {
       "name": "labels",
       "description": "See http://kodi.wiki/view/InfoLabels for a list of possible info labels",
      "type": "array",
      "required": true,
       "items": {
       "items": {
         "type": "string"
         "type": "string"
       },
       },
       "minItems": 1,
       "minItems": 1,
       "description": "See http://kodi.wiki/view/InfoLabels for a list of possible info labels"
       "name": "labels",
      "required": true,
      "type": "array"
     }
     }
   ],
   ],
  "permission": "ReadData",
   "returns": {
   "returns": {
    "type": "object",
    "description": "Object containing key-value pairs of the retrieved info labels",
     "additionalProperties": {
     "additionalProperties": {
      "default": "",
       "type": "string"
       "type": "string"
     }
     },
   }
    "description": "Object containing key-value pairs of the retrieved info labels",
}
    "type": "object"
</syntaxhighlight>}}
   },
== Global Types ==
  "type": "method"
=== Addon ===
}</syntaxhighlight>}}== Global Types ===== Addon ======= Addon.Content ===='''Type:''' ''string''<br />{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
==== Addon.Content ====
   "default": "unknown",
'''Type:''' ''string''
   "enums": [
<br />
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
   "type": "string",
   "enum": [
     "unknown",
     "unknown",
     "video",
     "video",
Line 9,221: Line 6,357:
     "executable"
     "executable"
   ],
   ],
   "default": "unknown"
   "id": "Addon.Content",
}
  "type": "string"
</syntaxhighlight>}}
}</syntaxhighlight>}}==== Addon.Details ===='''Extends:'''* ''[[#Item.Details.Base|Item.Details.Base]]'''''Properties:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">* ''string'' addonid* [''string'' author]* [''mixed: boolean|string'' broken]* [''array'' dependencies]* [''string'' description]* [''string'' disclaimer]* [''boolean'' enabled]* [''array'' extrainfo]* [''string'' fanart]* [''boolean'' installed]* [''string'' name]* [''string'' path]* [''integer'' rating]* [''string'' summary]* [''string'' thumbnail]* ''[[#Addon.Types|Addon.Types]]'' type* [''string'' version]</div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
==== Addon.Details ====
'''Extends:'''
* ''[[#Item.Details.Base|Item.Details.Base]]''
'''Properties:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
* ''string'' addonid
* ''[[#Addon.Types|Addon.Types]]'' type
* [''string'' name]
* [''string'' version]
* [''string'' summary]
* [''string'' description]
* [''string'' path]
* [''string'' author]
* [''string'' thumbnail]
* [''string'' disclaimer]
* [''string'' fanart]
* [''array'' dependencies]
* [''mixed: '' broken]
* [''array'' extrainfo]
* [''integer'' rating]
* [''boolean'' enabled]
* [''boolean'' installed]
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
   "extends": "Item.Details.Base",
   "extends": "Item.Details.Base",
  "id": "Addon.Details",
   "properties": {
   "properties": {
     "addonid": {
     "addonid": {
      "type": "string",
       "required": true,
      "required": true
    },
    "type": {
      "$ref": "Addon.Types",
       "required": true
    },
    "name": {
      "type": "string"
    },
    "version": {
      "type": "string"
    },
    "summary": {
      "type": "string"
    },
    "description": {
      "type": "string"
    },
    "path": {
       "type": "string"
       "type": "string"
     },
     },
     "author": {
     "author": {
      "default": "",
       "type": "string"
       "type": "string"
     },
     },
     "thumbnail": {
     "broken": {
       "type": "string"
       "default": null,
    },
      "type": [
    "disclaimer": {
        {
      "type": "string"
          "type": "boolean"
    },
        },
    "fanart": {
        {
      "type": "string"
          "type": "string"
        }
      ]
     },
     },
     "dependencies": {
     "dependencies": {
      "type": "array",
       "items": {
       "items": {
        "type": "object",
         "properties": {
         "properties": {
           "addonid": {
           "addonid": {
             "type": "string",
            "required": true,
             "required": true
             "type": "string"
          },
          "optional": {
             "required": true,
            "type": "boolean"
           },
           },
           "version": {
           "version": {
            "type": "string",
             "required": true,
             "required": true
             "type": "string"
          },
          "optional": {
             "type": "boolean",
            "required": true
           }
           }
         }
         },
       }
        "type": "object"
       },
      "type": "array"
    },
    "description": {
      "default": "",
      "type": "string"
    },
    "disclaimer": {
      "default": "",
      "type": "string"
     },
     },
     "broken": {
     "enabled": {
       "type": [
       "default": false,
        "boolean",
      "type": "boolean"
        "string"
      ]
     },
     },
     "extrainfo": {
     "extrainfo": {
      "type": "array",
       "items": {
       "items": {
        "type": "object",
         "properties": {
         "properties": {
           "key": {
           "key": {
             "type": "string",
             "required": true,
             "required": true
             "type": "string"
           },
           },
           "value": {
           "value": {
             "type": "string",
             "required": true,
             "required": true
             "type": "string"
           }
           }
         }
         },
       }
        "type": "object"
       },
      "type": "array"
     },
     },
     "rating": {
     "fanart": {
       "type": "integer"
      "default": "",
       "type": "string"
     },
     },
     "enabled": {
     "installed": {
      "default": false,
       "type": "boolean"
       "type": "boolean"
     },
     },
     "installed": {
     "name": {
       "type": "boolean"
      "default": "",
     }
      "type": "string"
   }
    },
}
    "path": {
</syntaxhighlight>}}
      "default": "",
==== Addon.Fields ====
      "type": "string"
'''Extends:'''
    },
* ''[[#Item.Fields.Base|Item.Fields.Base]]''
    "rating": {
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
      "default": 0,
{
       "type": "integer"
    },
    "summary": {
      "default": "",
      "type": "string"
    },
    "thumbnail": {
      "default": "",
      "type": "string"
    },
    "type": {
      "$ref": "Addon.Types",
      "required": true
    },
    "version": {
      "default": "",
      "type": "string"
     }
   }
}</syntaxhighlight>}}==== Addon.Fields ===='''Extends:'''* ''[[#Item.Fields.Base|Item.Fields.Base]]''{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
   "extends": "Item.Fields.Base",
   "extends": "Item.Fields.Base",
  "id": "Addon.Fields",
   "items": {
   "items": {
     "type": "string",
     "enums": [
    "enum": [
       "name",
       "name",
       "version",
       "version",
Line 9,364: Line 6,487:
       "enabled",
       "enabled",
       "installed"
       "installed"
     ]
     ],
    "type": "string"
   }
   }
}
}</syntaxhighlight>}}==== Addon.Types ===='''Type:''' ''string''<br />{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
</syntaxhighlight>}}
  "default": "unknown",
==== Addon.Types ====
'''Type:''' ''string''
<br />
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
   "enums": [
   "enums": [
     "unknown",
     "unknown",
Line 9,378: Line 6,497:
     "xbmc.gui.skin",
     "xbmc.gui.skin",
     "xbmc.pvrclient",
     "xbmc.pvrclient",
    "kodi.adsp",
     "kodi.inputstream",
     "kodi.inputstream",
    "kodi.gameclient",
     "kodi.peripheral",
     "kodi.peripheral",
     "xbmc.python.script",
     "xbmc.python.script",
Line 9,395: Line 6,514:
     "xbmc.webinterface",
     "xbmc.webinterface",
     "xbmc.service",
     "xbmc.service",
     "xbmc.audioencoder",
     "kodi.audioencoder",
     "kodi.context.item",
     "kodi.context.item",
     "kodi.audiodecoder",
     "kodi.audiodecoder",
Line 9,401: Line 6,520:
     "kodi.resource.language",
     "kodi.resource.language",
     "kodi.resource.uisounds",
     "kodi.resource.uisounds",
    "kodi.resource.games",
    "kodi.resource.font",
    "kodi.vfs",
    "kodi.imagedecoder",
    "xbmc.metadata.scraper.library",
    "xbmc.python.library",
    "xbmc.python.module",
    "kodi.game.controller",
    "",
     "xbmc.addon.video",
     "xbmc.addon.video",
     "xbmc.addon.audio",
     "xbmc.addon.audio",
     "xbmc.addon.image",
     "xbmc.addon.image",
     "xbmc.addon.executable",
     "xbmc.addon.executable",
     "xbmc.metadata.scraper.library",
     "kodi.addon.game"
    "xbmc.python.library",
    "xbmc.python.module",
    "kodi.game.controller"
   ],
   ],
   "id": "Addon.Types",
   "id": "Addon.Types",
   "type": "string",
   "type": "string"
  "default": "unknown"
}</syntaxhighlight>}}=== Application ======= Application.Property.Name ===='''Type:''' ''string''<br />{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
}
   "default": "volume",
</syntaxhighlight>}}
   "enums": [
=== Application ===
==== Application.Property.Name ====
'''Type:''' ''string''
<br />
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
   "type": "string",
   "enum": [
     "volume",
     "volume",
     "muted",
     "muted",
     "name",
     "name",
     "version",
     "version",
    "volume",
     "sorttokens",
     "sorttokens",
     "language"
     "language"
   ]
   ],
}
  "id": "Application.Property.Name",
</syntaxhighlight>}}
  "type": "string"
==== Application.Property.Value ====
}</syntaxhighlight>}}==== Application.Property.Value ===='''Type:''' ''object''<br />'''Properties:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">* [''string'' language]* [''boolean'' muted]* [''string'' name]* [''[[#Array.String|Array.String]]'' sorttokens]* [''object'' version]* [''integer'' volume]</div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
'''Type:''' ''object''
   "id": "Application.Property.Value",
<br />
'''Properties:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
* [''integer'' volume]
* [''boolean'' muted]
* [''string'' name]
* [''object'' version]
* [''[[#Array.String|Array.String]]'' sorttokens]
* [''string'' language]
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
   "type": "object",
   "properties": {
   "properties": {
     "volume": {
     "language": {
       "type": "integer",
       "default": "",
       "minimum": 0,
      "description": "Current language code and region e.g. en_GB",
       "maximum": 100
       "minLength": 1,
       "type": "string"
     },
     },
     "muted": {
     "muted": {
      "default": false,
       "type": "boolean"
       "type": "boolean"
     },
     },
     "name": {
     "name": {
       "type": "string",
      "default": "",
       "minLength": 1
      "minLength": 1,
       "type": "string"
    },
    "sorttokens": {
      "$ref": "Array.String",
       "description": "Articles ignored during sorting when ignorearticle is enabled."
     },
     },
     "version": {
     "version": {
      "type": "object",
       "properties": {
       "properties": {
         "major": {
         "major": {
          "type": "integer",
           "minimum": 0,
           "minimum": 0,
           "required": true
           "required": true,
          "type": "integer"
         },
         },
         "minor": {
         "minor": {
          "type": "integer",
           "minimum": 0,
           "minimum": 0,
           "required": true
           "required": true,
          "type": "integer"
         },
         },
         "revision": {
         "revision": {
          "default": null,
           "type": [
           "type": [
             "string",
             {
             "integer"
              "type": "string"
            },
             {
              "type": "integer"
            }
           ]
           ]
         },
         },
         "tag": {
         "tag": {
           "type": "string",
           "enums": [
          "enum": [
             "prealpha",
             "prealpha",
             "alpha",
             "alpha",
Line 9,489: Line 6,602:
             "stable"
             "stable"
           ],
           ],
           "required": true
           "required": true,
          "type": "string"
         },
         },
         "tagversion": {
         "tagversion": {
          "default": "",
           "type": "string"
           "type": "string"
         }
         }
       }
       },
      "type": "object"
     },
     },
     "sorttokens": {
     "volume": {
       "$ref": "Array.String",
       "default": 0,
      "description": "Articles ignored during sorting when ignorearticle is enabled."
       "maximum": 100,
    },
       "minimum": 0,
    "language": {
       "type": "integer"
       "type": "string",
       "minLength": 1,
       "description": "Current language code and region e.g. en_GB"
     }
     }
   }
   },
}
  "type": "object"
</syntaxhighlight>}}
}</syntaxhighlight>}}=== Array ======= Array.Integer ===='''Type:''' ''array''<br />{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
=== Array ===
   "id": "Array.Integer",
==== Array.Integer ====
'''Type:''' ''array''
<br />
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
   "type": "array",
   "items": {
   "items": {
     "type": "integer"
     "type": "integer"
   }
   },
}
  "type": "array"
</syntaxhighlight>}}
}</syntaxhighlight>}}==== Array.String ===='''Type:''' ''array''<br />{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
==== Array.String ====
   "id": "Array.String",
'''Type:''' ''array''
<br />
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
   "type": "array",
   "items": {
   "items": {
     "type": "string",
    "minLength": 1,
    "minLength": 1
     "type": "string"
  }
  },
}
  "type": "array"
</syntaxhighlight>}}
}</syntaxhighlight>}}=== Audio ======= Audio.Album.ReleaseType ===='''Type:''' ''string''<br />{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
=== Audio ===
   "default": "album",
==== Audio.Album.ReleaseType ====
   "enums": [
'''Type:''' ''string''
<br />
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
   "type": "string",
   "enum": [
     "album",
     "album",
     "single"
     "single"
   ],
   ],
   "default": "album"
   "id": "Audio.Album.ReleaseType",
}
  "type": "string"
</syntaxhighlight>}}
}</syntaxhighlight>}}==== Audio.Artist.Roles ===='''Type:''' ''array''<br />{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
==== Audio.Artist.Roles ====
   "id": "Audio.Artist.Roles",
'''Type:''' ''array''
<br />
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
   "type": "array",
   "items": {
   "items": {
     "type": "object",
     "additionalProperties": false,
     "description": "The various roles contributed by an artist to one or more songs",
     "description": "The various roles contributed by an artist to one or more songs",
     "properties": {
     "properties": {
      "role": {
        "required": true,
        "type": "string"
      },
       "roleid": {
       "roleid": {
         "$ref": "Library.Id",
         "$ref": "Library.Id",
        "required": true
      },
      "role": {
        "type": "string",
         "required": true
         "required": true
       }
       }
     },
     },
     "additionalProperties": false
     "type": "object"
   }
   },
}
  "type": "array"
</syntaxhighlight>}}
}</syntaxhighlight>}}==== Audio.Contributors ===='''Type:''' ''array''<br />{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
==== Audio.Contributors ====
   "id": "Audio.Contributors",
'''Type:''' ''array''
<br />
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
   "type": "array",
   "items": {
   "items": {
     "type": "object",
     "additionalProperties": false,
     "description": "The artist and the role they contribute to a song",
     "description": "The artist and the role they contribute to a song",
     "properties": {
     "properties": {
      "artistid": {
        "$ref": "Library.Id",
        "required": true
      },
       "name": {
       "name": {
         "type": "string",
         "required": true,
         "required": true
         "type": "string"
       },
       },
       "role": {
       "role": {
         "type": "string",
         "required": true,
         "required": true
         "type": "string"
       },
       },
       "roleid": {
       "roleid": {
         "$ref": "Library.Id",
         "$ref": "Library.Id",
         "required": true
         "required": true
      },
       }
      "artistid": {
        "$ref": "Library.Id",
        "required": true
       }
     },
     },
     "additionalProperties": false
     "type": "object"
   }
   },
}
  "type": "array"
</syntaxhighlight>}}
}</syntaxhighlight>}}==== Audio.Details.Album ===='''Extends:'''* ''[[#Audio.Details.Media|Audio.Details.Media]]'''''Properties:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">* ''[[#Library.Id|Library.Id]]'' albumid* [''string'' albumlabel]* [''boolean'' compilation]* [''string'' description]* [''boolean'' isboxset]* [''string'' lastplayed]* [''[[#Array.String|Array.String]]'' mood]* [''string'' musicbrainzalbumid]* [''string'' musicbrainzreleasegroupid]* [''integer'' playcount]* [''[[#Audio.Album.ReleaseType|Audio.Album.ReleaseType]]'' releasetype = album]* [''[[#Audio.Details.Genres|Audio.Details.Genres]]'' songgenres]* [''[[#Array.Integer|Array.Integer]]'' sourceid]* [''[[#Array.String|Array.String]]'' style]* [''[[#Array.String|Array.String]]'' theme]* [''integer'' totaldiscs]* [''string'' type]</div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
==== Audio.Details.Album ====
'''Extends:'''
* ''[[#Audio.Details.Media|Audio.Details.Media]]''
'''Properties:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
* ''[[#Library.Id|Library.Id]]'' albumid
* [''string'' description]
* [''[[#Array.String|Array.String]]'' theme]
* [''[[#Array.String|Array.String]]'' mood]
* [''[[#Array.String|Array.String]]'' style]
* [''string'' type]
* [''string'' albumlabel]
* [''integer'' playcount]
* [''boolean'' compilation]
* [''[[#Audio.Album.ReleaseType|Audio.Album.ReleaseType]]'' releasetype]
* [''string'' musicbrainzreleasegroupid]
* [''string'' musicbrainzalbumid]
* [''[[#Audio.Details.Genres|Audio.Details.Genres]]'' songgenres]
* [''string'' lastplayed]
* [''[[#Array.Integer|Array.Integer]]'' sourceid]
* [''boolean'' isboxset]
* [''integer'' totaldiscs]
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
   "extends": "Audio.Details.Media",
   "extends": "Audio.Details.Media",
  "id": "Audio.Details.Album",
   "properties": {
   "properties": {
     "albumid": {
     "albumid": {
       "$ref": "Library.Id",
       "$ref": "Library.Id",
       "required": true
       "required": true
    },
    "albumlabel": {
      "default": "",
      "type": "string"
    },
    "compilation": {
      "default": false,
      "type": "boolean"
     },
     },
     "description": {
     "description": {
      "default": "",
       "type": "string"
       "type": "string"
     },
     },
     "theme": {
     "isboxset": {
       "$ref": "Array.String"
       "default": false,
      "type": "boolean"
    },
    "lastplayed": {
      "default": "",
      "type": "string"
     },
     },
     "mood": {
     "mood": {
       "$ref": "Array.String"
       "$ref": "Array.String"
     },
     },
     "style": {
     "musicbrainzalbumid": {
       "$ref": "Array.String"
       "default": "",
    },
    "type": {
       "type": "string"
       "type": "string"
     },
     },
     "albumlabel": {
     "musicbrainzreleasegroupid": {
      "default": "",
       "type": "string"
       "type": "string"
     },
     },
     "playcount": {
     "playcount": {
      "default": 0,
       "type": "integer"
       "type": "integer"
    },
    "compilation": {
      "type": "boolean"
     },
     },
     "releasetype": {
     "releasetype": {
       "$ref": "Audio.Album.ReleaseType"
       "$ref": "Audio.Album.ReleaseType",
    },
       "default": "album"
    "musicbrainzreleasegroupid": {
      "type": "string"
    },
    "musicbrainzalbumid": {
       "type": "string"
     },
     },
     "songgenres": {
     "songgenres": {
       "$ref": "Audio.Details.Genres"
       "$ref": "Audio.Details.Genres"
    },
    "lastplayed": {
      "type": "string"
     },
     },
     "sourceid": {
     "sourceid": {
       "$ref": "Array.Integer"
       "$ref": "Array.Integer"
     },
     },
     "isboxset": {
     "style": {
       "type": "boolean"
       "$ref": "Array.String"
    },
    "theme": {
      "$ref": "Array.String"
     },
     },
     "totaldiscs": {
     "totaldiscs": {
      "default": 0,
       "type": "integer"
       "type": "integer"
    },
    "type": {
      "default": "",
      "type": "string"
     }
     }
   }
   }
}
}</syntaxhighlight>}}==== Audio.Details.Artist ===='''Extends:'''* ''[[#Audio.Details.Base|Audio.Details.Base]]'''''Properties:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">* ''string'' artist* ''[[#Library.Id|Library.Id]]'' artistid* [''string'' born]* [''boolean'' compilationartist]* [''string'' description]* [''string'' died]* [''string'' disambiguation]* [''string'' disbanded]* [''string'' formed]* [''string'' gender]* [''[[#Array.String|Array.String]]'' instrument]* [''boolean'' isalbumartist]* [''[[#Array.String|Array.String]]'' mood]* [''[[#Array.String|Array.String]]'' musicbrainzartistid]* [''[[#Audio.Artist.Roles|Audio.Artist.Roles]]'' roles]* [''[[#Audio.Details.Genres|Audio.Details.Genres]]'' songgenres]* [''string'' sortname]* [''[[#Array.Integer|Array.Integer]]'' sourceid]* [''[[#Array.String|Array.String]]'' style]* [''string'' type]* [''[[#Array.String|Array.String]]'' yearsactive]</div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
</syntaxhighlight>}}
==== Audio.Details.Artist ====
'''Extends:'''
* ''[[#Audio.Details.Base|Audio.Details.Base]]''
'''Properties:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
* ''[[#Library.Id|Library.Id]]'' artistid
* ''string'' artist
* [''[[#Array.String|Array.String]]'' instrument]
* [''[[#Array.String|Array.String]]'' style]
* [''[[#Array.String|Array.String]]'' mood]
* [''string'' born]
* [''string'' formed]
* [''string'' description]
* [''string'' died]
* [''string'' disbanded]
* [''[[#Array.String|Array.String]]'' yearsactive]
* [''boolean'' compilationartist]
* [''[[#Array.String|Array.String]]'' musicbrainzartistid]
* [''[[#Audio.Artist.Roles|Audio.Artist.Roles]]'' roles]
* [''[[#Audio.Details.Genres|Audio.Details.Genres]]'' songgenres]
* [''boolean'' isalbumartist]
* [''string'' sortname]
* [''string'' type]
* [''string'' gender]
* [''string'' disambiguation]
* [''[[#Array.Integer|Array.Integer]]'' sourceid]
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
   "extends": "Audio.Details.Base",
   "extends": "Audio.Details.Base",
  "id": "Audio.Details.Artist",
   "properties": {
   "properties": {
    "artist": {
      "required": true,
      "type": "string"
    },
     "artistid": {
     "artistid": {
       "$ref": "Library.Id",
       "$ref": "Library.Id",
       "required": true
       "required": true
     },
     },
     "artist": {
     "born": {
       "type": "string",
       "default": "",
       "required": true
       "type": "string"
     },
     },
     "instrument": {
     "compilationartist": {
       "$ref": "Array.String"
       "default": false,
      "type": "boolean"
     },
     },
     "style": {
     "description": {
       "$ref": "Array.String"
       "default": "",
      "type": "string"
     },
     },
     "mood": {
     "died": {
       "$ref": "Array.String"
       "default": "",
    },
    "born": {
       "type": "string"
       "type": "string"
     },
     },
     "formed": {
     "disambiguation": {
      "default": "",
       "type": "string"
       "type": "string"
     },
     },
     "description": {
     "disbanded": {
      "default": "",
       "type": "string"
       "type": "string"
     },
     },
     "died": {
     "formed": {
      "default": "",
       "type": "string"
       "type": "string"
     },
     },
     "disbanded": {
     "gender": {
      "default": "",
       "type": "string"
       "type": "string"
     },
     },
     "yearsactive": {
     "instrument": {
       "$ref": "Array.String"
       "$ref": "Array.String"
     },
     },
     "compilationartist": {
     "isalbumartist": {
      "default": false,
       "type": "boolean"
       "type": "boolean"
    },
    "mood": {
      "$ref": "Array.String"
     },
     },
     "musicbrainzartistid": {
     "musicbrainzartistid": {
Line 9,759: Line 6,815:
     "songgenres": {
     "songgenres": {
       "$ref": "Audio.Details.Genres"
       "$ref": "Audio.Details.Genres"
    },
    "isalbumartist": {
      "type": "boolean"
     },
     },
     "sortname": {
     "sortname": {
      "default": "",
       "type": "string"
       "type": "string"
     },
     },
     "type": {
     "sourceid": {
       "type": "string"
       "$ref": "Array.Integer"
     },
     },
     "gender": {
     "style": {
       "type": "string"
       "$ref": "Array.String"
     },
     },
     "disambiguation": {
     "type": {
      "default": "",
       "type": "string"
       "type": "string"
     },
     },
     "sourceid": {
     "yearsactive": {
       "$ref": "Array.Integer"
       "$ref": "Array.String"
     }
     }
   }
   }
}
}</syntaxhighlight>}}==== Audio.Details.Base ===='''Extends:'''* ''[[#Media.Details.Base|Media.Details.Base]]'''''Properties:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">* [''[[#Media.Artwork|Media.Artwork]]'' art]* [''string'' dateadded]* [''[[#Array.String|Array.String]]'' genre]</div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
</syntaxhighlight>}}
   "extends": "Media.Details.Base",
==== Audio.Details.Base ====
  "id": "Audio.Details.Base",
'''Extends:'''
* ''[[#Media.Details.Base|Media.Details.Base]]''
'''Properties:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
* [''[[#Array.String|Array.String]]'' genre]
* [''string'' dateadded]
* [''[[#Media.Artwork|Media.Artwork]]'' art]
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
   "extends": "Media.Details.Base",
   "properties": {
   "properties": {
     "genre": {
     "art": {
       "$ref": "Array.String"
       "$ref": "Media.Artwork"
     },
     },
     "dateadded": {
     "dateadded": {
      "default": "",
       "type": "string"
       "type": "string"
     },
     },
     "art": {
     "genre": {
       "$ref": "Media.Artwork"
       "$ref": "Array.String"
     }
     }
   }
   }
}
}</syntaxhighlight>}}==== Audio.Details.Genres ===='''Type:''' ''array''<br />{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
</syntaxhighlight>}}
   "id": "Audio.Details.Genres",
==== Audio.Details.Genres ====
'''Type:''' ''array''
<br />
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
   "type": "array",
   "items": {
   "items": {
    "type": "object",
     "properties": {
     "properties": {
       "genreid": {
       "genreid": {
Line 9,820: Line 6,858:
       },
       },
       "title": {
       "title": {
        "default": "",
         "type": "string"
         "type": "string"
       }
       }
     }
     },
   }
    "type": "object"
}
   },
</syntaxhighlight>}}
  "type": "array"
==== Audio.Details.Media ====
}</syntaxhighlight>}}==== Audio.Details.Media ===='''Extends:'''* ''[[#Audio.Details.Base|Audio.Details.Base]]'''''Properties:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">* [''[[#Array.String|Array.String]]'' artist]* [''[[#Array.Integer|Array.Integer]]'' artistid]* [''string'' displayartist]* [''[[#Array.String|Array.String]]'' musicbrainzalbumartistid]* [''string'' originaldate]* [''number'' rating]* [''string'' releasedate]* [''string'' sortartist]* [''string'' title]* [''integer'' userrating]* [''integer'' votes]* [''integer'' year]</div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
'''Extends:'''
* ''[[#Audio.Details.Base|Audio.Details.Base]]''
'''Properties:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
* [''string'' title]
* [''[[#Array.String|Array.String]]'' artist]
* [''integer'' year]
* [''number'' rating]
* [''[[#Array.String|Array.String]]'' musicbrainzalbumartistid]
* [''[[#Array.Integer|Array.Integer]]'' artistid]
* [''string'' displayartist]
* [''integer'' votes]
* [''integer'' userrating]
* [''string'' sortartist]
* [''string'' releasedate]
* [''string'' originaldate]
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
   "extends": "Audio.Details.Base",
   "extends": "Audio.Details.Base",
  "id": "Audio.Details.Media",
   "properties": {
   "properties": {
    "title": {
      "type": "string"
    },
     "artist": {
     "artist": {
      "$ref": "Array.String"
    },
    "year": {
      "type": "integer"
    },
    "rating": {
      "type": "number"
    },
    "musicbrainzalbumartistid": {
       "$ref": "Array.String"
       "$ref": "Array.String"
     },
     },
Line 9,867: Line 6,876:
     },
     },
     "displayartist": {
     "displayartist": {
      "default": "",
       "type": "string"
       "type": "string"
     },
     },
     "votes": {
     "musicbrainzalbumartistid": {
       "type": "integer"
       "$ref": "Array.String"
     },
     },
     "userrating": {
     "originaldate": {
       "type": "integer"
      "default": "",
       "type": "string"
     },
     },
     "sortartist": {
     "rating": {
       "type": "string"
      "default": 0.0,
       "type": "number"
     },
     },
     "releasedate": {
     "releasedate": {
      "default": "",
       "type": "string"
       "type": "string"
     },
     },
     "originaldate": {
     "sortartist": {
      "default": "",
       "type": "string"
       "type": "string"
    }
  }
}
</syntaxhighlight>}}
==== Audio.Details.Role ====
'''Extends:'''
* ''[[#Item.Details.Base|Item.Details.Base]]''
'''Properties:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
* ''[[#Library.Id|Library.Id]]'' roleid
* [''string'' title]
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
  "extends": "Item.Details.Base",
  "properties": {
    "roleid": {
      "$ref": "Library.Id",
      "required": true
     },
     },
     "title": {
     "title": {
      "default": "",
       "type": "string"
       "type": "string"
    },
    "userrating": {
      "default": 0,
      "type": "integer"
    },
    "votes": {
      "default": 0,
      "type": "integer"
    },
    "year": {
      "default": 0,
      "type": "integer"
     }
     }
   }
   }
}
}</syntaxhighlight>}}==== Audio.Details.Role ===='''Extends:'''* ''[[#Item.Details.Base|Item.Details.Base]]'''''Properties:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">* ''[[#Library.Id|Library.Id]]'' roleid* [''string'' title]</div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
</syntaxhighlight>}}
   "extends": "Item.Details.Base",
==== Audio.Details.Song ====
  "id": "Audio.Details.Role",
'''Extends:'''
* ''[[#Audio.Details.Media|Audio.Details.Media]]''
'''Properties:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
* ''[[#Library.Id|Library.Id]]'' songid
* [''string'' file]
* [''[[#Array.String|Array.String]]'' albumartist]
* [''string'' album]
* [''integer'' track]
* [''integer'' duration]
* [''string'' comment]
* [''string'' lyrics]
* [''integer'' playcount]
* [''string'' musicbrainztrackid]
* [''[[#Array.String|Array.String]]'' musicbrainzartistid]
* [''[[#Library.Id|Library.Id]]'' albumid]
* [''string'' lastplayed]
* [''integer'' disc]
* [''[[#Array.Integer|Array.Integer]]'' albumartistid]
* [''[[#Audio.Album.ReleaseType|Audio.Album.ReleaseType]]'' albumreleasetype]
* [''string'' mood]
* [''[[#Audio.Contributors|Audio.Contributors]]'' contributors]
* [''string'' displaycomposer]
* [''string'' displayconductor]
* [''string'' displayorchestra]
* [''string'' displaylyricist]
* [''[[#Array.Integer|Array.Integer]]'' genreid]
* [''[[#Array.Integer|Array.Integer]]'' sourceid]
* [''string'' disctitle]
* [''Integer'' bpm]
* [''Integer'' samplerate]
* [''Integer'' bitrate]
* [''Integer'' channels]
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
   "extends": "Audio.Details.Media",
   "properties": {
   "properties": {
     "songid": {
     "roleid": {
       "$ref": "Library.Id",
       "$ref": "Library.Id",
       "required": true
       "required": true
     },
     },
     "file": {
     "title": {
      "default": "",
      "type": "string"
    }
  }
}</syntaxhighlight>}}==== Audio.Details.Song ===='''Extends:'''* ''[[#Audio.Details.Media|Audio.Details.Media]]'''''Properties:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">* [''string'' album]* [''[[#Array.String|Array.String]]'' albumartist]* [''[[#Array.Integer|Array.Integer]]'' albumartistid]* [''[[#Library.Id|Library.Id]]'' albumid = -1]* [''[[#Audio.Album.ReleaseType|Audio.Album.ReleaseType]]'' albumreleasetype = album]* [''any'' bitrate]* [''any'' bpm]* [''any'' channels]* [''string'' comment]* [''[[#Audio.Contributors|Audio.Contributors]]'' contributors]* [''integer'' disc]* [''string'' disctitle]* [''string'' displaycomposer]* [''string'' displayconductor]* [''string'' displaylyricist]* [''string'' displayorchestra]* [''integer'' duration]* [''string'' file]* [''[[#Array.Integer|Array.Integer]]'' genreid]* [''string'' lastplayed]* [''string'' lyrics]* [''string'' mood]* [''[[#Array.String|Array.String]]'' musicbrainzartistid]* [''string'' musicbrainztrackid]* [''integer'' playcount]* [''any'' samplerate]* ''[[#Library.Id|Library.Id]]'' songid* [''[[#Array.Integer|Array.Integer]]'' sourceid]* [''integer'' track]</div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
  "extends": "Audio.Details.Media",
  "id": "Audio.Details.Song",
  "properties": {
    "album": {
      "default": "",
       "type": "string"
       "type": "string"
     },
     },
Line 9,958: Line 6,939:
       "$ref": "Array.String"
       "$ref": "Array.String"
     },
     },
     "album": {
     "albumartistid": {
       "type": "string"
       "$ref": "Array.Integer"
     },
     },
     "track": {
     "albumid": {
       "type": "integer"
       "$ref": "Library.Id",
      "default": -1
     },
     },
     "duration": {
     "albumreleasetype": {
       "type": "integer"
       "$ref": "Audio.Album.ReleaseType",
      "default": "album"
     },
     },
     "comment": {
     "bitrate": {
       "type": "string"
      "default": null,
       "type": "any"
     },
     },
     "lyrics": {
     "bpm": {
       "type": "string"
      "default": null,
       "type": "any"
     },
     },
     "playcount": {
     "channels": {
       "type": "integer"
      "default": null,
       "type": "any"
     },
     },
     "musicbrainztrackid": {
     "comment": {
      "default": "",
       "type": "string"
       "type": "string"
     },
     },
     "musicbrainzartistid": {
     "contributors": {
       "$ref": "Array.String"
       "$ref": "Audio.Contributors"
     },
     },
     "albumid": {
     "disc": {
       "$ref": "Library.Id"
       "default": 0,
      "type": "integer"
     },
     },
     "lastplayed": {
     "disctitle": {
      "default": "",
       "type": "string"
       "type": "string"
     },
     },
     "disc": {
     "displaycomposer": {
       "type": "integer"
      "default": "",
       "type": "string"
     },
     },
     "albumartistid": {
     "displayconductor": {
       "$ref": "Array.Integer"
       "default": "",
      "type": "string"
     },
     },
     "albumreleasetype": {
     "displaylyricist": {
       "$ref": "Audio.Album.ReleaseType"
       "default": "",
      "type": "string"
     },
     },
     "mood": {
     "displayorchestra": {
      "default": "",
       "type": "string"
       "type": "string"
     },
     },
     "contributors": {
     "duration": {
       "$ref": "Audio.Contributors"
       "default": 0,
      "type": "integer"
     },
     },
     "displaycomposer": {
     "file": {
      "default": "",
       "type": "string"
       "type": "string"
     },
     },
     "displayconductor": {
     "genreid": {
      "$ref": "Array.Integer"
    },
    "lastplayed": {
      "default": "",
       "type": "string"
       "type": "string"
     },
     },
     "displayorchestra": {
     "lyrics": {
      "default": "",
       "type": "string"
       "type": "string"
     },
     },
     "displaylyricist": {
     "mood": {
      "default": "",
       "type": "string"
       "type": "string"
     },
     },
     "genreid": {
     "musicbrainzartistid": {
       "$ref": "Array.Integer"
       "$ref": "Array.String"
     },
     },
     "sourceid": {
     "musicbrainztrackid": {
       "$ref": "Array.Integer"
       "default": "",
    },
    "disctitle": {
       "type": "string"
       "type": "string"
     },
     },
     "bpm": {
     "playcount": {
       "type": "Integer"
      "default": 0,
       "type": "integer"
     },
     },
     "samplerate": {
     "samplerate": {
       "type": "Integer"
      "default": null,
       "type": "any"
    },
    "songid": {
      "$ref": "Library.Id",
      "required": true
     },
     },
     "bitrate": {
     "sourceid": {
       "type": "Integer"
       "$ref": "Array.Integer"
     },
     },
     "channels": {
     "track": {
       "type": "Integer"
      "default": 0,
       "type": "integer"
     }
     }
   }
   }
}
}</syntaxhighlight>}}==== Audio.Fields.Album ===='''Extends:'''* ''[[#Item.Fields.Base|Item.Fields.Base]]''{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
</syntaxhighlight>}}
==== Audio.Fields.Album ====
'''Extends:'''
* ''[[#Item.Fields.Base|Item.Fields.Base]]''
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
   "extends": "Item.Fields.Base",
   "extends": "Item.Fields.Base",
  "id": "Audio.Fields.Album",
   "items": {
   "items": {
    "type": "string",
     "description": "Requesting the songgenres, artistid and/or sourceid fields will result in increased response times",
     "description": "Requesting the songgenres, artistid and/or sourceid fields will result in increased response times",
     "enum": [
     "enums": [
       "title",
       "title",
       "description",
       "description",
Line 10,082: Line 7,082:
       "releasedate",
       "releasedate",
       "originaldate"
       "originaldate"
     ]
     ],
    "type": "string"
   }
   }
}
}</syntaxhighlight>}}==== Audio.Fields.Artist ===='''Extends:'''* ''[[#Item.Fields.Base|Item.Fields.Base]]''{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
</syntaxhighlight>}}
==== Audio.Fields.Artist ====
'''Extends:'''
* ''[[#Item.Fields.Base|Item.Fields.Base]]''
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
   "extends": "Item.Fields.Base",
   "extends": "Item.Fields.Base",
  "id": "Audio.Fields.Artist",
   "items": {
   "items": {
    "type": "string",
     "description": "Requesting the (song)genreid/genre, roleid/role or sourceid fields will result in increased response times",
     "description": "Requesting the (song)genreid/genre, roleid/role or sourceid fields will result in increased response times",
     "enum": [
     "enums": [
       "instrument",
       "instrument",
       "style",
       "style",
Line 10,120: Line 7,115:
       "art",
       "art",
       "sourceid"
       "sourceid"
     ]
     ],
    "type": "string"
   }
   }
}
}</syntaxhighlight>}}==== Audio.Fields.Role ===='''Extends:'''* ''[[#Item.Fields.Base|Item.Fields.Base]]''{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
</syntaxhighlight>}}
==== Audio.Fields.Role ====
'''Extends:'''
* ''[[#Item.Fields.Base|Item.Fields.Base]]''
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
   "extends": "Item.Fields.Base",
   "extends": "Item.Fields.Base",
  "id": "Audio.Fields.Role",
   "items": {
   "items": {
     "type": "string",
     "enums": [
    "enum": [
       "title"
       "title"
     ]
     ],
    "type": "string"
   }
   }
}
}</syntaxhighlight>}}==== Audio.Fields.Song ===='''Extends:'''* ''[[#Item.Fields.Base|Item.Fields.Base]]''{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
</syntaxhighlight>}}
==== Audio.Fields.Song ====
'''Extends:'''
* ''[[#Item.Fields.Base|Item.Fields.Base]]''
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
   "extends": "Item.Fields.Base",
   "extends": "Item.Fields.Base",
  "id": "Audio.Fields.Song",
   "items": {
   "items": {
    "type": "string",
     "description": "Requesting the genreid, artistid, albumartistid and/or sourceid fields will result in increased response times",
     "description": "Requesting the genreid, artistid, albumartistid and/or sourceid fields will result in increased response times",
     "enum": [
     "enums": [
       "title",
       "title",
       "artist",
       "artist",
Line 10,194: Line 7,179:
       "bitrate",
       "bitrate",
       "channels"
       "channels"
     ]
     ],
    "type": "string"
   }
   }
}
}</syntaxhighlight>}}==== Audio.Property.Name ===='''Type:''' ''string''<br />{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
</syntaxhighlight>}}
   "default": "missingartistid",
==== Audio.Property.Name ====
   "enums": [
'''Type:''' ''string''
<br />
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
   "type": "string",
   "enum": [
     "missingartistid",
     "missingartistid",
     "librarylastupdated"
     "librarylastupdated"
   ]
   ],
}
  "id": "Audio.Property.Name",
</syntaxhighlight>}}
  "type": "string"
==== Audio.Property.Value ====
}</syntaxhighlight>}}==== Audio.Property.Value ===='''Type:''' ''object''<br />'''Properties:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">* [''string'' librarylastupdated]* [''[[#Library.Id|Library.Id]]'' missingartistid = -1]</div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
'''Type:''' ''object''
   "id": "Audio.Property.Value",
<br />
'''Properties:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
* [''[[#Library.Id|Library.Id]]'' missingartistid]
* [''string'' librarylastupdated]
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
   "type": "object",
   "properties": {
   "properties": {
    "missingartistid": {
      "$ref": "Library.Id"
    },
     "librarylastupdated": {
     "librarylastupdated": {
      "default": "",
       "type": "string"
       "type": "string"
    },
    "missingartistid": {
      "$ref": "Library.Id",
      "default": -1
     }
     }
   }
   },
}
  "type": "object"
</syntaxhighlight>}}
}</syntaxhighlight>}}=== Configuration ======= Configuration ===='''Type:''' ''object''<br />'''Properties:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">* ''[[#Configuration.Notifications|Configuration.Notifications]]'' notifications</div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
=== Configuration ===
   "id": "Configuration",
==== Configuration ====
'''Type:''' ''object''
<br />
'''Properties:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
* ''[[#Configuration.Notifications|Configuration.Notifications]]'' notifications
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
   "type": "object",
  "required": true,
   "properties": {
   "properties": {
     "notifications": {
     "notifications": {
Line 10,248: Line 7,210:
       "required": true
       "required": true
     }
     }
   }
   },
}
  "required": true,
</syntaxhighlight>}}
  "type": "object"
==== Configuration.Notifications ====
}</syntaxhighlight>}}==== Configuration.Notifications ===='''Type:''' ''object''<br />'''Properties:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">* ''boolean'' application* ''boolean'' audiolibrary* ''boolean'' gui* ''boolean'' input* ''boolean'' other* ''boolean'' player* ''boolean'' playlist* ''boolean'' pvr* ''boolean'' system* ''boolean'' videolibrary</div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
'''Type:''' ''object''
  "additionalProperties": false,
<br />
   "id": "Configuration.Notifications",
'''Properties:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
* ''boolean'' Player
* ''boolean'' Playlist
* ''boolean'' GUI
* ''boolean'' System
* ''boolean'' VideoLibrary
* ''boolean'' AudioLibrary
* ''boolean'' Application
* ''boolean'' Input
* ''boolean'' PVR
* ''boolean'' Other
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
   "type": "object",
   "properties": {
   "properties": {
     "Player": {
     "application": {
       "type": "boolean",
       "required": true,
       "required": true
       "type": "boolean"
     },
     },
     "Playlist": {
     "audiolibrary": {
       "type": "boolean",
       "required": true,
       "required": true
       "type": "boolean"
     },
     },
     "GUI": {
     "gui": {
       "type": "boolean",
       "required": true,
       "required": true
       "type": "boolean"
     },
     },
     "System": {
     "input": {
       "type": "boolean",
       "required": true,
       "required": true
       "type": "boolean"
     },
     },
     "VideoLibrary": {
     "other": {
       "type": "boolean",
       "required": true,
       "required": true
       "type": "boolean"
     },
     },
     "AudioLibrary": {
     "player": {
       "type": "boolean",
       "required": true,
       "required": true
       "type": "boolean"
     },
     },
     "Application": {
     "playlist": {
       "type": "boolean",
       "required": true,
       "required": true
       "type": "boolean"
     },
     },
     "Input": {
     "pvr": {
       "type": "boolean",
       "required": true,
       "required": true
       "type": "boolean"
     },
     },
     "PVR": {
     "system": {
       "type": "boolean",
       "required": true,
       "required": true
       "type": "boolean"
     },
     },
     "Other": {
     "videolibrary": {
       "type": "boolean",
       "required": true,
       "required": true
       "type": "boolean"
     }
     }
   },
   },
   "additionalProperties": false
   "type": "object"
}
}</syntaxhighlight>}}=== Favourite ======= Favourite.Details.Favourite ===='''Type:''' ''object''<br />'''Properties:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">* [''string'' path]* [''string'' thumbnail]* ''string'' title* ''[[#Favourite.Type|Favourite.Type]]'' type* [''string'' window]* [''string'' windowparameter]</div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
</syntaxhighlight>}}
  "additionalProperties": false,
=== Favourite ===
   "id": "Favourite.Details.Favourite",
==== Favourite.Details.Favourite ====
'''Type:''' ''object''
<br />
'''Properties:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
* ''string'' title
* ''[[#Favourite.Type|Favourite.Type]]'' type
* [''string'' path]
* [''string'' window]
* [''string'' windowparameter]
* [''string'' thumbnail]
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
   "type": "object",
   "properties": {
   "properties": {
    "path": {
      "default": "",
      "type": "string"
    },
    "thumbnail": {
      "default": "",
      "type": "string"
    },
     "title": {
     "title": {
       "type": "string",
       "required": true,
       "required": true
       "type": "string"
     },
     },
     "type": {
     "type": {
       "$ref": "Favourite.Type",
       "$ref": "Favourite.Type",
       "required": true
       "required": true
    },
    "path": {
      "type": "string"
     },
     },
     "window": {
     "window": {
      "default": "",
       "type": "string"
       "type": "string"
     },
     },
     "windowparameter": {
     "windowparameter": {
       "type": "string"
       "default": "",
    },
    "thumbnail": {
       "type": "string"
       "type": "string"
     }
     }
   },
   },
   "additionalProperties": false
   "type": "object"
}
}</syntaxhighlight>}}==== Favourite.Fields.Favourite ===='''Extends:'''* ''[[#Item.Fields.Base|Item.Fields.Base]]''{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
</syntaxhighlight>}}
==== Favourite.Fields.Favourite ====
'''Extends:'''
* ''[[#Item.Fields.Base|Item.Fields.Base]]''
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
   "extends": "Item.Fields.Base",
   "extends": "Item.Fields.Base",
  "id": "Favourite.Fields.Favourite",
   "items": {
   "items": {
     "type": "string",
     "enums": [
    "enum": [
       "window",
       "window",
       "windowparameter",
       "windowparameter",
       "thumbnail",
       "thumbnail",
       "path"
       "path"
     ]
     ],
    "type": "string"
   }
   }
}
}</syntaxhighlight>}}==== Favourite.Type ===='''Type:''' ''string''<br />{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
</syntaxhighlight>}}
   "default": "media",
==== Favourite.Type ====
   "enums": [
'''Type:''' ''string''
<br />
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
   "type": "string",
   "enum": [
     "media",
     "media",
     "window",
     "window",
Line 10,385: Line 7,309:
     "androidapp",
     "androidapp",
     "unknown"
     "unknown"
   ]
   ],
}
  "id": "Favourite.Type",
</syntaxhighlight>}}
  "type": "string"
=== Files ===
}</syntaxhighlight>}}=== Files ======= Files.Media ===='''Type:''' ''string''<br />{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
==== Files.Media ====
   "default": "video",
'''Type:''' ''string''
   "enums": [
<br />
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
   "type": "string",
   "enum": [
     "video",
     "video",
     "music",
     "music",
Line 10,401: Line 7,320:
     "files",
     "files",
     "programs"
     "programs"
   ]
   ],
}
  "id": "Files.Media",
</syntaxhighlight>}}
  "type": "string"
=== GUI ===
}</syntaxhighlight>}}=== GUI ======= GUI.Property.Name ===='''Type:''' ''string''<br />{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
==== GUI.Property.Name ====
   "default": "currentwindow",
'''Type:''' ''string''
   "enums": [
<br />
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
   "type": "string",
   "enum": [
     "currentwindow",
     "currentwindow",
     "currentcontrol",
     "currentcontrol",
Line 10,417: Line 7,331:
     "fullscreen",
     "fullscreen",
     "stereoscopicmode"
     "stereoscopicmode"
   ]
   ],
}
  "id": "GUI.Property.Name",
</syntaxhighlight>}}
  "type": "string"
==== GUI.Property.Value ====
}</syntaxhighlight>}}==== GUI.Property.Value ===='''Type:''' ''object''<br />'''Properties:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">* [''object'' currentcontrol]* [''object'' currentwindow]* [''boolean'' fullscreen]* [''object'' skin]* [''[[#GUI.Stereoscopy.Mode|GUI.Stereoscopy.Mode]]'' stereoscopicmode]</div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
'''Type:''' ''object''
   "id": "GUI.Property.Value",
<br />
'''Properties:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
* [''object'' currentwindow]
* [''object'' currentcontrol]
* [''object'' skin]
* [''boolean'' fullscreen]
* [''[[#GUI.Stereoscopy.Mode|GUI.Stereoscopy.Mode]]'' stereoscopicmode]
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
   "type": "object",
   "properties": {
   "properties": {
    "currentcontrol": {
      "properties": {
        "label": {
          "required": true,
          "type": "string"
        }
      },
      "type": "object"
    },
     "currentwindow": {
     "currentwindow": {
      "type": "object",
       "properties": {
       "properties": {
         "id": {
         "id": {
           "type": "integer",
           "required": true,
           "required": true
           "type": "integer"
         },
         },
         "label": {
         "label": {
           "type": "string",
           "required": true,
           "required": true
           "type": "string"
         }
         }
       }
       },
      "type": "object"
     },
     },
     "currentcontrol": {
     "fullscreen": {
       "type": "object",
       "default": false,
       "properties": {
       "type": "boolean"
        "label": {
          "type": "string",
          "required": true
        }
      }
     },
     },
     "skin": {
     "skin": {
      "type": "object",
       "properties": {
       "properties": {
         "id": {
         "id": {
           "type": "string",
           "minLength": 1,
           "required": true,
           "required": true,
           "minLength": 1
           "type": "string"
         },
         },
         "name": {
         "name": {
          "default": "",
           "type": "string"
           "type": "string"
         }
         }
       }
       },
    },
       "type": "object"
    "fullscreen": {
       "type": "boolean"
     },
     },
     "stereoscopicmode": {
     "stereoscopicmode": {
       "$ref": "GUI.Stereoscopy.Mode"
       "$ref": "GUI.Stereoscopy.Mode"
     }
     }
   }
   },
}
  "type": "object"
</syntaxhighlight>}}
}</syntaxhighlight>}}==== GUI.Stereoscopy.Mode ===='''Type:''' ''object''<br />'''Properties:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">* ''string'' label* ''string'' mode</div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
==== GUI.Stereoscopy.Mode ====
   "id": "GUI.Stereoscopy.Mode",
'''Type:''' ''object''
<br />
'''Properties:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
* ''string'' mode
* ''string'' label
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
   "type": "object",
   "properties": {
   "properties": {
    "label": {
      "required": true,
      "type": "string"
    },
     "mode": {
     "mode": {
       "type": "string",
       "enums": [
      "required": true,
      "enum": [
         "off",
         "off",
         "split_vertical",
         "split_vertical",
Line 10,504: Line 7,400:
         "anaglyph_yellow_blue",
         "anaglyph_yellow_blue",
         "monoscopic"
         "monoscopic"
       ]
       ],
    },
      "required": true,
    "label": {
       "type": "string"
       "type": "string",
      "required": true
     }
     }
   }
   },
}
  "type": "object"
</syntaxhighlight>}}
}</syntaxhighlight>}}==== GUI.Window ===='''Type:''' ''string''<br />{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
==== GUI.Window ====
  "default": "addon",
'''Type:''' ''string''
<br />
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
   "enums": [
   "enums": [
     "home",
     "addon",
     "programs",
     "addonbrowser",
     "pictures",
     "addoninformation",
    "addonsettings",
    "appearancesettings",
    "busydialog",
    "busydialognocancel",
    "contentsettings",
    "contextmenu",
    "eventlog",
    "extendedprogressdialog",
    "favourites",
    "filebrowser",
     "filemanager",
     "filemanager",
     "settings",
     "fullscreengame",
    "fullscreeninfo",
    "fullscreenlivetv",
    "fullscreenlivetvinput",
    "fullscreenlivetvpreview",
    "fullscreenradio",
    "fullscreenradioinput",
    "fullscreenradiopreview",
    "fullscreenvideo",
    "gameadvancedsettings",
    "gamecontrollers",
    "gameosd",
    "gamepadinput",
    "games",
    "gamesettings",
    "gamestretchmode",
    "gamevideofilter",
    "gamevideorotation",
    "gamevolume",
    "home",
    "infoprovidersettings",
    "interfacesettings",
    "libexportsettings",
    "locksettings",
    "loginscreen",
    "mediafilter",
    "mediasettings",
    "mediasource",
    "movieinformation",
     "music",
     "music",
     "videos",
     "musicinformation",
     "tvchannels",
     "musicosd",
     "tvrecordings",
     "musicplaylist",
     "tvguide",
     "musicplaylisteditor",
     "tvtimers",
     "networksetup",
     "tvsearch",
     "notification",
     "radiochannels",
     "numericinput",
     "radiorecordings",
     "okdialog",
     "radioguide",
     "osdaudiosettings",
     "radiotimers",
     "osdcmssettings",
     "radiosearch",
     "osdsubtitlesettings",
     "gamecontrollers",
     "osdvideosettings",
    "peripheralsettings",
    "pictureinfo",
    "pictures",
    "playercontrols",
    "playerprocessinfo",
    "playersettings",
    "profiles",
    "profilesettings",
    "programs",
    "progressdialog",
    "pvrchannelguide",
    "pvrchannelmanager",
    "pvrchannelscan",
    "pvrgroupmanager",
    "pvrguidecontrols",
     "pvrguideinfo",
     "pvrguideinfo",
    "pvrrecordinginfo",
    "pvrradiordsinfo",
    "pvrtimersetting",
    "pvrgroupmanager",
    "pvrchannelmanager",
     "pvrguidesearch",
     "pvrguidesearch",
    "pvrchannelscan",
    "pvrupdateprogress",
     "pvrosdchannels",
     "pvrosdchannels",
     "pvrosdguide",
     "pvrosdguide",
     "pvrosdteletext",
     "pvrosdteletext",
     "systeminfo",
     "pvrradiordsinfo",
     "testpattern",
     "pvrrecordinginfo",
    "screencalibration",
    "systemsettings",
    "servicesettings",
     "pvrsettings",
     "pvrsettings",
     "playersettings",
     "pvrtimersetting",
     "mediasettings",
     "pvrupdateprogress",
     "interfacesettings",
     "radiochannels",
     "appearancesettings",
     "radioguide",
     "videoplaylist",
     "radiorecordings",
     "loginscreen",
     "radiosearch",
     "profiles",
     "radiotimerrules",
    "radiotimers",
    "screencalibration",
    "screensaver",
    "seekbar",
    "selectdialog",
    "servicesettings",
    "settings",
    "shutdownmenu",
     "skinsettings",
     "skinsettings",
     "addonbrowser",
     "sliderdialog",
     "yesnodialog",
     "slideshow",
    "progressdialog",
    "virtualkeyboard",
    "volumebar",
    "submenu",
    "favourites",
    "contextmenu",
    "notification",
    "numericinput",
    "gamepadinput",
    "shutdownmenu",
    "playercontrols",
    "playerprocessinfo",
    "seekbar",
    "musicosd",
    "addonsettings",
    "visualisationpresetlist",
    "osdcmssettings",
    "osdvideosettings",
    "osdaudiosettings",
    "audiodspmanager",
    "osdaudiodspsettings",
    "videobookmarks",
    "filebrowser",
    "networksetup",
    "mediasource",
    "profilesettings",
    "locksettings",
    "contentsettings",
    "songinformation",
     "smartplaylisteditor",
     "smartplaylisteditor",
     "smartplaylistrule",
     "smartplaylistrule",
     "busydialog",
     "songinformation",
     "pictureinfo",
     "splash",
     "accesspoints",
     "startup",
     "fullscreeninfo",
     "startwindow",
     "sliderdialog",
     "submenu",
    "addoninformation",
     "subtitlesearch",
     "subtitlesearch",
     "musicplaylist",
     "systeminfo",
     "musicplaylisteditor",
     "systemsettings",
     "teletext",
     "teletext",
    "selectdialog",
    "musicinformation",
    "okdialog",
    "movieinformation",
     "textviewer",
     "textviewer",
     "fullscreenvideo",
     "tvchannels",
     "fullscreenlivetv",
     "tvguide",
     "fullscreenradio",
     "tvrecordings",
    "tvsearch",
    "tvtimerrules",
    "tvtimers",
    "videobookmarks",
    "videomenu",
    "videoosd",
    "videoplaylist",
    "videos",
    "videotimeseek",
    "virtualkeyboard",
     "visualisation",
     "visualisation",
     "slideshow",
     "visualisationpresetlist",
    "volumebar",
     "weather",
     "weather",
     "screensaver",
     "yesnodialog"
    "videoosd",
    "videomenu",
    "videotimeseek",
    "startwindow",
    "startup",
    "peripheralsettings",
    "extendedprogressdialog",
    "mediafilter",
    "addon",
    "eventlog",
    "tvtimerrules",
    "radiotimerrules"
   ],
   ],
   "id": "GUI.Window",
   "id": "GUI.Window",
   "type": "string",
   "type": "string"
  "default": "home"
}</syntaxhighlight>}}=== Global ======= Global.IncrementDecrement ===='''Type:''' ''string''<br />{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
}
   "default": "increment",
</syntaxhighlight>}}
   "enums": [
=== Global ===
==== Global.IncrementDecrement ====
'''Type:''' ''string''
<br />
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
   "type": "string",
   "enum": [
     "increment",
     "increment",
     "decrement"
     "decrement"
   ]
   ],
}
  "id": "Global.IncrementDecrement",
</syntaxhighlight>}}
  "type": "string"
==== Global.String.NotEmpty ====
}</syntaxhighlight>}}==== Global.String.NotEmpty ===='''Type:''' ''string''<br />{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
'''Type:''' ''string''
  "default": "",
<br />
   "id": "Global.String.NotEmpty",
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
   "minLength": 1,
{
  "type": "string"
   "type": "string",
}</syntaxhighlight>}}==== Global.Time ===='''Type:''' ''object''<br />'''Properties:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">* ''integer'' hours* ''integer'' milliseconds* ''integer'' minutes* ''integer'' seconds</div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
   "minLength": 1
  "additionalProperties": false,
}
   "id": "Global.Time",
</syntaxhighlight>}}
==== Global.Time ====
'''Type:''' ''object''
<br />
'''Properties:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
* ''integer'' hours
* ''integer'' minutes
* ''integer'' seconds
* ''integer'' milliseconds
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
   "type": "object",
   "properties": {
   "properties": {
     "hours": {
     "hours": {
       "type": "integer",
       "maximum": 23,
      "minimum": 0,
       "required": true,
       "required": true,
      "type": "integer"
    },
    "milliseconds": {
      "maximum": 999,
       "minimum": 0,
       "minimum": 0,
       "maximum": 23
       "required": true,
      "type": "integer"
     },
     },
     "minutes": {
     "minutes": {
       "type": "integer",
       "maximum": 59,
      "minimum": 0,
       "required": true,
       "required": true,
       "minimum": 0,
       "type": "integer"
      "maximum": 59
     },
     },
     "seconds": {
     "seconds": {
       "type": "integer",
       "maximum": 59,
      "required": true,
       "minimum": 0,
       "minimum": 0,
      "maximum": 59
    },
    "milliseconds": {
      "type": "integer",
       "required": true,
       "required": true,
       "minimum": 0,
       "type": "integer"
      "maximum": 999
     }
     }
   },
   },
   "additionalProperties": false
   "type": "object"
}
}</syntaxhighlight>}}==== Global.Toggle ===='''Type:''' ''mixed''<br />{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
</syntaxhighlight>}}
  "default": null,
==== Global.Toggle ====
  "id": "Global.Toggle",
'''Type:''' ''mixed''
<br />
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
   "type": [
   "type": [
     {
     {
       "type": "boolean",
       "type": "boolean"
      "required": true
     },
     },
     {
     {
       "type": "string",
       "enums": [
      "enum": [
         "toggle"
         "toggle"
       ],
       ],
       "required": true
       "type": "string"
     }
     }
   ]
   ]
}
}</syntaxhighlight>}}==== Global.Weekday ===='''Type:''' ''string''<br />{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
</syntaxhighlight>}}
   "default": "monday",
==== Global.Weekday ====
   "enums": [
'''Type:''' ''string''
<br />
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
   "type": "string",
   "enum": [
     "monday",
     "monday",
     "tuesday",
     "tuesday",
Line 10,734: Line 7,606:
     "saturday",
     "saturday",
     "sunday"
     "sunday"
   ]
   ],
}
  "id": "Global.Weekday",
</syntaxhighlight>}}
  "type": "string"
=== Input ===
}</syntaxhighlight>}}=== Input ======= Input.Action ===='''Type:''' ''string''<br />{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
==== Input.Action ====
  "default": "analogfastforward",
'''Type:''' ''string''
<br />
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
   "enums": [
   "enums": [
     "left",
     "analogfastforward",
     "right",
     "analogmove",
     "up",
     "analogmovexleft",
     "down",
     "analogmovexright",
     "pageup",
     "analogmoveydown",
     "pagedown",
     "analogmoveyup",
     "select",
     "analogrewind",
     "highlight",
     "analogseekback",
     "parentdir",
     "analogseekforward",
     "parentfolder",
     "aspectratio",
    "audiodelay",
    "audiodelayminus",
    "audiodelayplus",
    "audionextlanguage",
    "audiotoggledigital",
     "back",
     "back",
     "menu",
     "backspace",
     "previousmenu",
     "bigstepback",
    "info",
    "pause",
    "stop",
    "skipnext",
    "skipprevious",
    "fullscreen",
    "aspectratio",
    "stepforward",
    "stepback",
     "bigstepforward",
     "bigstepforward",
     "bigstepback",
     "blue",
    "browsesubtitle",
    "channeldown",
    "channelnumberseparator",
    "channelup",
    "chapterorbigstepback",
     "chapterorbigstepforward",
     "chapterorbigstepforward",
     "chapterorbigstepback",
     "close",
     "osd",
     "codecinfo",
     "showsubtitles",
     "contextmenu",
     "nextsubtitle",
     "copy",
    "createbookmark",
    "createepisodebookmark",
    "cursorleft",
    "cursorright",
     "cyclesubtitle",
     "cyclesubtitle",
     "playerdebug",
     "decreasepar",
     "codecinfo",
     "decreaserating",
     "playerprocessinfo",
     "decreasevisrating",
     "nextpicture",
     "delete",
     "previouspicture",
     "doubleclick",
     "zoomout",
     "down",
     "zoomin",
     "enter",
     "playlist",
     "error",
    "queue",
    "zoomnormal",
    "zoomlevel1",
    "zoomlevel2",
    "zoomlevel3",
    "zoomlevel4",
    "zoomlevel5",
    "zoomlevel6",
    "zoomlevel7",
    "zoomlevel8",
    "zoomlevel9",
    "nextcalibration",
    "resetcalibration",
    "analogmove",
    "analogmovex",
    "analogmovey",
    "rotate",
    "rotateccw",
    "close",
    "subtitledelayminus",
    "subtitledelay",
    "subtitledelayplus",
    "audiodelayminus",
    "audiodelay",
    "audiodelayplus",
    "subtitleshiftup",
    "subtitleshiftdown",
    "subtitlealign",
    "audionextlanguage",
    "verticalshiftup",
    "verticalshiftdown",
    "nextresolution",
    "audiotoggledigital",
    "number0",
    "number1",
    "number2",
    "number3",
    "number4",
    "number5",
    "number6",
    "number7",
    "number8",
    "number9",
    "smallstepback",
     "fastforward",
     "fastforward",
     "rewind",
     "filter",
     "play",
     "filterclear",
     "playpause",
     "filtersms2",
     "switchplayer",
     "filtersms3",
     "delete",
     "filtersms4",
     "copy",
     "filtersms5",
     "move",
     "filtersms6",
     "screenshot",
     "filtersms7",
     "rename",
     "filtersms8",
     "togglewatched",
     "filtersms9",
     "scanitem",
     "firstpage",
     "reloadkeymaps",
     "fullscreen",
     "volumeup",
     "green",
     "volumedown",
     "guiprofile",
     "mute",
     "highlight",
     "backspace",
     "increasepar",
     "scrollup",
     "increaserating",
    "scrolldown",
    "analogfastforward",
    "analogrewind",
    "moveitemup",
    "moveitemdown",
    "contextmenu",
    "shift",
    "symbols",
    "cursorleft",
    "cursorright",
    "showtime",
    "analogseekforward",
    "analogseekback",
    "showpreset",
    "nextpreset",
    "previouspreset",
    "lockpreset",
    "randompreset",
     "increasevisrating",
     "increasevisrating",
     "decreasevisrating",
     "info",
    "showvideomenu",
    "enter",
    "increaserating",
    "decreaserating",
    "setrating",
    "togglefullscreen",
    "nextscene",
    "previousscene",
    "nextletter",
    "prevletter",
     "jumpsms2",
     "jumpsms2",
     "jumpsms3",
     "jumpsms3",
Line 10,882: Line 7,683:
     "jumpsms8",
     "jumpsms8",
     "jumpsms9",
     "jumpsms9",
    "filter",
    "filterclear",
    "filtersms2",
    "filtersms3",
    "filtersms4",
    "filtersms5",
    "filtersms6",
    "filtersms7",
    "filtersms8",
    "filtersms9",
    "firstpage",
     "lastpage",
     "lastpage",
     "guiprofile",
     "left",
     "red",
     "leftclick",
    "green",
     "lockpreset",
    "yellow",
     "longclick",
    "blue",
     "longpress",
    "increasepar",
     "menu",
    "decreasepar",
    "volampup",
    "volampdown",
    "volumeamplification",
    "createbookmark",
    "createepisodebookmark",
    "settingsreset",
    "settingslevelchange",
     "stereomode",
     "nextstereomode",
     "previousstereomode",
    "togglestereomode",
    "stereomodetomono",
    "channelup",
    "channeldown",
    "previouschannelgroup",
    "nextchannelgroup",
    "playpvr",
    "playpvrtv",
    "playpvrradio",
    "record",
    "togglecommskip",
    "showtimerrule",
    "leftclick",
     "rightclick",
     "middleclick",
     "middleclick",
    "doubleclick",
    "longclick",
    "wheelup",
    "wheeldown",
     "mousedrag",
     "mousedrag",
    "mousedragend",
     "mousemove",
     "mousemove",
     "tap",
     "move",
     "longpress",
     "moveitemdown",
    "moveitemup",
    "mute",
    "nextcalibration",
    "nextchannelgroup",
    "nextletter",
    "nextpicture",
    "nextpreset",
    "nextresolution",
    "nextscene",
    "nextstereomode",
    "nextsubtitle",
    "noop",
    "number0",
    "number1",
    "number2",
    "number3",
    "number4",
    "number5",
    "number6",
    "number7",
    "number8",
    "number9",
    "osd",
    "pagedown",
    "pageup",
     "pangesture",
     "pangesture",
     "zoomgesture",
     "parentdir",
    "parentfolder",
    "pause",
    "play",
    "playerdebug",
    "playerprocessinfo",
    "playerprogramselect",
    "playerresolutionselect",
    "playlist",
    "playnext",
    "playpause",
    "playpvr",
    "playpvrradio",
    "playpvrtv",
    "previouschannelgroup",
    "previousmenu",
    "previouspicture",
    "previouspreset",
    "previousscene",
    "previousstereomode",
    "prevletter",
    "queue",
    "randompreset",
    "record",
    "red",
    "reloadkeymaps",
    "rename",
    "resetcalibration",
    "rewind",
    "right",
    "rightclick",
    "rotate",
    "rotateccw",
     "rotategesture",
     "rotategesture",
    "scanitem",
    "screenshot",
    "scrolldown",
    "scrollup",
    "select",
    "setrating",
    "settingslevelchange",
    "settingsreset",
    "shift",
    "showpreset",
    "showsubtitles",
    "showtime",
    "showtimerrule",
    "showvideomenu",
    "skipnext",
    "skipprevious",
    "smallstepback",
    "stepback",
    "stepforward",
    "stereomode",
    "stereomodetomono",
    "stop",
    "subtitlealign",
    "subtitledelay",
    "subtitledelayminus",
    "subtitledelayplus",
    "subtitleshiftdown",
    "subtitleshiftup",
    "swipedown",
     "swipeleft",
     "swipeleft",
     "swiperight",
     "swiperight",
     "swipeup",
     "swipeup",
     "swipedown",
     "switchplayer",
     "error",
     "symbols",
     "noop"
     "tap",
   ],
    "togglecommskip",
    "togglefont",
    "togglefullscreen",
    "togglestereomode",
    "togglewatched",
    "up",
    "verticalshiftdown",
    "verticalshiftup",
    "videonextstream",
    "voicerecognizer",
    "volampdown",
    "volampup",
    "volumeamplification",
    "volumedown",
    "volumeup",
    "wheeldown",
    "wheelup",
    "yellow",
    "zoomgesture",
    "zoomin",
    "zoomlevel1",
    "zoomlevel2",
    "zoomlevel3",
    "zoomlevel4",
    "zoomlevel5",
    "zoomlevel6",
    "zoomlevel7",
    "zoomlevel8",
    "zoomlevel9",
    "zoomnormal",
    "zoomout"
   ],
   "id": "Input.Action",
   "id": "Input.Action",
   "type": "string",
   "type": "string"
  "default": "left"
}</syntaxhighlight>}}=== Item ======= Item.Details.Base ===='''Type:''' ''object''<br />'''Properties:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">* ''string'' label</div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
}
   "id": "Item.Details.Base",
</syntaxhighlight>}}
=== Item ===
==== Item.Details.Base ====
'''Type:''' ''object''
<br />
'''Properties:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
* ''string'' label
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
   "type": "object",
   "properties": {
   "properties": {
     "label": {
     "label": {
       "type": "string",
       "required": true,
       "required": true
       "type": "string"
     }
     }
   }
   },
}
  "type": "object"
</syntaxhighlight>}}
}</syntaxhighlight>}}==== Item.Fields.Base ===='''Type:''' ''array''<br />{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
==== Item.Fields.Base ====
   "id": "Item.Fields.Base",
'''Type:''' ''array''
<br />
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
   "type": "array",
  "uniqueItems": true,
   "items": {
   "items": {
     "type": "string"
     "type": "string"
   }
   },
}
  "type": "array",
</syntaxhighlight>}}
  "uniqueItems": true
=== Library ===
}</syntaxhighlight>}}=== Library ======= Library.Details.Genre ===='''Extends:'''* ''[[#Item.Details.Base|Item.Details.Base]]'''''Properties:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">* ''[[#Library.Id|Library.Id]]'' genreid* [''[[#Array.Integer|Array.Integer]]'' sourceid]* [''string'' thumbnail]* [''string'' title]</div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
==== Library.Details.Genre ====
'''Extends:'''
* ''[[#Item.Details.Base|Item.Details.Base]]''
'''Properties:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
* ''[[#Library.Id|Library.Id]]'' genreid
* [''string'' title]
* [''string'' thumbnail]
* [''[[#Array.Integer|Array.Integer]]'' sourceid]
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
   "extends": "Item.Details.Base",
   "extends": "Item.Details.Base",
  "id": "Library.Details.Genre",
   "properties": {
   "properties": {
     "genreid": {
     "genreid": {
Line 10,999: Line 7,849:
       "required": true
       "required": true
     },
     },
     "title": {
     "sourceid": {
       "type": "string"
       "$ref": "Array.Integer",
      "description": "The ids of sources with songs of the genre"
     },
     },
     "thumbnail": {
     "thumbnail": {
      "default": "",
       "type": "string"
       "type": "string"
     },
     },
     "sourceid": {
     "title": {
       "$ref": "Array.Integer",
       "default": "",
       "description": "The ids of sources with songs of the genre"
       "type": "string"
     }
     }
   }
   }
}
}</syntaxhighlight>}}==== Library.Details.Source ===='''Extends:'''* ''[[#Item.Details.Base|Item.Details.Base]]'''''Properties:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">* ''string'' file* [''[[#Array.String|Array.String]]'' paths]* ''[[#Library.Id|Library.Id]]'' sourceid</div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
</syntaxhighlight>}}
==== Library.Details.Source ====
'''Extends:'''
* ''[[#Item.Details.Base|Item.Details.Base]]''
'''Properties:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
* ''[[#Library.Id|Library.Id]]'' sourceid
* ''string'' file
* [''[[#Array.String|Array.String]]'' paths]
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
   "extends": "Item.Details.Base",
   "extends": "Item.Details.Base",
  "id": "Library.Details.Source",
   "properties": {
   "properties": {
    "sourceid": {
      "$ref": "Library.Id",
      "required": true
    },
     "file": {
     "file": {
      "type": "string",
       "description": "The url encoded multipath string combining all paths of the source ",
       "description": "The url encoded multipath string combining all paths of the source ",
       "required": true
       "required": true,
      "type": "string"
     },
     },
     "paths": {
     "paths": {
       "$ref": "Array.String",
       "$ref": "Array.String",
       "description": "The individual paths of the media source"
       "description": "The individual paths of the media source"
    },
    "sourceid": {
      "$ref": "Library.Id",
      "required": true
     }
     }
   }
   }
}
}</syntaxhighlight>}}==== Library.Details.Tag ===='''Extends:'''* ''[[#Item.Details.Base|Item.Details.Base]]'''''Properties:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">* ''[[#Library.Id|Library.Id]]'' tagid* [''string'' title]</div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
</syntaxhighlight>}}
==== Library.Details.Tag ====
'''Extends:'''
* ''[[#Item.Details.Base|Item.Details.Base]]''
'''Properties:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
* ''[[#Library.Id|Library.Id]]'' tagid
* [''string'' title]
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
   "extends": "Item.Details.Base",
   "extends": "Item.Details.Base",
  "id": "Library.Details.Tag",
   "properties": {
   "properties": {
     "tagid": {
     "tagid": {
Line 11,058: Line 7,889:
     },
     },
     "title": {
     "title": {
      "default": "",
       "type": "string"
       "type": "string"
     }
     }
   }
   }
}
}</syntaxhighlight>}}==== Library.Fields.Genre ===='''Extends:'''* ''[[#Item.Fields.Base|Item.Fields.Base]]''{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
</syntaxhighlight>}}
==== Library.Fields.Genre ====
'''Extends:'''
* ''[[#Item.Fields.Base|Item.Fields.Base]]''
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
   "extends": "Item.Fields.Base",
   "extends": "Item.Fields.Base",
  "id": "Library.Fields.Genre",
   "items": {
   "items": {
     "type": "string",
     "enums": [
    "enum": [
       "title",
       "title",
       "thumbnail",
       "thumbnail",
       "sourceid"
       "sourceid"
     ]
     ],
    "type": "string"
   }
   }
}
}</syntaxhighlight>}}==== Library.Fields.Source ===='''Extends:'''* ''[[#Item.Fields.Base|Item.Fields.Base]]''{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
</syntaxhighlight>}}
==== Library.Fields.Source ====
'''Extends:'''
* ''[[#Item.Fields.Base|Item.Fields.Base]]''
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
   "extends": "Item.Fields.Base",
   "extends": "Item.Fields.Base",
  "id": "Library.Fields.Source",
   "items": {
   "items": {
     "type": "string",
     "enums": [
    "enum": [
       "file",
       "file",
       "paths"
       "paths"
     ]
     ],
    "type": "string"
   }
   }
}
}</syntaxhighlight>}}==== Library.Fields.Tag ===='''Extends:'''* ''[[#Item.Fields.Base|Item.Fields.Base]]''{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
</syntaxhighlight>}}
==== Library.Fields.Tag ====
'''Extends:'''
* ''[[#Item.Fields.Base|Item.Fields.Base]]''
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
   "extends": "Item.Fields.Base",
   "extends": "Item.Fields.Base",
  "id": "Library.Fields.Tag",
   "items": {
   "items": {
     "type": "string",
     "enums": [
    "enum": [
       "title"
       "title"
     ]
     ],
    "type": "string"
   }
   }
}
}</syntaxhighlight>}}==== Library.Id ===='''Type:''' ''integer''<br />{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
</syntaxhighlight>}}
==== Library.Id ====
'''Type:''' ''integer''
<br />
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
  "type": "integer",
   "default": -1,
   "default": -1,
   "minimum": 1
  "id": "Library.Id",
}
   "minimum": 1,
</syntaxhighlight>}}
  "type": "integer"
=== List ===
}</syntaxhighlight>}}=== List ======= List.Amount ===='''Type:''' ''integer''<br />{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
==== List.Amount ====
'''Type:''' ''integer''
<br />
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
  "type": "integer",
   "default": -1,
   "default": -1,
   "minimum": 0
  "id": "List.Amount",
}
   "minimum": 0,
</syntaxhighlight>}}
  "type": "integer"
==== List.Fields.All ====
}</syntaxhighlight>}}==== List.Fields.All ===='''Extends:'''* ''[[#Item.Fields.Base|Item.Fields.Base]]''{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
'''Extends:'''
* ''[[#Item.Fields.Base|Item.Fields.Base]]''
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
   "extends": "Item.Fields.Base",
   "extends": "Item.Fields.Base",
  "id": "List.Fields.All",
   "items": {
   "items": {
     "type": "string",
     "enums": [
    "enum": [
       "title",
       "title",
       "artist",
       "artist",
Line 11,221: Line 8,021:
       "displaylyricist",
       "displaylyricist",
       "userrating",
       "userrating",
      "votes",
       "sortartist",
       "sortartist",
       "musicbrainzreleasegroupid",
       "musicbrainzreleasegroupid",
Line 11,235: Line 8,034:
       "samplerate",
       "samplerate",
       "channels"
       "channels"
     ]
     ],
    "type": "string"
   }
   }
}
}</syntaxhighlight>}}==== List.Fields.Files ===='''Extends:'''* ''[[#Item.Fields.Base|Item.Fields.Base]]''{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
</syntaxhighlight>}}
==== List.Fields.Files ====
'''Extends:'''
* ''[[#Item.Fields.Base|Item.Fields.Base]]''
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
   "extends": "Item.Fields.Base",
   "extends": "Item.Fields.Base",
  "id": "List.Fields.Files",
   "items": {
   "items": {
     "type": "string",
     "enums": [
    "enum": [
       "title",
       "title",
       "artist",
       "artist",
Line 11,329: Line 8,123:
       "samplerate",
       "samplerate",
       "channels"
       "channels"
     ]
     ],
    "type": "string"
   }
   }
}
}</syntaxhighlight>}}==== List.Filter.Albums ===='''Type:''' ''mixed''<br />{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
</syntaxhighlight>}}
  "id": "List.Filter.Albums",
==== List.Filter.Albums ====
'''Type:''' ''mixed''
<br />
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
   "type": [
   "type": [
     {
     {
      "type": "object",
       "properties": {
       "properties": {
         "and": {
         "and": {
          "type": "array",
           "items": {
           "items": {
             "$ref": "List.Filter.Albums"
             "$ref": "List.Filter.Albums"
           },
           },
           "minItems": 1,
           "minItems": 1,
           "required": true
           "required": true,
          "type": "array"
         }
         }
       }
       },
      "type": "object"
     },
     },
     {
     {
      "type": "object",
       "properties": {
       "properties": {
         "or": {
         "or": {
          "type": "array",
           "items": {
           "items": {
             "$ref": "List.Filter.Albums"
             "$ref": "List.Filter.Albums"
           },
           },
           "minItems": 1,
           "minItems": 1,
           "required": true
           "required": true,
          "type": "array"
         }
         }
       }
       },
      "type": "object"
     },
     },
     {
     {
Line 11,369: Line 8,159:
     }
     }
   ]
   ]
}
}</syntaxhighlight>}}==== List.Filter.Artists ===='''Type:''' ''mixed''<br />{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
</syntaxhighlight>}}
  "id": "List.Filter.Artists",
==== List.Filter.Artists ====
'''Type:''' ''mixed''
<br />
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
   "type": [
   "type": [
     {
     {
      "type": "object",
       "properties": {
       "properties": {
         "and": {
         "and": {
          "type": "array",
           "items": {
           "items": {
             "$ref": "List.Filter.Artists"
             "$ref": "List.Filter.Artists"
           },
           },
           "minItems": 1,
           "minItems": 1,
           "required": true
           "required": true,
          "type": "array"
         }
         }
       }
       },
      "type": "object"
     },
     },
     {
     {
      "type": "object",
       "properties": {
       "properties": {
         "or": {
         "or": {
          "type": "array",
           "items": {
           "items": {
             "$ref": "List.Filter.Artists"
             "$ref": "List.Filter.Artists"
           },
           },
           "minItems": 1,
           "minItems": 1,
           "required": true
           "required": true,
          "type": "array"
         }
         }
       }
       },
      "type": "object"
     },
     },
     {
     {
Line 11,407: Line 8,192:
     }
     }
   ]
   ]
}
}</syntaxhighlight>}}==== List.Filter.Episodes ===='''Type:''' ''mixed''<br />{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
</syntaxhighlight>}}
  "id": "List.Filter.Episodes",
==== List.Filter.Episodes ====
'''Type:''' ''mixed''
<br />
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
   "type": [
   "type": [
     {
     {
      "type": "object",
       "properties": {
       "properties": {
         "and": {
         "and": {
          "type": "array",
           "items": {
           "items": {
             "$ref": "List.Filter.Episodes"
             "$ref": "List.Filter.Episodes"
           },
           },
           "minItems": 1,
           "minItems": 1,
           "required": true
           "required": true,
          "type": "array"
         }
         }
       }
       },
      "type": "object"
     },
     },
     {
     {
      "type": "object",
       "properties": {
       "properties": {
         "or": {
         "or": {
          "type": "array",
           "items": {
           "items": {
             "$ref": "List.Filter.Episodes"
             "$ref": "List.Filter.Episodes"
           },
           },
           "minItems": 1,
           "minItems": 1,
           "required": true
           "required": true,
          "type": "array"
         }
         }
       }
       },
      "type": "object"
     },
     },
     {
     {
Line 11,445: Line 8,225:
     }
     }
   ]
   ]
}
}</syntaxhighlight>}}==== List.Filter.Fields.Albums ===='''Type:''' ''string''<br />{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
</syntaxhighlight>}}
  "default": "genre",
==== List.Filter.Fields.Albums ====
'''Type:''' ''string''
<br />
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
   "enums": [
   "enums": [
     "genre",
     "genre",
    "source",
     "album",
     "album",
    "disctitle",
    "totaldiscs",
    "isboxset",
     "artist",
     "artist",
     "albumartist",
     "albumartist",
Line 11,474: Line 8,253:
   ],
   ],
   "id": "List.Filter.Fields.Albums",
   "id": "List.Filter.Fields.Albums",
   "type": "string",
   "type": "string"
  "default": "genre"
}</syntaxhighlight>}}==== List.Filter.Fields.Artists ===='''Type:''' ''string''<br />{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
}
  "default": "artist",
</syntaxhighlight>}}
==== List.Filter.Fields.Artists ====
'''Type:''' ''string''
<br />
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
   "enums": [
   "enums": [
     "artist",
     "artist",
    "source",
     "genre",
     "genre",
     "moods",
     "moods",
Line 11,490: Line 8,264:
     "instruments",
     "instruments",
     "biography",
     "biography",
    "artisttype",
    "gender",
    "disambiguation",
     "born",
     "born",
     "bandformed",
     "bandformed",
Line 11,500: Line 8,277:
   ],
   ],
   "id": "List.Filter.Fields.Artists",
   "id": "List.Filter.Fields.Artists",
   "type": "string",
   "type": "string"
  "default": "artist"
}</syntaxhighlight>}}==== List.Filter.Fields.Episodes ===='''Type:''' ''string''<br />{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
}
  "default": "title",
</syntaxhighlight>}}
==== List.Filter.Fields.Episodes ====
'''Type:''' ''string''
<br />
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
   "enums": [
   "enums": [
     "title",
     "title",
     "tvshow",
     "tvshow",
    "originaltitle",
     "plot",
     "plot",
     "votes",
     "votes",
Line 11,547: Line 8,319:
   ],
   ],
   "id": "List.Filter.Fields.Episodes",
   "id": "List.Filter.Fields.Episodes",
   "type": "string",
   "type": "string"
  "default": "title"
}</syntaxhighlight>}}==== List.Filter.Fields.Movies ===='''Type:''' ''string''<br />{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
}
  "default": "title",
</syntaxhighlight>}}
==== List.Filter.Fields.Movies ====
'''Type:''' ''string''
<br />
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
   "enums": [
   "enums": [
     "title",
     "title",
    "originaltitle",
     "plot",
     "plot",
     "plotoutline",
     "plotoutline",
Line 11,596: Line 8,363:
   ],
   ],
   "id": "List.Filter.Fields.Movies",
   "id": "List.Filter.Fields.Movies",
   "type": "string",
   "type": "string"
  "default": "title"
}</syntaxhighlight>}}==== List.Filter.Fields.MusicVideos ===='''Type:''' ''string''<br />{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
}
  "default": "title",
</syntaxhighlight>}}
==== List.Filter.Fields.MusicVideos ====
'''Type:''' ''string''
<br />
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
   "enums": [
   "enums": [
     "title",
     "title",
Line 11,636: Line 8,397:
   ],
   ],
   "id": "List.Filter.Fields.MusicVideos",
   "id": "List.Filter.Fields.MusicVideos",
   "type": "string",
   "type": "string"
  "default": "title"
}</syntaxhighlight>}}==== List.Filter.Fields.Songs ===='''Type:''' ''string''<br />{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
}
  "default": "genre",
</syntaxhighlight>}}
==== List.Filter.Fields.Songs ====
'''Type:''' ''string''
<br />
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
   "enums": [
   "enums": [
     "genre",
     "genre",
    "source",
     "album",
     "album",
    "disctitle",
     "artist",
     "artist",
     "albumartist",
     "albumartist",
Line 11,662: Line 8,419:
     "comment",
     "comment",
     "moods",
     "moods",
    "bpm",
    "samplerate",
    "bitrate",
    "channels",
     "playlist",
     "playlist",
     "virtualfolder"
     "virtualfolder"
   ],
   ],
   "id": "List.Filter.Fields.Songs",
   "id": "List.Filter.Fields.Songs",
   "type": "string",
   "type": "string"
  "default": "genre"
}</syntaxhighlight>}}==== List.Filter.Fields.TVShows ===='''Type:''' ''string''<br />{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
}
  "default": "title",
</syntaxhighlight>}}
==== List.Filter.Fields.TVShows ====
'''Type:''' ''string''
<br />
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
   "enums": [
   "enums": [
     "title",
     "title",
    "originaltitle",
     "plot",
     "plot",
     "status",
     "status",
Line 11,700: Line 8,456:
   ],
   ],
   "id": "List.Filter.Fields.TVShows",
   "id": "List.Filter.Fields.TVShows",
   "type": "string",
   "type": "string"
  "default": "title"
}</syntaxhighlight>}}==== List.Filter.Fields.Textures ===='''Type:''' ''string''<br />{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
}
  "default": "textureid",
</syntaxhighlight>}}
==== List.Filter.Fields.Textures ====
'''Type:''' ''string''
<br />
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
   "enums": [
   "enums": [
     "textureid",
     "textureid",
Line 11,721: Line 8,471:
   ],
   ],
   "id": "List.Filter.Fields.Textures",
   "id": "List.Filter.Fields.Textures",
   "type": "string",
   "type": "string"
  "default": "textureid"
}</syntaxhighlight>}}==== List.Filter.Movies ===='''Type:''' ''mixed''<br />{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
}
  "id": "List.Filter.Movies",
</syntaxhighlight>}}
==== List.Filter.Movies ====
'''Type:''' ''mixed''
<br />
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
   "type": [
   "type": [
     {
     {
      "type": "object",
       "properties": {
       "properties": {
         "and": {
         "and": {
          "type": "array",
           "items": {
           "items": {
             "$ref": "List.Filter.Movies"
             "$ref": "List.Filter.Movies"
           },
           },
           "minItems": 1,
           "minItems": 1,
           "required": true
           "required": true,
          "type": "array"
         }
         }
       }
       },
      "type": "object"
     },
     },
     {
     {
      "type": "object",
       "properties": {
       "properties": {
         "or": {
         "or": {
          "type": "array",
           "items": {
           "items": {
             "$ref": "List.Filter.Movies"
             "$ref": "List.Filter.Movies"
           },
           },
           "minItems": 1,
           "minItems": 1,
           "required": true
           "required": true,
          "type": "array"
         }
         }
       }
       },
      "type": "object"
     },
     },
     {
     {
Line 11,761: Line 8,505:
     }
     }
   ]
   ]
}
}</syntaxhighlight>}}==== List.Filter.MusicVideos ===='''Type:''' ''mixed''<br />{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
</syntaxhighlight>}}
  "id": "List.Filter.MusicVideos",
==== List.Filter.MusicVideos ====
'''Type:''' ''mixed''
<br />
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
   "type": [
   "type": [
     {
     {
      "type": "object",
       "properties": {
       "properties": {
         "and": {
         "and": {
          "type": "array",
           "items": {
           "items": {
             "$ref": "List.Filter.MusicVideos"
             "$ref": "List.Filter.MusicVideos"
           },
           },
           "minItems": 1,
           "minItems": 1,
           "required": true
           "required": true,
          "type": "array"
         }
         }
       }
       },
      "type": "object"
     },
     },
     {
     {
      "type": "object",
       "properties": {
       "properties": {
         "or": {
         "or": {
          "type": "array",
           "items": {
           "items": {
             "$ref": "List.Filter.MusicVideos"
             "$ref": "List.Filter.MusicVideos"
           },
           },
           "minItems": 1,
           "minItems": 1,
           "required": true
           "required": true,
          "type": "array"
         }
         }
       }
       },
      "type": "object"
     },
     },
     {
     {
Line 11,799: Line 8,538:
     }
     }
   ]
   ]
}
}</syntaxhighlight>}}==== List.Filter.Operators ===='''Type:''' ''string''<br />{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
</syntaxhighlight>}}
  "default": "contains",
==== List.Filter.Operators ====
'''Type:''' ''string''
<br />
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
   "enums": [
   "enums": [
     "contains",
     "contains",
Line 11,824: Line 8,558:
   ],
   ],
   "id": "List.Filter.Operators",
   "id": "List.Filter.Operators",
   "type": "string",
   "type": "string"
  "default": "contains"
}</syntaxhighlight>}}==== List.Filter.Rule ===='''Type:''' ''object''<br />'''Properties:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">* ''[[#List.Filter.Operators|List.Filter.Operators]]'' operator* ''mixed: string|array'' value</div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
}
   "id": "List.Filter.Rule",
</syntaxhighlight>}}
==== List.Filter.Rule ====
'''Type:''' ''object''
<br />
'''Properties:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
* ''[[#List.Filter.Operators|List.Filter.Operators]]'' operator
* ''mixed: string|array'' value
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
   "type": "object",
   "properties": {
   "properties": {
     "operator": {
     "operator": {
Line 11,845: Line 8,567:
     },
     },
     "value": {
     "value": {
      "required": true,
       "type": [
       "type": [
         {
         {
           "type": "string",
           "type": "string"
          "required": true
         },
         },
         {
         {
          "type": "array",
           "items": {
           "items": {
             "type": "string"
             "type": "string"
           },
           },
           "required": true
           "type": "array"
         }
         }
       ],
       ]
      "required": true
     }
     }
   }
   },
}
  "type": "object"
</syntaxhighlight>}}
}</syntaxhighlight>}}==== List.Filter.Rule.Albums ===='''Extends:'''* ''[[#List.Filter.Rule|List.Filter.Rule]]'''''Properties:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">* ''[[#List.Filter.Fields.Albums|List.Filter.Fields.Albums]]'' field</div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
==== List.Filter.Rule.Albums ====
'''Extends:'''
* ''[[#List.Filter.Rule|List.Filter.Rule]]''
'''Properties:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
* ''[[#List.Filter.Fields.Albums|List.Filter.Fields.Albums]]'' field
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
   "extends": "List.Filter.Rule",
   "extends": "List.Filter.Rule",
  "id": "List.Filter.Rule.Albums",
   "properties": {
   "properties": {
     "field": {
     "field": {
Line 11,879: Line 8,591:
     }
     }
   }
   }
}
}</syntaxhighlight>}}==== List.Filter.Rule.Artists ===='''Extends:'''* ''[[#List.Filter.Rule|List.Filter.Rule]]'''''Properties:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">* ''[[#List.Filter.Fields.Artists|List.Filter.Fields.Artists]]'' field</div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
</syntaxhighlight>}}
==== List.Filter.Rule.Artists ====
'''Extends:'''
* ''[[#List.Filter.Rule|List.Filter.Rule]]''
'''Properties:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
* ''[[#List.Filter.Fields.Artists|List.Filter.Fields.Artists]]'' field
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
   "extends": "List.Filter.Rule",
   "extends": "List.Filter.Rule",
  "id": "List.Filter.Rule.Artists",
   "properties": {
   "properties": {
     "field": {
     "field": {
Line 11,897: Line 8,600:
     }
     }
   }
   }
}
}</syntaxhighlight>}}==== List.Filter.Rule.Episodes ===='''Extends:'''* ''[[#List.Filter.Rule|List.Filter.Rule]]'''''Properties:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">* ''[[#List.Filter.Fields.Episodes|List.Filter.Fields.Episodes]]'' field</div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
</syntaxhighlight>}}
==== List.Filter.Rule.Episodes ====
'''Extends:'''
* ''[[#List.Filter.Rule|List.Filter.Rule]]''
'''Properties:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
* ''[[#List.Filter.Fields.Episodes|List.Filter.Fields.Episodes]]'' field
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
   "extends": "List.Filter.Rule",
   "extends": "List.Filter.Rule",
  "id": "List.Filter.Rule.Episodes",
   "properties": {
   "properties": {
     "field": {
     "field": {
Line 11,915: Line 8,609:
     }
     }
   }
   }
}
}</syntaxhighlight>}}==== List.Filter.Rule.Movies ===='''Extends:'''* ''[[#List.Filter.Rule|List.Filter.Rule]]'''''Properties:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">* ''[[#List.Filter.Fields.Movies|List.Filter.Fields.Movies]]'' field</div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
</syntaxhighlight>}}
==== List.Filter.Rule.Movies ====
'''Extends:'''
* ''[[#List.Filter.Rule|List.Filter.Rule]]''
'''Properties:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
* ''[[#List.Filter.Fields.Movies|List.Filter.Fields.Movies]]'' field
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
   "extends": "List.Filter.Rule",
   "extends": "List.Filter.Rule",
  "id": "List.Filter.Rule.Movies",
   "properties": {
   "properties": {
     "field": {
     "field": {
Line 11,933: Line 8,618:
     }
     }
   }
   }
}
}</syntaxhighlight>}}==== List.Filter.Rule.MusicVideos ===='''Extends:'''* ''[[#List.Filter.Rule|List.Filter.Rule]]'''''Properties:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">* ''[[#List.Filter.Fields.MusicVideos|List.Filter.Fields.MusicVideos]]'' field</div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
</syntaxhighlight>}}
   "extends": "List.Filter.Rule",
==== List.Filter.Rule.MusicVideos ====
  "id": "List.Filter.Rule.MusicVideos",
'''Extends:'''
* ''[[#List.Filter.Rule|List.Filter.Rule]]''
'''Properties:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
* ''[[#List.Filter.Fields.MusicVideos|List.Filter.Fields.MusicVideos]]'' field
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
   "extends": "List.Filter.Rule",
   "properties": {
   "properties": {
     "field": {
     "field": {
Line 11,951: Line 8,627:
     }
     }
   }
   }
}
}</syntaxhighlight>}}==== List.Filter.Rule.Songs ===='''Extends:'''* ''[[#List.Filter.Rule|List.Filter.Rule]]'''''Properties:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">* ''[[#List.Filter.Fields.Songs|List.Filter.Fields.Songs]]'' field</div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
</syntaxhighlight>}}
==== List.Filter.Rule.Songs ====
'''Extends:'''
* ''[[#List.Filter.Rule|List.Filter.Rule]]''
'''Properties:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
* ''[[#List.Filter.Fields.Songs|List.Filter.Fields.Songs]]'' field
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
   "extends": "List.Filter.Rule",
   "extends": "List.Filter.Rule",
  "id": "List.Filter.Rule.Songs",
   "properties": {
   "properties": {
     "field": {
     "field": {
Line 11,969: Line 8,636:
     }
     }
   }
   }
}
}</syntaxhighlight>}}==== List.Filter.Rule.TVShows ===='''Extends:'''* ''[[#List.Filter.Rule|List.Filter.Rule]]'''''Properties:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">* ''[[#List.Filter.Fields.TVShows|List.Filter.Fields.TVShows]]'' field</div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
</syntaxhighlight>}}
==== List.Filter.Rule.TVShows ====
'''Extends:'''
* ''[[#List.Filter.Rule|List.Filter.Rule]]''
'''Properties:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
* ''[[#List.Filter.Fields.TVShows|List.Filter.Fields.TVShows]]'' field
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
   "extends": "List.Filter.Rule",
   "extends": "List.Filter.Rule",
  "id": "List.Filter.Rule.TVShows",
   "properties": {
   "properties": {
     "field": {
     "field": {
Line 11,987: Line 8,645:
     }
     }
   }
   }
}
}</syntaxhighlight>}}==== List.Filter.Rule.Textures ===='''Extends:'''* ''[[#List.Filter.Rule|List.Filter.Rule]]'''''Properties:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">* ''[[#List.Filter.Fields.Textures|List.Filter.Fields.Textures]]'' field</div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
</syntaxhighlight>}}
==== List.Filter.Rule.Textures ====
'''Extends:'''
* ''[[#List.Filter.Rule|List.Filter.Rule]]''
'''Properties:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
* ''[[#List.Filter.Fields.Textures|List.Filter.Fields.Textures]]'' field
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
   "extends": "List.Filter.Rule",
   "extends": "List.Filter.Rule",
  "id": "List.Filter.Rule.Textures",
   "properties": {
   "properties": {
     "field": {
     "field": {
Line 12,005: Line 8,654:
     }
     }
   }
   }
}
}</syntaxhighlight>}}==== List.Filter.Songs ===='''Type:''' ''mixed''<br />{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
</syntaxhighlight>}}
  "id": "List.Filter.Songs",
==== List.Filter.Songs ====
'''Type:''' ''mixed''
<br />
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
   "type": [
   "type": [
     {
     {
      "type": "object",
       "properties": {
       "properties": {
         "and": {
         "and": {
          "type": "array",
           "items": {
           "items": {
             "$ref": "List.Filter.Songs"
             "$ref": "List.Filter.Songs"
           },
           },
           "minItems": 1,
           "minItems": 1,
           "required": true
           "required": true,
          "type": "array"
         }
         }
       }
       },
      "type": "object"
     },
     },
     {
     {
      "type": "object",
       "properties": {
       "properties": {
         "or": {
         "or": {
          "type": "array",
           "items": {
           "items": {
             "$ref": "List.Filter.Songs"
             "$ref": "List.Filter.Songs"
           },
           },
           "minItems": 1,
           "minItems": 1,
           "required": true
           "required": true,
          "type": "array"
         }
         }
       }
       },
      "type": "object"
     },
     },
     {
     {
Line 12,043: Line 8,687:
     }
     }
   ]
   ]
}
}</syntaxhighlight>}}==== List.Filter.TVShows ===='''Type:''' ''mixed''<br />{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
</syntaxhighlight>}}
  "id": "List.Filter.TVShows",
==== List.Filter.TVShows ====
'''Type:''' ''mixed''
<br />
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
   "type": [
   "type": [
     {
     {
      "type": "object",
       "properties": {
       "properties": {
         "and": {
         "and": {
          "type": "array",
           "items": {
           "items": {
             "$ref": "List.Filter.TVShows"
             "$ref": "List.Filter.TVShows"
           },
           },
           "minItems": 1,
           "minItems": 1,
           "required": true
           "required": true,
          "type": "array"
         }
         }
       }
       },
      "type": "object"
     },
     },
     {
     {
      "type": "object",
       "properties": {
       "properties": {
         "or": {
         "or": {
          "type": "array",
           "items": {
           "items": {
             "$ref": "List.Filter.TVShows"
             "$ref": "List.Filter.TVShows"
           },
           },
           "minItems": 1,
           "minItems": 1,
           "required": true
           "required": true,
          "type": "array"
         }
         }
       }
       },
      "type": "object"
     },
     },
     {
     {
Line 12,081: Line 8,720:
     }
     }
   ]
   ]
}
}</syntaxhighlight>}}==== List.Filter.Textures ===='''Type:''' ''mixed''<br />{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
</syntaxhighlight>}}
  "id": "List.Filter.Textures",
==== List.Filter.Textures ====
'''Type:''' ''mixed''
<br />
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
   "type": [
   "type": [
     {
     {
      "type": "object",
       "properties": {
       "properties": {
         "and": {
         "and": {
          "type": "array",
           "items": {
           "items": {
             "$ref": "List.Filter.Textures"
             "$ref": "List.Filter.Textures"
           },
           },
           "minItems": 1,
           "minItems": 1,
           "required": true
           "required": true,
          "type": "array"
         }
         }
       }
       },
      "type": "object"
     },
     },
     {
     {
      "type": "object",
       "properties": {
       "properties": {
         "or": {
         "or": {
          "type": "array",
           "items": {
           "items": {
             "$ref": "List.Filter.Textures"
             "$ref": "List.Filter.Textures"
           },
           },
           "minItems": 1,
           "minItems": 1,
           "required": true
           "required": true,
          "type": "array"
         }
         }
       }
       },
      "type": "object"
     },
     },
     {
     {
Line 12,119: Line 8,753:
     }
     }
   ]
   ]
}
}</syntaxhighlight>}}==== List.Item.All ===='''Extends:'''* ''[[#List.Item.Base|List.Item.Base]]'''''Properties:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">* [''string'' channel]* [''integer'' channelnumber]* [''[[#PVR.Channel.Type|PVR.Channel.Type]]'' channeltype = tv]* [''string'' endtime]* [''boolean'' hidden]* [''boolean'' locked]* [''string'' starttime]</div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
</syntaxhighlight>}}
==== List.Item.All ====
'''Extends:'''
* ''[[#List.Item.Base|List.Item.Base]]''
'''Properties:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
* [''string'' channel]
* [''[[#PVR.Channel.Type|PVR.Channel.Type]]'' channeltype]
* [''boolean'' hidden]
* [''boolean'' locked]
* [''integer'' channelnumber]
* [''string'' starttime]
* [''string'' endtime]
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
   "extends": "List.Item.Base",
   "extends": "List.Item.Base",
  "id": "List.Item.All",
   "properties": {
   "properties": {
     "channel": {
     "channel": {
      "default": "",
       "type": "string"
       "type": "string"
    },
    "channelnumber": {
      "default": 0,
      "type": "integer"
     },
     },
     "channeltype": {
     "channeltype": {
       "$ref": "PVR.Channel.Type"
       "$ref": "PVR.Channel.Type",
      "default": "tv"
    },
    "endtime": {
      "default": "",
      "type": "string"
     },
     },
     "hidden": {
     "hidden": {
      "default": false,
       "type": "boolean"
       "type": "boolean"
     },
     },
     "locked": {
     "locked": {
      "default": false,
       "type": "boolean"
       "type": "boolean"
    },
    "channelnumber": {
      "type": "integer"
     },
     },
     "starttime": {
     "starttime": {
       "type": "string"
       "default": "",
    },
    "endtime": {
       "type": "string"
       "type": "string"
     }
     }
   }
   }
}
}</syntaxhighlight>}}==== List.Item.Base ===='''Extends:'''* ''[[#Video.Details.File|Video.Details.File]]''* ''[[#Audio.Details.Media|Audio.Details.Media]]'''''Properties:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">* [''string'' album]* [''[[#Array.String|Array.String]]'' albumartist]* [''[[#Array.Integer|Array.Integer]]'' albumartistid]* [''[[#Library.Id|Library.Id]]'' albumid = -1]* [''string'' albumlabel]* [''[[#Audio.Album.ReleaseType|Audio.Album.ReleaseType]]'' albumreleasetype = album]* [''integer'' bitrate]* [''integer'' bpm]* [''[[#Video.Cast|Video.Cast]]'' cast]* [''integer'' channels]* [''string'' comment]* [''boolean'' compilation]* [''[[#Audio.Contributors|Audio.Contributors]]'' contributors]* [''[[#Array.String|Array.String]]'' country]* [''string'' description]* [''integer'' disc]* [''string'' disctitle]* [''string'' displaycomposer]* [''string'' displayconductor]* [''string'' displaylyricist]* [''string'' displayorchestra]* [''integer'' duration]* [''string'' dynpath]* [''integer'' episode]* [''string'' episodeguide]* [''string'' firstaired]* [''[[#Library.Id|Library.Id]]'' id = -1]* [''string'' imdbnumber]* [''boolean'' isboxset]* [''string'' lyrics]* [''string'' mediapath]* [''[[#Array.String|Array.String]]'' mood]* [''string'' mpaa]* [''[[#Array.String|Array.String]]'' musicbrainzartistid]* [''string'' musicbrainztrackid]* [''string'' originaldate]* [''string'' originaltitle]* [''string'' plotoutline]* [''string'' premiered]* [''string'' productioncode]* [''string'' releasedate]* [''[[#Audio.Album.ReleaseType|Audio.Album.ReleaseType]]'' releasetype = album]* [''integer'' samplerate]* [''integer'' season]* [''string'' set]* [''[[#Library.Id|Library.Id]]'' setid = -1]* [''[[#Array.String|Array.String]]'' showlink]* [''string'' showtitle]* [''string'' sorttitle]* [''integer'' specialsortepisode]* [''integer'' specialsortseason]* [''[[#Array.String|Array.String]]'' studio]* [''[[#Array.String|Array.String]]'' style]* [''[[#Array.String|Array.String]]'' tag]* [''string'' tagline]* [''[[#Array.String|Array.String]]'' theme]* [''integer'' top250]* [''integer'' totaldiscs]* [''integer'' track]* [''string'' trailer]* [''[[#Library.Id|Library.Id]]'' tvshowid = -1]* [''string'' type = unknown]* [''[[#Media.UniqueID|Media.UniqueID]]'' uniqueid]* [''string'' votes]* [''integer'' watchedepisodes]* [''[[#Array.String|Array.String]]'' writer]</div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
</syntaxhighlight>}}
==== List.Item.Base ====
'''Extends:'''
* ''[[#Video.Details.File|Video.Details.File]]''
* ''[[#Audio.Details.Media|Audio.Details.Media]]''
'''Properties:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
* [''[[#Library.Id|Library.Id]]'' id]
* [''string'' type]
* [''[[#Array.String|Array.String]]'' albumartist]
* [''string'' album]
* [''integer'' track]
* [''integer'' duration]
* [''string'' comment]
* [''string'' lyrics]
* [''string'' musicbrainztrackid]
* [''[[#Array.String|Array.String]]'' musicbrainzartistid]
* [''string'' trailer]
* [''string'' tagline]
* [''string'' plotoutline]
* [''string'' originaltitle]
* [''[[#Array.String|Array.String]]'' writer]
* [''[[#Array.String|Array.String]]'' studio]
* [''string'' mpaa]
* [''[[#Video.Cast|Video.Cast]]'' cast]
* [''[[#Array.String|Array.String]]'' country]
* [''string'' imdbnumber]
* [''string'' premiered]
* [''string'' productioncode]
* [''string'' set]
* [''[[#Array.String|Array.String]]'' showlink]
* [''integer'' top250]
* [''string'' votes]
* [''string'' firstaired]
* [''integer'' season]
* [''integer'' episode]
* [''string'' showtitle]
* [''[[#Library.Id|Library.Id]]'' albumid]
* [''[[#Library.Id|Library.Id]]'' setid]
* [''[[#Library.Id|Library.Id]]'' tvshowid]
* [''integer'' watchedepisodes]
* [''integer'' disc]
* [''[[#Array.String|Array.String]]'' tag]
* [''[[#Array.Integer|Array.Integer]]'' albumartistid]
* [''[[#Media.UniqueID|Media.UniqueID]]'' uniqueid]
* [''string'' episodeguide]
* [''string'' sorttitle]
* [''string'' description]
* [''[[#Array.String|Array.String]]'' theme]
* [''[[#Array.String|Array.String]]'' mood]
* [''[[#Array.String|Array.String]]'' style]
* [''string'' albumlabel]
* [''integer'' specialsortseason]
* [''integer'' specialsortepisode]
* [''boolean'' compilation]
* [''[[#Audio.Album.ReleaseType|Audio.Album.ReleaseType]]'' releasetype]
* [''[[#Audio.Album.ReleaseType|Audio.Album.ReleaseType]]'' albumreleasetype]
* [''[[#Audio.Contributors|Audio.Contributors]]'' contributors]
* [''string'' displaycomposer]
* [''string'' displayconductor]
* [''string'' displayorchestra]
* [''string'' displaylyricist]
* [''string'' mediapath]
* [''string'' dynpath]
* [''boolean'' isboxset]
* [''integer'' totaldiscs]
* [''string'' disctitle]
* [''string'' releasedate]
* [''string'' originaldate]
* [''integer'' bpm]
* [''integer'' bitrate]
* [''integer'' samplerate]
* [''integer'' channels]
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
   "extends": [
   "extends": [
     "Video.Details.File",
     "Video.Details.File",
     "Audio.Details.Media"
     "Audio.Details.Media"
   ],
   ],
  "id": "List.Item.Base",
   "properties": {
   "properties": {
     "id": {
     "album": {
       "$ref": "Library.Id"
       "default": "",
    },
       "type": "string"
    "type": {
       "type": "string",
      "enum": [
        "unknown",
        "movie",
        "episode",
        "musicvideo",
        "song",
        "picture",
        "channel"
      ]
     },
     },
     "albumartist": {
     "albumartist": {
       "$ref": "Array.String"
       "$ref": "Array.String"
     },
     },
     "album": {
     "albumartistid": {
      "$ref": "Array.Integer"
    },
    "albumid": {
      "$ref": "Library.Id",
      "default": -1
    },
    "albumlabel": {
      "default": "",
       "type": "string"
       "type": "string"
     },
     },
     "track": {
     "albumreleasetype": {
      "$ref": "Audio.Album.ReleaseType",
      "default": "album"
    },
    "bitrate": {
      "default": 0,
      "type": "integer"
    },
    "bpm": {
      "default": 0,
       "type": "integer"
       "type": "integer"
     },
     },
     "duration": {
     "cast": {
      "$ref": "Video.Cast"
    },
    "channels": {
      "default": 0,
       "type": "integer"
       "type": "integer"
     },
     },
     "comment": {
     "comment": {
      "default": "",
       "type": "string"
       "type": "string"
     },
     },
     "lyrics": {
     "compilation": {
       "type": "string"
      "default": false,
       "type": "boolean"
     },
     },
     "musicbrainztrackid": {
     "contributors": {
       "type": "string"
       "$ref": "Audio.Contributors"
     },
     },
     "musicbrainzartistid": {
     "country": {
       "$ref": "Array.String"
       "$ref": "Array.String"
     },
     },
     "trailer": {
     "description": {
      "default": "",
       "type": "string"
       "type": "string"
     },
     },
     "tagline": {
     "disc": {
      "default": 0,
      "type": "integer"
    },
    "disctitle": {
      "default": "",
       "type": "string"
       "type": "string"
     },
     },
     "plotoutline": {
     "displaycomposer": {
      "default": "",
      "type": "string"
    },
    "displayconductor": {
      "default": "",
      "type": "string"
    },
    "displaylyricist": {
      "default": "",
       "type": "string"
       "type": "string"
     },
     },
     "originaltitle": {
     "displayorchestra": {
      "default": "",
       "type": "string"
       "type": "string"
     },
     },
     "writer": {
     "duration": {
       "$ref": "Array.String"
       "default": 0,
      "type": "integer"
    },
    "dynpath": {
      "default": "",
      "description": "An experimental property for debug purposes, often same as mediapath but when different gives the actual file playing that should also be in file property",
      "type": "string"
     },
     },
     "studio": {
     "episode": {
       "$ref": "Array.String"
       "default": 0,
      "type": "integer"
     },
     },
     "mpaa": {
     "episodeguide": {
      "default": "",
       "type": "string"
       "type": "string"
     },
     },
     "cast": {
     "firstaired": {
       "$ref": "Video.Cast"
       "default": "",
      "type": "string"
     },
     },
     "country": {
     "id": {
       "$ref": "Array.String"
       "$ref": "Library.Id",
      "default": -1
     },
     },
     "imdbnumber": {
     "imdbnumber": {
      "default": "",
       "type": "string"
       "type": "string"
     },
     },
     "premiered": {
     "isboxset": {
       "type": "string"
      "default": false,
       "type": "boolean"
     },
     },
     "productioncode": {
     "lyrics": {
      "default": "",
       "type": "string"
       "type": "string"
     },
     },
     "set": {
     "mediapath": {
      "default": "",
      "description": "Media source path that identifies the item",
       "type": "string"
       "type": "string"
     },
     },
     "showlink": {
     "mood": {
       "$ref": "Array.String"
       "$ref": "Array.String"
     },
     },
     "top250": {
     "mpaa": {
       "type": "integer"
       "default": "",
    },
    "votes": {
       "type": "string"
       "type": "string"
     },
     },
     "firstaired": {
     "musicbrainzartistid": {
       "type": "string"
       "$ref": "Array.String"
     },
     },
     "season": {
     "musicbrainztrackid": {
       "type": "integer"
      "default": "",
      "type": "string"
    },
    "originaldate": {
      "default": "",
      "type": "string"
    },
    "originaltitle": {
      "default": "",
       "type": "string"
     },
     },
     "episode": {
     "plotoutline": {
       "type": "integer"
      "default": "",
       "type": "string"
     },
     },
     "showtitle": {
     "premiered": {
      "default": "",
       "type": "string"
       "type": "string"
     },
     },
     "albumid": {
     "productioncode": {
       "$ref": "Library.Id"
       "default": "",
      "type": "string"
     },
     },
     "setid": {
     "releasedate": {
       "$ref": "Library.Id"
       "default": "",
      "type": "string"
     },
     },
     "tvshowid": {
     "releasetype": {
       "$ref": "Library.Id"
       "$ref": "Audio.Album.ReleaseType",
      "default": "album"
     },
     },
     "watchedepisodes": {
     "samplerate": {
      "default": 0,
       "type": "integer"
       "type": "integer"
     },
     },
     "disc": {
     "season": {
      "default": 0,
       "type": "integer"
       "type": "integer"
     },
     },
     "tag": {
     "set": {
       "$ref": "Array.String"
       "default": "",
      "type": "string"
     },
     },
     "albumartistid": {
     "setid": {
       "$ref": "Array.Integer"
       "$ref": "Library.Id",
      "default": -1
     },
     },
     "uniqueid": {
     "showlink": {
       "$ref": "Media.UniqueID"
       "$ref": "Array.String"
     },
     },
     "episodeguide": {
     "showtitle": {
      "default": "",
       "type": "string"
       "type": "string"
     },
     },
     "sorttitle": {
     "sorttitle": {
      "default": "",
       "type": "string"
       "type": "string"
     },
     },
     "description": {
     "specialsortepisode": {
       "type": "string"
      "default": 0,
       "type": "integer"
     },
     },
     "theme": {
     "specialsortseason": {
      "default": 0,
      "type": "integer"
    },
    "studio": {
       "$ref": "Array.String"
       "$ref": "Array.String"
     },
     },
     "mood": {
     "style": {
       "$ref": "Array.String"
       "$ref": "Array.String"
     },
     },
     "style": {
     "tag": {
       "$ref": "Array.String"
       "$ref": "Array.String"
     },
     },
     "albumlabel": {
     "tagline": {
      "default": "",
       "type": "string"
       "type": "string"
     },
     },
     "specialsortseason": {
     "theme": {
      "$ref": "Array.String"
    },
    "top250": {
      "default": 0,
       "type": "integer"
       "type": "integer"
     },
     },
     "specialsortepisode": {
     "totaldiscs": {
      "default": 0,
       "type": "integer"
       "type": "integer"
     },
     },
     "compilation": {
     "track": {
       "type": "boolean"
      "default": 0,
       "type": "integer"
     },
     },
     "releasetype": {
     "trailer": {
       "$ref": "Audio.Album.ReleaseType"
       "default": "",
      "type": "string"
     },
     },
     "albumreleasetype": {
     "tvshowid": {
       "$ref": "Audio.Album.ReleaseType"
       "$ref": "Library.Id",
      "default": -1
     },
     },
     "contributors": {
     "type": {
       "$ref": "Audio.Contributors"
       "default": "unknown",
    },
      "enums": [
    "displaycomposer": {
        "unknown",
        "movie",
        "episode",
        "musicvideo",
        "song",
        "picture",
        "channel"
      ],
       "type": "string"
       "type": "string"
     },
     },
     "displayconductor": {
     "uniqueid": {
       "type": "string"
       "$ref": "Media.UniqueID"
     },
     },
     "displayorchestra": {
     "votes": {
      "default": "",
       "type": "string"
       "type": "string"
     },
     },
     "displaylyricist": {
     "watchedepisodes": {
       "type": "string"
      "default": 0,
       "type": "integer"
     },
     },
     "mediapath": {
     "writer": {
       "type": "string",
       "$ref": "Array.String"
      "description": "Media source path that identifies the item"
     }
    },
   }
    "dynpath": {
}</syntaxhighlight>}}==== List.Item.File ===='''Extends:'''* ''[[#List.Item.Base|List.Item.Base]]'''''Properties:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">* ''string'' file* ''string'' filetype* [''string'' lastmodified]* [''string'' mimetype]* [''integer'' size]</div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
      "type": "string",
      "description": "An experimental property for debug purposes, often same as mediapath but when different gives the actual file playing that should also be in file property"
    },
    "isboxset": {
      "type": "boolean"
    },
    "totaldiscs": {
      "type": "integer"
    },
    "disctitle": {
      "type": "string"
    },
    "releasedate": {
      "type": "string"
    },
    "originaldate": {
      "type": "string"
    },
    "bpm": {
      "type": "integer"
    },
    "bitrate": {
      "type": "integer"
    },
    "samplerate": {
      "type": "integer"
    },
    "channels": {
      "type": "integer"
     }
   }
}
</syntaxhighlight>}}
==== List.Item.File ====
'''Extends:'''
* ''[[#List.Item.Base|List.Item.Base]]''
'''Properties:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
* ''string'' file
* ''string'' filetype
* [''integer'' size]
* [''string'' lastmodified]
* [''string'' mimetype]
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
   "extends": "List.Item.Base",
   "extends": "List.Item.Base",
  "id": "List.Item.File",
   "properties": {
   "properties": {
     "file": {
     "file": {
       "type": "string",
       "required": true,
       "required": true
       "type": "string"
     },
     },
     "filetype": {
     "filetype": {
       "type": "string",
       "enums": [
      "enum": [
         "file",
         "file",
         "directory"
         "directory"
       ],
       ],
       "required": true
       "required": true,
    },
       "type": "string"
    "size": {
       "type": "integer",
      "description": "Size of the file in bytes"
     },
     },
     "lastmodified": {
     "lastmodified": {
      "default": "",
       "type": "string"
       "type": "string"
     },
     },
     "mimetype": {
     "mimetype": {
      "default": "",
       "type": "string"
       "type": "string"
    },
    "size": {
      "default": 0,
      "description": "Size of the file in bytes",
      "type": "integer"
     }
     }
   }
   }
}
}</syntaxhighlight>}}==== List.Items.Sources ===='''Type:''' ''array''<br />{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
</syntaxhighlight>}}
   "id": "List.Items.Sources",
==== List.Items.Sources ====
'''Type:''' ''array''
<br />
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
   "type": "array",
   "items": {
   "items": {
     "extends": "Item.Details.Base",
     "extends": "Item.Details.Base",
     "properties": {
     "properties": {
       "file": {
       "file": {
         "type": "string",
         "required": true,
         "required": true
         "type": "string"
       }
       }
     }
     }
   }
   },
}
  "type": "array"
</syntaxhighlight>}}
}</syntaxhighlight>}}==== List.Limits ===='''Type:''' ''object''<br />'''Properties:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">* [''[[#List.Amount|List.Amount]]'' end = -1]* [''integer'' start]</div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
==== List.Limits ====
  "additionalProperties": false,
'''Type:''' ''object''
   "id": "List.Limits",
<br />
'''Properties:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
* [''integer'' start]
* [''[[#List.Amount|List.Amount]]'' end]
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
   "type": "object",
   "properties": {
   "properties": {
    "start": {
      "type": "integer",
      "minimum": 0,
      "default": 0,
      "description": "Index of the first item to return"
    },
     "end": {
     "end": {
       "$ref": "List.Amount",
       "$ref": "List.Amount",
      "default": -1,
       "description": "Index of the last item to return"
       "description": "Index of the last item to return"
     }
    },
    "start": {
      "default": 0,
      "description": "Index of the first item to return",
      "minimum": 0,
      "type": "integer"
     }
   },
   },
   "additionalProperties": false
   "type": "object"
}
}</syntaxhighlight>}}==== List.LimitsReturned ===='''Type:''' ''object''<br />'''Properties:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">* [''[[#List.Amount|List.Amount]]'' end = -1]* [''integer'' start]* ''integer'' total</div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
</syntaxhighlight>}}
  "additionalProperties": false,
==== List.LimitsReturned ====
   "id": "List.LimitsReturned",
'''Type:''' ''object''
<br />
'''Properties:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
* [''integer'' start]
* [''[[#List.Amount|List.Amount]]'' end]
* ''integer'' total
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
   "type": "object",
   "properties": {
   "properties": {
    "end": {
      "$ref": "List.Amount",
      "default": -1
    },
     "start": {
     "start": {
       "type": "integer",
       "default": 0,
       "minimum": 0,
       "minimum": 0,
       "default": 0
       "type": "integer"
    },
    "end": {
      "$ref": "List.Amount"
     },
     },
     "total": {
     "total": {
      "type": "integer",
       "minimum": 0,
       "minimum": 0,
       "required": true
       "required": true,
      "type": "integer"
     }
     }
   },
   },
   "additionalProperties": false
   "type": "object"
}
}</syntaxhighlight>}}==== List.Sort ===='''Type:''' ''object''<br />'''Properties:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">* [''boolean'' ignorearticle]* [''string'' method = none]* [''string'' order = ascending]* [''boolean'' useartistsortname]</div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
</syntaxhighlight>}}
   "id": "List.Sort",
==== List.Sort ====
'''Type:''' ''object''
<br />
'''Properties:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
* [''string'' method = none]
* [''string'' order = ascending]
* [''boolean'' ignorearticle]
* [''boolean'' useartistsortname]
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
   "type": "object",
   "properties": {
   "properties": {
    "ignorearticle": {
      "default": false,
      "type": "boolean"
    },
     "method": {
     "method": {
      "type": "string",
       "default": "none",
       "default": "none",
       "enum": [
       "enums": [
         "none",
         "none",
         "label",
         "label",
Line 12,626: Line 9,185:
         "originaldate",
         "originaldate",
         "bpm"
         "bpm"
       ]
       ],
      "type": "string"
     },
     },
     "order": {
     "order": {
      "type": "string",
       "default": "ascending",
       "default": "ascending",
       "enum": [
       "enums": [
         "ascending",
         "ascending",
         "descending"
         "descending"
       ]
       ],
    },
       "type": "string"
    "ignorearticle": {
       "type": "boolean",
      "default": false
     },
     },
     "useartistsortname": {
     "useartistsortname": {
       "type": "boolean",
       "default": false,
       "default": false
       "type": "boolean"
     }
     }
   }
   },
}
  "type": "object"
</syntaxhighlight>}}
}</syntaxhighlight>}}=== Media ======= Media.Artwork ===='''Type:''' ''object''<br />'''Properties:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">* [''[[#Global.String.NotEmpty|Global.String.NotEmpty]]'' banner]* [''[[#Global.String.NotEmpty|Global.String.NotEmpty]]'' fanart]* [''[[#Global.String.NotEmpty|Global.String.NotEmpty]]'' poster]* [''[[#Global.String.NotEmpty|Global.String.NotEmpty]]'' thumb]</div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
=== Media ===
  "additionalProperties": {
==== Media.Artwork ====
    "$ref": "Global.String.NotEmpty",
'''Type:''' ''object''
    "default": ""
<br />
  },
'''Properties:'''
   "id": "Media.Artwork",
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
* [''[[#Global.String.NotEmpty|Global.String.NotEmpty]]'' thumb]
* [''[[#Global.String.NotEmpty|Global.String.NotEmpty]]'' poster]
* [''[[#Global.String.NotEmpty|Global.String.NotEmpty]]'' banner]
* [''[[#Global.String.NotEmpty|Global.String.NotEmpty]]'' fanart]
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
   "type": "object",
   "properties": {
   "properties": {
     "thumb": {
     "banner": {
       "$ref": "Global.String.NotEmpty"
       "$ref": "Global.String.NotEmpty",
      "default": ""
    },
    "fanart": {
      "$ref": "Global.String.NotEmpty",
      "default": ""
     },
     },
     "poster": {
     "poster": {
       "$ref": "Global.String.NotEmpty"
       "$ref": "Global.String.NotEmpty",
      "default": ""
     },
     },
     "banner": {
     "thumb": {
       "$ref": "Global.String.NotEmpty"
       "$ref": "Global.String.NotEmpty",
    },
       "default": ""
    "fanart": {
       "$ref": "Global.String.NotEmpty"
     }
     }
   },
   },
  "type": "object"
}</syntaxhighlight>}}==== Media.Artwork.Set ===='''Type:''' ''object''<br />'''Properties:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">* [''mixed: null|[[#Global.String.NotEmpty|Global.String.NotEmpty]]'' banner]* [''mixed: null|[[#Global.String.NotEmpty|Global.String.NotEmpty]]'' fanart]* [''mixed: null|[[#Global.String.NotEmpty|Global.String.NotEmpty]]'' poster]* [''mixed: null|[[#Global.String.NotEmpty|Global.String.NotEmpty]]'' thumb]</div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
   "additionalProperties": {
   "additionalProperties": {
     "$ref": "Global.String.NotEmpty"
     "default": null,
  }
    "type": [
}
      {
</syntaxhighlight>}}
        "type": "null"
==== Media.Artwork.Set ====
      },
'''Type:''' ''object''
      {
<br />
        "$ref": "Global.String.NotEmpty"
'''Properties:'''
      }
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
    ]
* [''mixed: [[#Global.String.NotEmpty|Global.String.NotEmpty]]'' thumb]
  },
* [''mixed: [[#Global.String.NotEmpty|Global.String.NotEmpty]]'' poster]
   "id": "Media.Artwork.Set",
* [''mixed: [[#Global.String.NotEmpty|Global.String.NotEmpty]]'' banner]
* [''mixed: [[#Global.String.NotEmpty|Global.String.NotEmpty]]'' fanart]
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
   "type": "object",
   "properties": {
   "properties": {
     "thumb": {
     "banner": {
      "default": "",
       "type": [
       "type": [
        "null",
         {
         {
           "$ref": "Global.String.NotEmpty",
          "type": "null"
          "required": true
        },
        {
           "$ref": "Global.String.NotEmpty"
         }
         }
       ],
       ]
      "default": ""
     },
     },
     "poster": {
     "fanart": {
      "default": "",
       "type": [
       "type": [
        "null",
         {
         {
           "$ref": "Global.String.NotEmpty",
          "type": "null"
          "required": true
        },
        {
           "$ref": "Global.String.NotEmpty"
         }
         }
       ],
       ]
      "default": ""
     },
     },
     "banner": {
     "poster": {
      "default": "",
       "type": [
       "type": [
        "null",
         {
         {
           "$ref": "Global.String.NotEmpty",
          "type": "null"
          "required": true
        },
        {
           "$ref": "Global.String.NotEmpty"
         }
         }
       ],
       ]
      "default": ""
     },
     },
     "fanart": {
     "thumb": {
      "default": "",
       "type": [
       "type": [
        "null",
         {
         {
           "$ref": "Global.String.NotEmpty",
          "type": "null"
          "required": true
        },
        {
           "$ref": "Global.String.NotEmpty"
         }
         }
       ],
       ]
      "default": ""
     }
     }
   },
   },
   "additionalProperties": {
   "type": "object"
    "type": [
}</syntaxhighlight>}}==== Media.Details.Base ===='''Extends:'''* ''[[#Item.Details.Base|Item.Details.Base]]'''''Properties:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">* [''string'' fanart]* [''string'' thumbnail]</div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
      "null",
      {
        "$ref": "Global.String.NotEmpty",
        "required": true
      }
    ]
  }
}
</syntaxhighlight>}}
==== Media.Details.Base ====
'''Extends:'''
* ''[[#Item.Details.Base|Item.Details.Base]]''
'''Properties:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
* [''string'' fanart]
* [''string'' thumbnail]
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
   "extends": "Item.Details.Base",
   "extends": "Item.Details.Base",
  "id": "Media.Details.Base",
   "properties": {
   "properties": {
     "fanart": {
     "fanart": {
      "default": "",
       "type": "string"
       "type": "string"
     },
     },
     "thumbnail": {
     "thumbnail": {
      "default": "",
       "type": "string"
       "type": "string"
     }
     }
   }
   }
}
}</syntaxhighlight>}}==== Media.UniqueID ===='''Type:''' ''object''<br />{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
</syntaxhighlight>}}
   "additionalProperties": {
==== Media.UniqueID ====
     "$ref": "Global.String.NotEmpty",
'''Type:''' ''object''
    "default": ""
<br />
   },
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
  "id": "Media.UniqueID",
{
  "type": "object"
  "type": "object",
}</syntaxhighlight>}}==== Media.UniqueID.Set ===='''Type:''' ''object''<br />{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
   "additionalProperties": {
     "$ref": "Global.String.NotEmpty"
   }
}
</syntaxhighlight>}}
==== Media.UniqueID.Set ====
'''Type:''' ''object''
<br />
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
  "type": "object",
   "additionalProperties": {
   "additionalProperties": {
    "default": null,
     "type": [
     "type": [
      "null",
       {
       {
         "$ref": "Global.String.NotEmpty",
        "type": "null"
        "required": true
      },
      {
         "$ref": "Global.String.NotEmpty"
       }
       }
     ]
     ]
   }
   },
}
  "id": "Media.UniqueID.Set",
</syntaxhighlight>}}
  "type": "object"
=== Notifications ===
}</syntaxhighlight>}}=== Notifications ======= Notifications.Item ===='''Type:''' ''mixed''<br />{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
==== Notifications.Item ====
  "id": "Notifications.Item",
'''Type:''' ''mixed''
<br />
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
   "type": [
   "type": [
     {
     {
      "type": "object",
       "description": "An unknown item does not have any additional information.",
       "description": "An unknown item does not have any additional information.",
       "properties": {
       "properties": {
Line 12,810: Line 9,331:
           "required": true
           "required": true
         }
         }
       }
       },
      "type": "object"
     },
     },
     {
     {
      "type": "object",
       "description": "An item known to the database has an identification.",
       "description": "An item known to the database has an identification.",
       "properties": {
       "properties": {
        "id": {
          "$ref": "Library.Id",
          "required": true
        },
         "type": {
         "type": {
           "$ref": "Notifications.Item.Type",
           "$ref": "Notifications.Item.Type",
          "required": true
        },
        "id": {
          "$ref": "Library.Id",
           "required": true
           "required": true
         }
         }
       }
       },
      "type": "object"
     },
     },
     {
     {
      "type": "object",
       "description": "A movie item has a title and may have a release year.",
       "description": "A movie item has a title and may have a release year.",
       "properties": {
       "properties": {
        "title": {
          "required": true,
          "type": "string"
        },
         "type": {
         "type": {
           "$ref": "Notifications.Item.Type",
           "$ref": "Notifications.Item.Type",
          "required": true
        },
        "title": {
          "type": "string",
           "required": true
           "required": true
         },
         },
         "year": {
         "year": {
          "default": 0,
           "type": "integer"
           "type": "integer"
         }
         }
       }
       },
      "type": "object"
     },
     },
     {
     {
      "type": "object",
       "description": "A tv episode has a title and may have an episode number, season number and the title of the show it belongs to.",
       "description": "A tv episode has a title and may have an episode number, season number and the title of the show it belongs to.",
       "properties": {
       "properties": {
        "type": {
          "$ref": "Notifications.Item.Type",
          "required": true
        },
        "title": {
          "type": "string",
          "required": true
        },
         "episode": {
         "episode": {
          "default": 0,
           "type": "integer"
           "type": "integer"
         },
         },
         "season": {
         "season": {
          "default": 0,
           "type": "integer"
           "type": "integer"
         },
         },
         "showtitle": {
         "showtitle": {
          "default": "",
          "type": "string"
        },
        "title": {
          "required": true,
           "type": "string"
           "type": "string"
        },
        "type": {
          "$ref": "Notifications.Item.Type",
          "required": true
         }
         }
       }
       },
      "type": "object"
     },
     },
     {
     {
      "type": "object",
       "description": "A music video has a title and may have an album and an artist.",
       "description": "A music video has a title and may have an album and an artist.",
       "properties": {
       "properties": {
        "type": {
          "$ref": "Notifications.Item.Type",
          "required": true
        },
        "title": {
          "type": "string",
          "required": true
        },
         "album": {
         "album": {
          "default": "",
           "type": "string"
           "type": "string"
         },
         },
         "artist": {
         "artist": {
          "default": "",
          "type": "string"
        },
        "title": {
          "required": true,
           "type": "string"
           "type": "string"
        },
        "type": {
          "$ref": "Notifications.Item.Type",
          "required": true
         }
         }
       }
       },
      "type": "object"
     },
     },
     {
     {
      "type": "object",
       "description": "A song has a title and may have an album, an artist and a track number.",
       "description": "A song has a title and may have an album, an artist and a track number.",
       "properties": {
       "properties": {
        "type": {
          "$ref": "Notifications.Item.Type",
          "required": true
        },
        "title": {
          "type": "string",
          "required": true
        },
         "album": {
         "album": {
          "default": "",
           "type": "string"
           "type": "string"
         },
         },
         "artist": {
         "artist": {
          "default": "",
          "type": "string"
        },
        "title": {
          "required": true,
           "type": "string"
           "type": "string"
         },
         },
         "track": {
         "track": {
          "default": 0,
           "type": "integer"
           "type": "integer"
        },
        "type": {
          "$ref": "Notifications.Item.Type",
          "required": true
         }
         }
       }
       },
      "type": "object"
     },
     },
     {
     {
      "type": "object",
       "description": "A picture has a file path.",
       "description": "A picture has a file path.",
       "properties": {
       "properties": {
        "file": {
          "required": true,
          "type": "string"
        },
         "type": {
         "type": {
           "$ref": "Notifications.Item.Type",
           "$ref": "Notifications.Item.Type",
          "required": true
        },
        "file": {
          "type": "string",
           "required": true
           "required": true
         }
         }
       }
       },
      "type": "object"
     },
     },
     {
     {
      "type": "object",
       "description": "A PVR channel is either a radio or tv channel and has a title.",
       "description": "A PVR channel is either a radio or tv channel and has a title.",
       "properties": {
       "properties": {
         "type": {
         "channeltype": {
           "$ref": "Notifications.Item.Type",
           "$ref": "PVR.Channel.Type",
           "required": true
           "required": true
         },
         },
Line 12,936: Line 9,466:
         },
         },
         "title": {
         "title": {
           "type": "string",
           "required": true,
           "required": true
           "type": "string"
         },
         },
         "channeltype": {
         "type": {
           "$ref": "PVR.Channel.Type",
           "$ref": "Notifications.Item.Type",
           "required": true
           "required": true
         }
         }
       }
       },
      "type": "object"
     }
     }
   ]
   ]
}
}</syntaxhighlight>}}==== Notifications.Item.Type ===='''Type:''' ''string''<br />{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
</syntaxhighlight>}}
   "default": "unknown",
==== Notifications.Item.Type ====
   "enums": [
'''Type:''' ''string''
<br />
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
   "type": "string",
   "enum": [
     "unknown",
     "unknown",
     "movie",
     "movie",
Line 12,962: Line 9,487:
     "picture",
     "picture",
     "channel"
     "channel"
  ]
}
</syntaxhighlight>}}
=== Optional ===
==== Optional.Boolean ====
'''Type:''' ''mixed''
<br />
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
  "type": [
    "null",
    "boolean"
   ],
   ],
   "default": null
   "id": "Notifications.Item.Type",
}
  "type": "string"
</syntaxhighlight>}}
}</syntaxhighlight>}}=== Optional ======= Optional.Boolean ===='''Type:''' ''mixed''<br />{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
==== Optional.Integer ====
  "default": null,
'''Type:''' ''mixed''
  "id": "Optional.Boolean",
<br />
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
   "type": [
   "type": [
     "null",
     {
     "integer"
      "type": "null"
   ],
    },
  "default": null
     {
}
      "type": "boolean"
</syntaxhighlight>}}
    }
==== Optional.Number ====
   ]
'''Type:''' ''mixed''
}</syntaxhighlight>}}==== Optional.Integer ===='''Type:''' ''mixed''<br />{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
<br />
  "default": null,
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
  "id": "Optional.Integer",
{
   "type": [
   "type": [
     "null",
     {
     "number"
      "type": "null"
   ],
    },
   "default": null
     {
}
      "type": "integer"
</syntaxhighlight>}}
    }
==== Optional.String ====
   ]
'''Type:''' ''mixed''
}</syntaxhighlight>}}==== Optional.Number ===='''Type:''' ''mixed''<br />{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
<br />
  "default": null,
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
   "id": "Optional.Number",
{
  "type": [
    {
      "type": "null"
    },
    {
      "type": "number"
    }
  ]
}</syntaxhighlight>}}==== Optional.String ===='''Type:''' ''mixed''<br />{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
  "default": null,
  "id": "Optional.String",
   "type": [
   "type": [
     "null",
     {
     "string"
      "type": "null"
   ],
    },
  "default": null
     {
}
      "type": "string"
</syntaxhighlight>}}
    }
=== PVR ===
   ]
==== PVR.Channel.Type ====
}</syntaxhighlight>}}=== PVR ======= PVR.Channel.Type ===='''Type:''' ''string''<br />{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
'''Type:''' ''string''
   "default": "tv",
<br />
   "enums": [
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
   "type": "string",
   "enum": [
     "tv",
     "tv",
     "radio"
     "radio"
   ]
   ],
}
  "id": "PVR.Channel.Type",
</syntaxhighlight>}}
  "type": "string"
==== PVR.ChannelGroup.Id ====
}</syntaxhighlight>}}==== PVR.ChannelGroup.Id ===='''Type:''' ''mixed''<br />{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
'''Type:''' ''mixed''
  "default": null,
<br />
  "id": "PVR.ChannelGroup.Id",
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
   "type": [
   "type": [
     {
     {
       "$ref": "Library.Id",
       "$ref": "Library.Id"
      "required": true
     },
     },
     {
     {
       "type": "string",
       "enums": [
      "enum": [
         "alltv",
         "alltv",
         "allradio"
         "allradio"
       ],
       ],
       "required": true
       "type": "string"
     }
     }
   ]
   ]
}
}</syntaxhighlight>}}==== PVR.Details.Broadcast ===='''Extends:'''* ''[[#Item.Details.Base|Item.Details.Base]]'''''Properties:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">* ''[[#Library.Id|Library.Id]]'' broadcastid* [''string'' cast]* [''string'' director]* [''string'' endtime]* [''string'' episodename]* [''integer'' episodenum]* [''integer'' episodepart]* [''string'' firstaired]* [''string'' genre]* [''boolean'' hasrecording]* [''boolean'' hastimer]* [''boolean'' hastimerrule]* [''integer'' imdbnumber]* [''boolean'' isactive]* [''boolean'' isplayable]* [''boolean'' isseries]* [''string'' originaltitle]* [''integer'' parentalrating]* [''string'' plot]* [''string'' plotoutline]* [''integer'' progress]* [''number'' progresspercentage]* [''integer'' rating]* [''string'' recording]* [''integer'' runtime]* [''string'' starttime]* [''string'' thumbnail]* [''string'' title]* [''boolean'' wasactive]* [''string'' writer]* [''integer'' year]</div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
</syntaxhighlight>}}
==== PVR.Details.Broadcast ====
'''Extends:'''
* ''[[#Item.Details.Base|Item.Details.Base]]''
'''Properties:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
* ''[[#Library.Id|Library.Id]]'' broadcastid
* [''string'' title]
* [''string'' plot]
* [''string'' plotoutline]
* [''string'' starttime]
* [''string'' endtime]
* [''integer'' runtime]
* [''integer'' progress]
* [''number'' progresspercentage]
* [''string'' genre]
* [''string'' episodename]
* [''integer'' episodenum]
* [''integer'' episodepart]
* [''string'' firstaired]
* [''boolean'' hastimer]
* [''boolean'' isactive]
* [''integer'' parentalrating]
* [''boolean'' wasactive]
* [''string'' thumbnail]
* [''integer'' rating]
* [''string'' originaltitle]
* [''string'' cast]
* [''string'' director]
* [''string'' writer]
* [''integer'' year]
* [''integer'' imdbnumber]
* [''boolean'' hastimerrule]
* [''boolean'' hasrecording]
* [''string'' recording]
* [''boolean'' isseries]
* [''boolean'' isplayable]
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
   "extends": "Item.Details.Base",
   "extends": "Item.Details.Base",
  "id": "PVR.Details.Broadcast",
   "properties": {
   "properties": {
     "broadcastid": {
     "broadcastid": {
Line 13,093: Line 9,565:
       "required": true
       "required": true
     },
     },
     "title": {
     "cast": {
      "default": "",
       "type": "string"
       "type": "string"
     },
     },
     "plot": {
     "director": {
       "type": "string"
       "default": "",
    },
    "plotoutline": {
      "type": "string"
    },
    "starttime": {
       "type": "string"
       "type": "string"
     },
     },
     "endtime": {
     "endtime": {
       "type": "string"
       "default": "",
    },
    "runtime": {
      "type": "integer"
    },
    "progress": {
      "type": "integer"
    },
    "progresspercentage": {
      "type": "number"
    },
    "genre": {
       "type": "string"
       "type": "string"
     },
     },
     "episodename": {
     "episodename": {
      "default": "",
       "type": "string"
       "type": "string"
     },
     },
     "episodenum": {
     "episodenum": {
      "default": 0,
       "type": "integer"
       "type": "integer"
     },
     },
     "episodepart": {
     "episodepart": {
      "default": 0,
       "type": "integer"
       "type": "integer"
     },
     },
     "firstaired": {
     "firstaired": {
      "default": "",
       "type": "string"
       "type": "string"
     },
     },
     "hastimer": {
     "genre": {
       "type": "boolean"
      "default": "",
       "type": "string"
     },
     },
     "isactive": {
     "hasrecording": {
      "default": false,
      "type": "boolean"
    },
    "hastimer": {
      "default": false,
      "type": "boolean"
    },
    "hastimerrule": {
      "default": false,
       "type": "boolean"
       "type": "boolean"
     },
     },
     "parentalrating": {
     "imdbnumber": {
      "default": 0,
       "type": "integer"
       "type": "integer"
     },
     },
     "wasactive": {
     "isactive": {
      "default": false,
       "type": "boolean"
       "type": "boolean"
     },
     },
     "thumbnail": {
     "isplayable": {
       "type": "string"
      "default": false,
       "type": "boolean"
     },
     },
     "rating": {
     "isseries": {
       "type": "integer"
      "default": false,
       "type": "boolean"
     },
     },
     "originaltitle": {
     "originaltitle": {
      "default": "",
       "type": "string"
       "type": "string"
     },
     },
     "cast": {
     "parentalrating": {
       "type": "string"
      "default": 0,
       "type": "integer"
     },
     },
     "director": {
     "plot": {
      "default": "",
       "type": "string"
       "type": "string"
     },
     },
     "writer": {
     "plotoutline": {
      "default": "",
       "type": "string"
       "type": "string"
     },
     },
     "year": {
     "progress": {
      "default": 0,
       "type": "integer"
       "type": "integer"
     },
     },
     "imdbnumber": {
     "progresspercentage": {
      "default": 0.0,
      "type": "number"
    },
    "rating": {
      "default": 0,
       "type": "integer"
       "type": "integer"
     },
     },
     "hastimerrule": {
     "recording": {
       "type": "boolean"
      "default": "",
       "type": "string"
     },
     },
     "hasrecording": {
     "runtime": {
       "type": "boolean"
      "default": 0,
       "type": "integer"
     },
     },
     "recording": {
     "starttime": {
      "default": "",
       "type": "string"
       "type": "string"
     },
     },
     "isseries": {
     "thumbnail": {
       "type": "boolean"
      "default": "",
       "type": "string"
     },
     },
     "isplayable": {
     "title": {
      "default": "",
      "type": "string"
    },
    "wasactive": {
      "default": false,
       "type": "boolean"
       "type": "boolean"
    },
    "writer": {
      "default": "",
      "type": "string"
    },
    "year": {
      "default": 0,
      "type": "integer"
     }
     }
   }
   }
}
}</syntaxhighlight>}}==== PVR.Details.Channel ===='''Extends:'''* ''[[#Item.Details.Base|Item.Details.Base]]'''''Properties:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">* [''[[#PVR.Details.Broadcast|PVR.Details.Broadcast]]'' broadcastnext]* [''[[#PVR.Details.Broadcast|PVR.Details.Broadcast]]'' broadcastnow]* [''string'' channel]* ''[[#Library.Id|Library.Id]]'' channelid* [''integer'' channelnumber]* [''[[#PVR.Channel.Type|PVR.Channel.Type]]'' channeltype = tv]* [''boolean'' hasarchive]* [''boolean'' hidden]* [''string'' icon]* [''boolean'' isrecording]* [''string'' lastplayed]* [''boolean'' locked]* [''integer'' subchannelnumber]* [''string'' thumbnail]* ''integer'' uniqueid</div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
</syntaxhighlight>}}
==== PVR.Details.Channel ====
'''Extends:'''
* ''[[#Item.Details.Base|Item.Details.Base]]''
'''Properties:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
* ''[[#Library.Id|Library.Id]]'' channelid
* [''string'' channel]
* [''[[#PVR.Channel.Type|PVR.Channel.Type]]'' channeltype]
* [''boolean'' hidden]
* [''boolean'' locked]
* [''string'' thumbnail]
* [''string'' lastplayed]
* [''[[#PVR.Details.Broadcast|PVR.Details.Broadcast]]'' broadcastnow]
* [''[[#PVR.Details.Broadcast|PVR.Details.Broadcast]]'' broadcastnext]
* ''integer'' uniqueid
* [''string'' icon]
* [''integer'' channelnumber]
* [''integer'' subchannelnumber]
* [''boolean'' isrecording]
* [''boolean'' hasarchive]
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
   "extends": "Item.Details.Base",
   "extends": "Item.Details.Base",
  "id": "PVR.Details.Channel",
   "properties": {
   "properties": {
    "broadcastnext": {
      "$ref": "PVR.Details.Broadcast"
    },
    "broadcastnow": {
      "$ref": "PVR.Details.Broadcast"
    },
    "channel": {
      "default": "",
      "type": "string"
    },
     "channelid": {
     "channelid": {
       "$ref": "Library.Id",
       "$ref": "Library.Id",
       "required": true
       "required": true
     },
     },
     "channel": {
     "channelnumber": {
       "type": "string"
      "default": 0,
       "type": "integer"
     },
     },
     "channeltype": {
     "channeltype": {
       "$ref": "PVR.Channel.Type"
       "$ref": "PVR.Channel.Type",
      "default": "tv"
     },
     },
     "hidden": {
     "hasarchive": {
      "default": false,
       "type": "boolean"
       "type": "boolean"
     },
     },
     "locked": {
     "hidden": {
      "default": false,
       "type": "boolean"
       "type": "boolean"
     },
     },
     "thumbnail": {
     "icon": {
      "default": "",
       "type": "string"
       "type": "string"
    },
    "isrecording": {
      "default": false,
      "type": "boolean"
     },
     },
     "lastplayed": {
     "lastplayed": {
      "default": "",
       "type": "string"
       "type": "string"
     },
     },
     "broadcastnow": {
     "locked": {
       "$ref": "PVR.Details.Broadcast"
       "default": false,
      "type": "boolean"
     },
     },
     "broadcastnext": {
     "subchannelnumber": {
       "$ref": "PVR.Details.Broadcast"
       "default": 0,
      "type": "integer"
     },
     },
     "uniqueid": {
     "thumbnail": {
       "type": "integer",
       "default": "",
      "required": true
    },
    "icon": {
       "type": "string"
       "type": "string"
     },
     },
     "channelnumber": {
     "uniqueid": {
      "required": true,
       "type": "integer"
       "type": "integer"
    },
    "subchannelnumber": {
      "type": "integer"
    },
    "isrecording": {
      "type": "boolean"
    },
    "hasarchive": {
      "type": "boolean"
     }
     }
   }
   }
}
}</syntaxhighlight>}}==== PVR.Details.ChannelGroup ===='''Extends:'''* ''[[#Item.Details.Base|Item.Details.Base]]'''''Properties:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">* ''[[#Library.Id|Library.Id]]'' channelgroupid* ''[[#PVR.Channel.Type|PVR.Channel.Type]]'' channeltype</div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
</syntaxhighlight>}}
==== PVR.Details.ChannelGroup ====
'''Extends:'''
* ''[[#Item.Details.Base|Item.Details.Base]]''
'''Properties:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
* ''[[#Library.Id|Library.Id]]'' channelgroupid
* ''[[#PVR.Channel.Type|PVR.Channel.Type]]'' channeltype
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
   "extends": "Item.Details.Base",
   "extends": "Item.Details.Base",
  "id": "PVR.Details.ChannelGroup",
   "properties": {
   "properties": {
     "channelgroupid": {
     "channelgroupid": {
Line 13,282: Line 9,762:
     }
     }
   }
   }
}
}</syntaxhighlight>}}==== PVR.Details.ChannelGroup.Extended ===='''Extends:'''* ''[[#PVR.Details.ChannelGroup|PVR.Details.ChannelGroup]]'''''Properties:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">* [''array'' channels]* ''[[#List.LimitsReturned|List.LimitsReturned]]'' limits</div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
</syntaxhighlight>}}
==== PVR.Details.ChannelGroup.Extended ====
'''Extends:'''
* ''[[#PVR.Details.ChannelGroup|PVR.Details.ChannelGroup]]''
'''Properties:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
* ''[[#List.LimitsReturned|List.LimitsReturned]]'' limits
* [''array'' channels]
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
   "extends": "PVR.Details.ChannelGroup",
   "extends": "PVR.Details.ChannelGroup",
  "id": "PVR.Details.ChannelGroup.Extended",
   "properties": {
   "properties": {
    "channels": {
      "items": {
        "$ref": "PVR.Details.Channel"
      },
      "type": "array"
    },
     "limits": {
     "limits": {
       "$ref": "List.LimitsReturned",
       "$ref": "List.LimitsReturned",
       "required": true
       "required": true
    },
    "channels": {
      "type": "array",
      "items": {
        "$ref": "PVR.Details.Channel"
      }
     }
     }
   }
   }
}
}</syntaxhighlight>}}==== PVR.Details.Recording ===='''Extends:'''* ''[[#Item.Details.Base|Item.Details.Base]]'''''Properties:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">* [''[[#Media.Artwork|Media.Artwork]]'' art]* [''string'' channel]* [''integer'' channeluid]* [''string'' directory]* [''string'' endtime]* [''integer'' epgeventid]* [''integer'' episode]* [''string'' file]* [''string'' genre]* [''string'' icon]* [''boolean'' isdeleted]* [''integer'' lifetime]* [''integer'' playcount]* [''string'' plot]* [''string'' plotoutline]* [''boolean'' radio]* ''[[#Library.Id|Library.Id]]'' recordingid* [''[[#Video.Resume|Video.Resume]]'' resume]* [''integer'' runtime]* [''integer'' season]* [''string'' showtitle]* [''string'' starttime]* [''string'' streamurl]* [''string'' title]</div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
</syntaxhighlight>}}
==== PVR.Details.Recording ====
'''Extends:'''
* ''[[#Item.Details.Base|Item.Details.Base]]''
'''Properties:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
* ''[[#Library.Id|Library.Id]]'' recordingid
* [''string'' title]
* [''string'' plot]
* [''string'' plotoutline]
* [''string'' genre]
* [''integer'' playcount]
* [''[[#Video.Resume|Video.Resume]]'' resume]
* [''string'' channel]
* [''string'' starttime]
* [''string'' endtime]
* [''integer'' runtime]
* [''integer'' lifetime]
* [''string'' icon]
* [''[[#Media.Artwork|Media.Artwork]]'' art]
* [''string'' streamurl]
* [''string'' file]
* [''string'' directory]
* [''boolean'' radio]
* [''boolean'' isdeleted]
* [''integer'' epgeventid]
* [''integer'' channeluid]
* [''integer'' season]
* [''integer'' episode]
* [''string'' showtitle]
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
   "extends": "Item.Details.Base",
   "extends": "Item.Details.Base",
  "id": "PVR.Details.Recording",
   "properties": {
   "properties": {
     "recordingid": {
     "art": {
       "$ref": "Library.Id",
       "$ref": "Media.Artwork"
      "required": true
     },
     },
     "title": {
     "channel": {
      "default": "",
       "type": "string"
       "type": "string"
     },
     },
     "plot": {
     "channeluid": {
       "type": "string"
      "default": 0,
       "type": "integer"
     },
     },
     "plotoutline": {
     "directory": {
      "default": "",
       "type": "string"
       "type": "string"
     },
     },
     "genre": {
     "endtime": {
      "default": "",
       "type": "string"
       "type": "string"
     },
     },
     "playcount": {
     "epgeventid": {
      "default": 0,
       "type": "integer"
       "type": "integer"
     },
     },
     "resume": {
     "episode": {
       "$ref": "Video.Resume"
       "default": 0,
      "type": "integer"
     },
     },
     "channel": {
     "file": {
      "default": "",
       "type": "string"
       "type": "string"
     },
     },
     "starttime": {
     "genre": {
      "default": "",
       "type": "string"
       "type": "string"
     },
     },
     "endtime": {
     "icon": {
      "default": "",
       "type": "string"
       "type": "string"
     },
     },
     "runtime": {
     "isdeleted": {
       "type": "integer"
      "default": false,
       "type": "boolean"
     },
     },
     "lifetime": {
     "lifetime": {
      "default": 0,
       "type": "integer"
       "type": "integer"
     },
     },
     "icon": {
     "playcount": {
       "type": "string"
      "default": 0,
       "type": "integer"
     },
     },
     "art": {
     "plot": {
       "$ref": "Media.Artwork"
       "default": "",
    },
    "streamurl": {
       "type": "string"
       "type": "string"
     },
     },
     "file": {
     "plotoutline": {
       "type": "string"
       "default": "",
    },
    "directory": {
       "type": "string"
       "type": "string"
     },
     },
     "radio": {
     "radio": {
      "default": false,
       "type": "boolean"
       "type": "boolean"
     },
     },
     "isdeleted": {
     "recordingid": {
       "type": "boolean"
       "$ref": "Library.Id",
      "required": true
     },
     },
     "epgeventid": {
     "resume": {
       "type": "integer"
       "$ref": "Video.Resume"
     },
     },
     "channeluid": {
     "runtime": {
      "default": 0,
       "type": "integer"
       "type": "integer"
     },
     },
     "season": {
     "season": {
      "default": 0,
       "type": "integer"
       "type": "integer"
     },
     },
     "episode": {
     "showtitle": {
       "type": "integer"
      "default": "",
      "type": "string"
    },
    "starttime": {
      "default": "",
      "type": "string"
    },
    "streamurl": {
      "default": "",
       "type": "string"
     },
     },
     "showtitle": {
     "title": {
      "default": "",
       "type": "string"
       "type": "string"
     }
     }
   }
   }
}
}</syntaxhighlight>}}==== PVR.Details.Timer ===='''Extends:'''* ''[[#Item.Details.Base|Item.Details.Base]]'''''Properties:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">* [''[[#Library.Id|Library.Id]]'' channelid = -1]* [''string'' directory]* [''boolean'' endanytime]* [''integer'' endmargin]* [''string'' endtime]* [''string'' epgsearchstring]* [''integer'' epguid]* [''string'' file]* [''string'' firstday]* [''boolean'' fulltextepgsearch]* [''boolean'' ismanual]* [''boolean'' isradio]* [''boolean'' isreadonly]* [''boolean'' istimerrule]* [''integer'' lifetime]* [''integer'' maxrecordings]* [''integer'' preventduplicateepisodes]* [''integer'' priority]* [''integer'' recordinggroup]* [''integer'' runtime]* [''boolean'' startanytime]* [''integer'' startmargin]* [''string'' starttime]* [''[[#PVR.TimerState|PVR.TimerState]]'' state = unknown]* [''string'' summary]* ''[[#Library.Id|Library.Id]]'' timerid* [''string'' title]* [''array'' weekdays]</div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
</syntaxhighlight>}}
==== PVR.Details.Timer ====
'''Extends:'''
* ''[[#Item.Details.Base|Item.Details.Base]]''
'''Properties:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
* ''[[#Library.Id|Library.Id]]'' timerid
* [''string'' title]
* [''string'' summary]
* [''[[#Library.Id|Library.Id]]'' channelid]
* [''boolean'' isradio]
* [''boolean'' istimerrule]
* [''boolean'' ismanual]
* [''string'' starttime]
* [''string'' endtime]
* [''integer'' runtime]
* [''integer'' lifetime]
* [''string'' firstday]
* [''array'' weekdays]
* [''integer'' priority]
* [''integer'' startmargin]
* [''integer'' endmargin]
* [''[[#PVR.TimerState|PVR.TimerState]]'' state]
* [''string'' file]
* [''string'' directory]
* [''integer'' preventduplicateepisodes]
* [''boolean'' startanytime]
* [''boolean'' endanytime]
* [''string'' epgsearchstring]
* [''boolean'' fulltextepgsearch]
* [''integer'' recordinggroup]
* [''integer'' maxrecordings]
* [''integer'' epguid]
* [''boolean'' isreadonly]
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
   "extends": "Item.Details.Base",
   "extends": "Item.Details.Base",
  "id": "PVR.Details.Timer",
   "properties": {
   "properties": {
     "timerid": {
     "channelid": {
       "$ref": "Library.Id",
       "$ref": "Library.Id",
       "required": true
       "default": -1
     },
     },
     "title": {
     "directory": {
      "default": "",
       "type": "string"
       "type": "string"
     },
     },
     "summary": {
     "endanytime": {
       "type": "string"
       "default": false,
    },
    "channelid": {
      "$ref": "Library.Id"
    },
    "isradio": {
       "type": "boolean"
       "type": "boolean"
     },
     },
     "istimerrule": {
     "endmargin": {
       "type": "boolean"
       "default": 0,
    },
       "type": "integer"
    "ismanual": {
      "type": "boolean"
    },
    "starttime": {
       "type": "string"
     },
     },
     "endtime": {
     "endtime": {
      "default": "",
       "type": "string"
       "type": "string"
     },
     },
     "runtime": {
     "epgsearchstring": {
       "type": "integer"
       "default": "",
    },
    "lifetime": {
      "type": "integer"
    },
    "firstday": {
       "type": "string"
       "type": "string"
     },
     },
     "weekdays": {
     "epguid": {
       "type": "array",
       "default": 0,
      "items": {
        "$ref": "Global.Weekday"
      },
      "uniqueItems": true
    },
    "priority": {
      "type": "integer"
    },
    "startmargin": {
      "type": "integer"
    },
    "endmargin": {
       "type": "integer"
       "type": "integer"
    },
    "state": {
      "$ref": "PVR.TimerState"
     },
     },
     "file": {
     "file": {
      "default": "",
       "type": "string"
       "type": "string"
     },
     },
     "directory": {
     "firstday": {
      "default": "",
       "type": "string"
       "type": "string"
     },
     },
     "preventduplicateepisodes": {
     "fulltextepgsearch": {
       "type": "integer"
      "default": false,
       "type": "boolean"
     },
     },
     "startanytime": {
     "ismanual": {
      "default": false,
       "type": "boolean"
       "type": "boolean"
     },
     },
     "endanytime": {
     "isradio": {
      "default": false,
       "type": "boolean"
       "type": "boolean"
     },
     },
     "epgsearchstring": {
     "isreadonly": {
       "type": "string"
      "default": false,
       "type": "boolean"
     },
     },
     "fulltextepgsearch": {
     "istimerrule": {
      "default": false,
       "type": "boolean"
       "type": "boolean"
     },
     },
     "recordinggroup": {
     "lifetime": {
      "default": 0,
       "type": "integer"
       "type": "integer"
     },
     },
     "maxrecordings": {
     "maxrecordings": {
      "default": 0,
      "type": "integer"
    },
    "preventduplicateepisodes": {
      "default": 0,
       "type": "integer"
       "type": "integer"
     },
     },
     "epguid": {
     "priority": {
      "default": 0,
      "type": "integer"
    },
    "recordinggroup": {
      "default": 0,
      "type": "integer"
    },
    "runtime": {
      "default": 0,
       "type": "integer"
       "type": "integer"
     },
     },
     "isreadonly": {
     "startanytime": {
      "default": false,
       "type": "boolean"
       "type": "boolean"
    },
    "startmargin": {
      "default": 0,
      "type": "integer"
    },
    "starttime": {
      "default": "",
      "type": "string"
    },
    "state": {
      "$ref": "PVR.TimerState",
      "default": "unknown"
    },
    "summary": {
      "default": "",
      "type": "string"
    },
    "timerid": {
      "$ref": "Library.Id",
      "required": true
    },
    "title": {
      "default": "",
      "type": "string"
    },
    "weekdays": {
      "items": {
        "$ref": "Global.Weekday"
      },
      "type": "array",
      "uniqueItems": true
     }
     }
   }
   }
}
}</syntaxhighlight>}}==== PVR.Fields.Broadcast ===='''Extends:'''* ''[[#Item.Fields.Base|Item.Fields.Base]]''{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
</syntaxhighlight>}}
==== PVR.Fields.Broadcast ====
'''Extends:'''
* ''[[#Item.Fields.Base|Item.Fields.Base]]''
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
   "extends": "Item.Fields.Base",
   "extends": "Item.Fields.Base",
  "id": "PVR.Fields.Broadcast",
   "items": {
   "items": {
     "type": "string",
     "enums": [
    "enum": [
       "title",
       "title",
       "plot",
       "plot",
Line 13,588: Line 10,031:
       "isseries",
       "isseries",
       "isplayable"
       "isplayable"
     ]
     ],
    "type": "string"
   }
   }
}
}</syntaxhighlight>}}==== PVR.Fields.Channel ===='''Extends:'''* ''[[#Item.Fields.Base|Item.Fields.Base]]''{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
</syntaxhighlight>}}
==== PVR.Fields.Channel ====
'''Extends:'''
* ''[[#Item.Fields.Base|Item.Fields.Base]]''
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
   "extends": "Item.Fields.Base",
   "extends": "Item.Fields.Base",
  "id": "PVR.Fields.Channel",
   "items": {
   "items": {
     "type": "string",
     "enums": [
    "enum": [
       "thumbnail",
       "thumbnail",
       "channeltype",
       "channeltype",
Line 13,615: Line 10,053:
       "isrecording",
       "isrecording",
       "hasarchive"
       "hasarchive"
     ]
     ],
    "type": "string"
   }
   }
}
}</syntaxhighlight>}}==== PVR.Fields.Recording ===='''Extends:'''* ''[[#Item.Fields.Base|Item.Fields.Base]]''{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
</syntaxhighlight>}}
==== PVR.Fields.Recording ====
'''Extends:'''
* ''[[#Item.Fields.Base|Item.Fields.Base]]''
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
   "extends": "Item.Fields.Base",
   "extends": "Item.Fields.Base",
  "id": "PVR.Fields.Recording",
   "items": {
   "items": {
     "type": "string",
     "enums": [
    "enum": [
       "title",
       "title",
       "plot",
       "plot",
Line 13,651: Line 10,084:
       "episode",
       "episode",
       "showtitle"
       "showtitle"
     ]
     ],
    "type": "string"
   }
   }
}
}</syntaxhighlight>}}==== PVR.Fields.Timer ===='''Extends:'''* ''[[#Item.Fields.Base|Item.Fields.Base]]''{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
</syntaxhighlight>}}
==== PVR.Fields.Timer ====
'''Extends:'''
* ''[[#Item.Fields.Base|Item.Fields.Base]]''
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
   "extends": "Item.Fields.Base",
   "extends": "Item.Fields.Base",
  "id": "PVR.Fields.Timer",
   "items": {
   "items": {
     "type": "string",
     "enums": [
    "enum": [
       "title",
       "title",
       "summary",
       "summary",
Line 13,691: Line 10,119:
       "epguid",
       "epguid",
       "isreadonly"
       "isreadonly"
     ]
     ],
    "type": "string"
   }
   }
}
}</syntaxhighlight>}}==== PVR.Property.Name ===='''Type:''' ''string''<br />{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
</syntaxhighlight>}}
   "default": "available",
==== PVR.Property.Name ====
   "enums": [
'''Type:''' ''string''
<br />
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
   "type": "string",
   "enum": [
     "available",
     "available",
     "recording",
     "recording",
     "scanning"
     "scanning"
   ]
   ],
}
  "id": "PVR.Property.Name",
</syntaxhighlight>}}
  "type": "string"
==== PVR.Property.Value ====
}</syntaxhighlight>}}==== PVR.Property.Value ===='''Type:''' ''object''<br />'''Properties:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">* [''boolean'' available]* [''boolean'' recording]* [''boolean'' scanning]</div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
'''Type:''' ''object''
   "id": "PVR.Property.Value",
<br />
'''Properties:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
* [''boolean'' available]
* [''boolean'' recording]
* [''boolean'' scanning]
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
   "type": "object",
   "properties": {
   "properties": {
     "available": {
     "available": {
      "default": false,
       "type": "boolean"
       "type": "boolean"
     },
     },
     "recording": {
     "recording": {
      "default": false,
       "type": "boolean"
       "type": "boolean"
     },
     },
     "scanning": {
     "scanning": {
      "default": false,
       "type": "boolean"
       "type": "boolean"
     }
     }
   }
   },
}
  "type": "object"
</syntaxhighlight>}}
}</syntaxhighlight>}}==== PVR.TimerState ===='''Type:''' ''string''<br />{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
==== PVR.TimerState ====
   "default": "unknown",
'''Type:''' ''string''
   "enums": [
<br />
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
   "type": "string",
   "enum": [
     "unknown",
     "unknown",
     "new",
     "new",
Line 13,751: Line 10,162:
     "error",
     "error",
     "disabled"
     "disabled"
   ]
   ],
}
  "id": "PVR.TimerState",
</syntaxhighlight>}}
  "type": "string"
=== Player ===
}</syntaxhighlight>}}=== Player ======= Player.Audio.Stream ===='''Type:''' ''object''<br />'''Properties:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">* ''integer'' bitrate* ''integer'' channels* ''string'' codec* ''integer'' index* ''boolean'' isdefault* ''boolean'' isimpaired* ''boolean'' isoriginal* ''string'' language* ''string'' name* ''integer'' samplerate</div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
==== Player.Audio.Stream ====
   "id": "Player.Audio.Stream",
'''Type:''' ''object''
<br />
'''Properties:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
* ''integer'' index
* ''string'' name
* ''string'' language
* ''string'' codec
* ''integer'' bitrate
* ''integer'' channels
* ''boolean'' isdefault
* ''boolean'' isoriginal
* ''boolean'' isimpaired
* ''integer'' samplerate
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
   "type": "object",
   "properties": {
   "properties": {
     "index": {
     "bitrate": {
       "type": "integer",
       "required": true,
       "minimum": 0,
       "type": "integer"
      "required": true
     },
     },
     "name": {
     "channels": {
      "type": "string",
       "required": true,
       "required": true
       "type": "integer"
    },
    "language": {
       "type": "string",
      "required": true
     },
     },
     "codec": {
     "codec": {
       "type": "string",
       "required": true,
       "required": true
       "type": "string"
     },
     },
     "bitrate": {
     "index": {
       "type": "integer",
       "minimum": 0,
       "required": true
       "required": true,
    },
       "type": "integer"
    "channels": {
       "type": "integer",
      "required": true
     },
     },
     "isdefault": {
     "isdefault": {
       "type": "boolean",
       "required": true,
       "required": true
       "type": "boolean"
     },
     },
     "isoriginal": {
     "isimpaired": {
       "type": "boolean",
       "required": true,
       "required": true
       "type": "boolean"
     },
     },
     "isimpaired": {
     "isoriginal": {
       "type": "boolean",
      "required": true,
       "required": true
       "type": "boolean"
    },
    "language": {
      "required": true,
      "type": "string"
    },
    "name": {
       "required": true,
      "type": "string"
     },
     },
     "samplerate": {
     "samplerate": {
       "type": "integer",
       "required": true,
       "required": true
       "type": "integer"
     }
     }
   }
   },
}
  "type": "object"
</syntaxhighlight>}}
}</syntaxhighlight>}}==== Player.CustomViewMode ===='''Type:''' ''object''<br />'''Properties:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">* [''mixed: string|[[#Optional.Boolean|Optional.Boolean]]'' nonlinearstretch]* [''mixed: string|[[#Optional.Number|Optional.Number]]'' pixelratio]* [''mixed: string|[[#Optional.Number|Optional.Number]]'' verticalshift]* [''mixed: string|[[#Optional.Number|Optional.Number]]'' zoom]</div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
==== Player.CustomViewMode ====
   "id": "Player.CustomViewMode",
'''Type:''' ''object''
<br />
'''Properties:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
* [''mixed: string|[[#Optional.Number|Optional.Number]]'' zoom]
* [''mixed: string|[[#Optional.Number|Optional.Number]]'' pixelratio]
* [''mixed: string|[[#Optional.Number|Optional.Number]]'' verticalshift]
* [''mixed: string|[[#Optional.Boolean|Optional.Boolean]]'' nonlinearstretch]
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
   "type": "object",
  "required": true,
   "properties": {
   "properties": {
     "zoom": {
     "nonlinearstretch": {
      "default": null,
       "type": [
       "type": [
         {
         {
           "type": "string",
           "enums": [
          "enum": [
             "increase",
             "increase",
             "decrease"
             "decrease"
           ],
           ],
           "required": true
           "type": "string"
         },
         },
         {
         {
           "$ref": "Optional.Number",
           "$ref": "Optional.Boolean",
          "minimum": 0.5,
           "description": "Flag to enable nonlinear stretch"
          "maximum": 2.0,
           "description": "Zoom where 1.0 means 100%",
          "required": true
         }
         }
       ]
       ]
     },
     },
     "pixelratio": {
     "pixelratio": {
      "default": null,
       "type": [
       "type": [
         {
         {
           "type": "string",
           "enums": [
          "enum": [
             "increase",
             "increase",
             "decrease"
             "decrease"
           ],
           ],
           "required": true
           "type": "string"
         },
         },
         {
         {
           "$ref": "Optional.Number",
           "$ref": "Optional.Number",
          "minimum": 0.5,
           "description": "Pixel aspect ratio where 1.0 means square pixel"
          "maximum": 2.0,
           "description": "Pixel aspect ratio where 1.0 means square pixel",
          "required": true
         }
         }
       ]
       ]
     },
     },
     "verticalshift": {
     "verticalshift": {
      "default": null,
       "type": [
       "type": [
         {
         {
           "type": "string",
           "enums": [
          "enum": [
             "increase",
             "increase",
             "decrease"
             "decrease"
           ],
           ],
           "required": true
           "type": "string"
         },
         },
         {
         {
           "$ref": "Optional.Number",
           "$ref": "Optional.Number",
          "minimum": -2.0,
           "description": "Vertical shift 1.0 means shift to bottom"
          "maximum": 2.0,
           "description": "Vertical shift 1.0 means shift to bottom",
          "required": true
         }
         }
       ]
       ]
     },
     },
     "nonlinearstretch": {
     "zoom": {
      "default": null,
       "type": [
       "type": [
         {
         {
           "type": "string",
           "enums": [
          "enum": [
             "increase",
             "increase",
             "decrease"
             "decrease"
           ],
           ],
           "required": true
           "type": "string"
         },
         },
         {
         {
           "$ref": "Optional.Boolean",
           "$ref": "Optional.Number",
           "description": "Flag to enable nonlinear stretch",
           "description": "Zoom where 1.0 means 100%"
          "required": true
         }
         }
       ]
       ]
     }
     }
   }
   },
}
  "required": true,
</syntaxhighlight>}}
  "type": "object"
==== Player.Id ====
}</syntaxhighlight>}}==== Player.Id ===='''Type:''' ''integer''<br />{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
'''Type:''' ''integer''
  "default": -1,
<br />
   "id": "Player.Id",
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
  "maximum": 2,
{
   "type": "integer",
   "minimum": 0,
   "minimum": 0,
   "maximum": 2,
   "type": "integer"
  "default": -1
}</syntaxhighlight>}}==== Player.Notifications.Data ===='''Type:''' ''object''<br />'''Properties:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">* ''[[#Notifications.Item|Notifications.Item]]'' item* ''[[#Player.Notifications.Player|Player.Notifications.Player]]'' player</div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
}
   "id": "Player.Notifications.Data",
</syntaxhighlight>}}
==== Player.Notifications.Data ====
'''Type:''' ''object''
<br />
'''Properties:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
* ''[[#Notifications.Item|Notifications.Item]]'' item
* ''[[#Player.Notifications.Player|Player.Notifications.Player]]'' player
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
   "type": "object",
   "properties": {
   "properties": {
     "item": {
     "item": {
Line 13,942: Line 10,298:
       "required": true
       "required": true
     }
     }
   }
   },
}
  "type": "object"
</syntaxhighlight>}}
}</syntaxhighlight>}}==== Player.Notifications.Player ===='''Type:''' ''object''<br />'''Properties:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">* ''[[#Player.Id|Player.Id]]'' playerid* [''integer'' speed]</div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
==== Player.Notifications.Player ====
   "id": "Player.Notifications.Player",
'''Type:''' ''object''
<br />
'''Properties:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
* ''[[#Player.Id|Player.Id]]'' playerid
* [''integer'' speed]
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
   "type": "object",
   "properties": {
   "properties": {
     "playerid": {
     "playerid": {
Line 13,962: Line 10,308:
     },
     },
     "speed": {
     "speed": {
      "default": 0,
       "type": "integer"
       "type": "integer"
     }
     }
   }
   },
}
  "type": "object"
</syntaxhighlight>}}
}</syntaxhighlight>}}==== Player.Notifications.Player.Seek ===='''Extends:'''* ''[[#Player.Notifications.Player|Player.Notifications.Player]]'''''Properties:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">* [''[[#Global.Time|Global.Time]]'' seekoffset]* [''[[#Global.Time|Global.Time]]'' time]</div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
==== Player.Notifications.Player.Seek ====
'''Extends:'''
* ''[[#Player.Notifications.Player|Player.Notifications.Player]]''
'''Properties:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
* [''[[#Global.Time|Global.Time]]'' time]
* [''[[#Global.Time|Global.Time]]'' seekoffset]
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
   "extends": "Player.Notifications.Player",
   "extends": "Player.Notifications.Player",
  "id": "Player.Notifications.Player.Seek",
   "properties": {
   "properties": {
     "time": {
     "seekoffset": {
       "$ref": "Global.Time"
       "$ref": "Global.Time"
     },
     },
     "seekoffset": {
     "time": {
       "$ref": "Global.Time"
       "$ref": "Global.Time"
     }
     }
   }
   }
}
}</syntaxhighlight>}}==== Player.Position.Percentage ===='''Type:''' ''number''<br />{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
</syntaxhighlight>}}
  "default": 0.0,
==== Player.Position.Percentage ====
   "id": "Player.Position.Percentage",
'''Type:''' ''number''
  "maximum": 100.0,
<br />
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
   "type": "number",
   "minimum": 0.0,
   "minimum": 0.0,
   "maximum": 100.0
   "type": "number"
}
}</syntaxhighlight>}}==== Player.Position.Time ===='''Type:''' ''object''<br />'''Properties:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">* [''integer'' hours]* [''integer'' milliseconds]* [''integer'' minutes]* [''integer'' seconds]</div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
</syntaxhighlight>}}
==== Player.Position.Time ====
'''Type:''' ''object''
<br />
'''Properties:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
* [''integer'' hours]
* [''integer'' minutes]
* [''integer'' seconds]
* [''integer'' milliseconds]
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
  "type": "object",
   "additionalProperties": false,
   "additionalProperties": false,
  "id": "Player.Position.Time",
   "properties": {
   "properties": {
     "hours": {
     "hours": {
       "type": "integer",
      "default": 0,
      "maximum": 23,
      "minimum": 0,
       "type": "integer"
    },
    "milliseconds": {
      "default": 0,
      "maximum": 999,
       "minimum": 0,
       "minimum": 0,
       "maximum": 23,
       "type": "integer"
      "default": 0
     },
     },
     "minutes": {
     "minutes": {
       "type": "integer",
       "default": 0,
      "maximum": 59,
       "minimum": 0,
       "minimum": 0,
       "maximum": 59,
       "type": "integer"
      "default": 0
     },
     },
     "seconds": {
     "seconds": {
       "type": "integer",
       "default": 0,
      "minimum": 0,
       "maximum": 59,
       "maximum": 59,
      "default": 0
    },
    "milliseconds": {
      "type": "integer",
       "minimum": 0,
       "minimum": 0,
       "maximum": 999,
       "type": "integer"
      "default": 0
     }
     }
   }
   },
}
  "type": "object"
</syntaxhighlight>}}
}</syntaxhighlight>}}==== Player.Property.Name ===='''Type:''' ''string''<br />{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
==== Player.Property.Name ====
   "default": "type",
'''Type:''' ''string''
   "enums": [
<br />
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
   "type": "string",
   "enum": [
     "type",
     "type",
     "partymode",
     "partymode",
Line 14,072: Line 10,388:
     "currentvideostream",
     "currentvideostream",
     "videostreams"
     "videostreams"
   ]
   ],
}
  "id": "Player.Property.Name",
</syntaxhighlight>}}
  "type": "string"
==== Player.Property.Value ====
}</syntaxhighlight>}}==== Player.Property.Value ===='''Type:''' ''object''<br />'''Properties:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">* [''array'' audiostreams]* [''boolean'' canchangespeed]* [''boolean'' canmove]* [''boolean'' canrepeat]* [''boolean'' canrotate]* [''boolean'' canseek]* [''boolean'' canshuffle]* [''boolean'' canzoom]* [''[[#Player.Audio.Stream|Player.Audio.Stream]]'' currentaudiostream]* [''[[#Player.Subtitle|Player.Subtitle]]'' currentsubtitle]* [''[[#Player.Video.Stream|Player.Video.Stream]]'' currentvideostream]* [''boolean'' live]* [''boolean'' partymode]* [''[[#Player.Position.Percentage|Player.Position.Percentage]]'' percentage]* [''[[#Playlist.Id|Playlist.Id]]'' playlistid = -1]* [''[[#Playlist.Position|Playlist.Position]]'' position = -1]* [''[[#Player.Repeat|Player.Repeat]]'' repeat = off]* [''boolean'' shuffled]* [''integer'' speed]* [''boolean'' subtitleenabled]* [''array'' subtitles]* [''[[#Global.Time|Global.Time]]'' time]* [''[[#Global.Time|Global.Time]]'' totaltime]* [''[[#Player.Type|Player.Type]]'' type = video]* [''array'' videostreams]</div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
'''Type:''' ''object''
   "id": "Player.Property.Value",
<br />
'''Properties:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
* [''[[#Player.Type|Player.Type]]'' type]
* [''boolean'' partymode]
* [''integer'' speed]
* [''[[#Global.Time|Global.Time]]'' time]
* [''[[#Player.Position.Percentage|Player.Position.Percentage]]'' percentage]
* [''[[#Global.Time|Global.Time]]'' totaltime]
* [''[[#Playlist.Id|Playlist.Id]]'' playlistid]
* [''[[#Playlist.Position|Playlist.Position]]'' position]
* [''[[#Player.Repeat|Player.Repeat]]'' repeat]
* [''boolean'' shuffled]
* [''boolean'' canseek]
* [''boolean'' canchangespeed]
* [''boolean'' canmove]
* [''boolean'' canzoom]
* [''boolean'' canrotate]
* [''boolean'' canshuffle]
* [''boolean'' canrepeat]
* [''[[#Player.Audio.Stream|Player.Audio.Stream]]'' currentaudiostream]
* [''array'' audiostreams]
* [''[[#Player.Video.Stream|Player.Video.Stream]]'' currentvideostream]
* [''array'' videostreams]
* [''boolean'' subtitleenabled]
* [''[[#Player.Subtitle|Player.Subtitle]]'' currentsubtitle]
* [''array'' subtitles]
* [''boolean'' live]
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
   "type": "object",
   "properties": {
   "properties": {
     "type": {
     "audiostreams": {
       "$ref": "Player.Type"
       "items": {
        "$ref": "Player.Audio.Stream"
      },
      "type": "array"
     },
     },
     "partymode": {
     "canchangespeed": {
      "default": false,
       "type": "boolean"
       "type": "boolean"
     },
     },
     "speed": {
     "canmove": {
       "type": "integer"
      "default": false,
       "type": "boolean"
     },
     },
     "time": {
     "canrepeat": {
       "$ref": "Global.Time"
       "default": false,
      "type": "boolean"
     },
     },
     "percentage": {
     "canrotate": {
       "$ref": "Player.Position.Percentage"
       "default": false,
    },
    "totaltime": {
      "$ref": "Global.Time"
    },
    "playlistid": {
      "$ref": "Playlist.Id"
    },
    "position": {
      "$ref": "Playlist.Position"
    },
    "repeat": {
      "$ref": "Player.Repeat"
    },
    "shuffled": {
       "type": "boolean"
       "type": "boolean"
     },
     },
     "canseek": {
     "canseek": {
      "default": false,
       "type": "boolean"
       "type": "boolean"
     },
     },
     "canchangespeed": {
     "canshuffle": {
       "type": "boolean"
       "default": false,
    },
    "canmove": {
       "type": "boolean"
       "type": "boolean"
     },
     },
     "canzoom": {
     "canzoom": {
       "type": "boolean"
       "default": false,
    },
    "canrotate": {
      "type": "boolean"
    },
    "canshuffle": {
      "type": "boolean"
    },
    "canrepeat": {
       "type": "boolean"
       "type": "boolean"
     },
     },
Line 14,164: Line 10,431:
       "$ref": "Player.Audio.Stream"
       "$ref": "Player.Audio.Stream"
     },
     },
     "audiostreams": {
     "currentsubtitle": {
       "type": "array",
       "$ref": "Player.Subtitle"
      "items": {
        "$ref": "Player.Audio.Stream"
      }
     },
     },
     "currentvideostream": {
     "currentvideostream": {
       "$ref": "Player.Video.Stream"
       "$ref": "Player.Video.Stream"
     },
     },
     "videostreams": {
     "live": {
       "type": "array",
       "default": false,
       "items": {
       "type": "boolean"
        "$ref": "Player.Video.Stream"
      }
     },
     },
     "subtitleenabled": {
     "partymode": {
      "default": false,
       "type": "boolean"
       "type": "boolean"
     },
     },
     "currentsubtitle": {
     "percentage": {
       "$ref": "Player.Subtitle"
       "$ref": "Player.Position.Percentage",
      "default": 0.0
     },
     },
     "subtitles": {
     "playlistid": {
       "type": "array",
       "$ref": "Playlist.Id",
       "items": {
       "default": -1
        "$ref": "Player.Subtitle"
      }
     },
     },
     "live": {
     "position": {
       "type": "boolean"
      "$ref": "Playlist.Position",
      "default": -1
    },
    "repeat": {
      "$ref": "Player.Repeat",
      "default": "off"
    },
    "shuffled": {
      "default": false,
       "type": "boolean"
    },
    "speed": {
      "default": 0,
      "type": "integer"
    },
    "subtitleenabled": {
      "default": false,
      "type": "boolean"
    },
    "subtitles": {
      "items": {
        "$ref": "Player.Subtitle"
      },
      "type": "array"
    },
    "time": {
      "$ref": "Global.Time"
    },
    "totaltime": {
      "$ref": "Global.Time"
    },
    "type": {
      "$ref": "Player.Type",
      "default": "video"
    },
    "videostreams": {
      "items": {
        "$ref": "Player.Video.Stream"
      },
      "type": "array"
     }
     }
   }
   },
}
  "type": "object"
</syntaxhighlight>}}
}</syntaxhighlight>}}==== Player.Repeat ===='''Type:''' ''string''<br />{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
==== Player.Repeat ====
   "default": "off",
'''Type:''' ''string''
   "enums": [
<br />
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
   "type": "string",
   "enum": [
     "off",
     "off",
     "one",
     "one",
     "all"
     "all"
   ]
   ],
}
  "id": "Player.Repeat",
</syntaxhighlight>}}
  "type": "string"
==== Player.Speed ====
}</syntaxhighlight>}}==== Player.Speed ===='''Type:''' ''object''<br />'''Properties:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">* [''integer'' speed]</div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
'''Type:''' ''object''
   "id": "Player.Speed",
<br />
'''Properties:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
* [''integer'' speed]
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
   "type": "object",
  "required": true,
   "properties": {
   "properties": {
     "speed": {
     "speed": {
      "default": 0,
       "type": "integer"
       "type": "integer"
     }
     }
   }
   },
}
  "required": true,
</syntaxhighlight>}}
  "type": "object"
==== Player.Subtitle ====
}</syntaxhighlight>}}==== Player.Subtitle ===='''Type:''' ''object''<br />'''Properties:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">* ''integer'' index* ''boolean'' isdefault* ''boolean'' isforced* ''boolean'' isimpaired* ''string'' language* ''string'' name</div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
'''Type:''' ''object''
   "id": "Player.Subtitle",
<br />
'''Properties:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
* ''integer'' index
* ''string'' name
* ''string'' language
* ''boolean'' isdefault
* ''boolean'' isforced
* ''boolean'' isimpaired
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
   "type": "object",
   "properties": {
   "properties": {
     "index": {
     "index": {
      "type": "integer",
       "minimum": 0,
       "minimum": 0,
       "required": true
       "required": true,
    },
       "type": "integer"
    "name": {
       "type": "string",
      "required": true
    },
    "language": {
      "type": "string",
      "required": true
     },
     },
     "isdefault": {
     "isdefault": {
       "type": "boolean",
       "required": true,
       "required": true
       "type": "boolean"
     },
     },
     "isforced": {
     "isforced": {
       "type": "boolean",
       "required": true,
       "required": true
       "type": "boolean"
     },
     },
     "isimpaired": {
     "isimpaired": {
       "type": "boolean",
      "required": true,
       "required": true
       "type": "boolean"
    },
    "language": {
      "required": true,
      "type": "string"
    },
    "name": {
       "required": true,
      "type": "string"
     }
     }
   }
   },
}
  "type": "object"
</syntaxhighlight>}}
}</syntaxhighlight>}}==== Player.Type ===='''Type:''' ''string''<br />{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
==== Player.Type ====
   "default": "video",
'''Type:''' ''string''
   "enums": [
<br />
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
   "type": "string",
   "enum": [
     "video",
     "video",
     "audio",
     "audio",
     "picture"
     "picture"
   ]
   ],
}
  "id": "Player.Type",
</syntaxhighlight>}}
  "type": "string"
==== Player.Video.Stream ====
}</syntaxhighlight>}}==== Player.Video.Stream ===='''Type:''' ''object''<br />'''Properties:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">* ''string'' codec* ''integer'' height* ''integer'' index* ''string'' language* ''string'' name* ''integer'' width</div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
'''Type:''' ''object''
   "id": "Player.Video.Stream",
<br />
'''Properties:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
* ''integer'' index
* ''string'' name
* ''string'' language
* ''string'' codec
* ''integer'' width
* ''integer'' height
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
   "type": "object",
   "properties": {
   "properties": {
    "codec": {
      "required": true,
      "type": "string"
    },
    "height": {
      "required": true,
      "type": "integer"
    },
     "index": {
     "index": {
      "type": "integer",
       "minimum": 0,
       "minimum": 0,
       "required": true
       "required": true,
    },
       "type": "integer"
    "name": {
       "type": "string",
      "required": true
     },
     },
     "language": {
     "language": {
       "type": "string",
       "required": true,
       "required": true
       "type": "string"
     },
     },
     "codec": {
     "name": {
       "type": "string",
       "required": true,
       "required": true
       "type": "string"
     },
     },
     "width": {
     "width": {
      "type": "integer",
       "required": true,
       "required": true
       "type": "integer"
    },
    "height": {
       "type": "integer",
      "required": true
     }
     }
   }
   },
}
  "type": "object"
</syntaxhighlight>}}
}</syntaxhighlight>}}==== Player.ViewMode ===='''Type:''' ''string''<br />{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
==== Player.ViewMode ====
   "default": "normal",
'''Type:''' ''string''
   "enums": [
<br />
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
   "type": "string",
   "enum": [
     "normal",
     "normal",
     "zoom",
     "zoom",
Line 14,345: Line 10,597:
     "zoom120width",
     "zoom120width",
     "zoom110width"
     "zoom110width"
   ]
   ],
}
  "id": "Player.ViewMode",
</syntaxhighlight>}}
  "type": "string"
=== Playlist ===
}</syntaxhighlight>}}=== Playlist ======= Playlist.Id ===='''Type:''' ''integer''<br />{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
==== Playlist.Id ====
  "default": -1,
'''Type:''' ''integer''
   "id": "Playlist.Id",
<br />
  "maximum": 2,
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
   "type": "integer",
   "minimum": 0,
   "minimum": 0,
   "maximum": 2,
   "type": "integer"
  "default": -1
}</syntaxhighlight>}}==== Playlist.Item ===='''Type:''' ''mixed''<br />{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
}
  "id": "Playlist.Item",
</syntaxhighlight>}}
   "type": [
==== Playlist.Item ====
'''Type:''' ''mixed''
<br />
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
   "type": [
     {
     {
       "type": "object",
       "additionalProperties": false,
       "properties": {
       "properties": {
         "file": {
         "file": {
          "type": "string",
           "description": "Path to a file (not a directory) to be added to the playlist",
           "description": "Path to a file (not a directory) to be added to the playlist",
           "required": true
           "required": true,
          "type": "string"
         }
         }
       },
       },
       "additionalProperties": false
       "type": "object"
     },
     },
     {
     {
       "type": "object",
       "additionalProperties": false,
       "properties": {
       "properties": {
         "directory": {
         "directory": {
          "type": "string",
           "required": true,
           "required": true
           "type": "string"
        },
        "recursive": {
           "type": "boolean",
          "default": false
         },
         },
         "media": {
         "media": {
           "$ref": "Files.Media",
           "$ref": "Files.Media",
           "default": "files"
           "default": "files"
        },
        "recursive": {
          "default": false,
          "type": "boolean"
         }
         }
       },
       },
       "additionalProperties": false
       "type": "object"
     },
     },
     {
     {
       "type": "object",
       "additionalProperties": false,
       "properties": {
       "properties": {
         "movieid": {
         "movieid": {
Line 14,403: Line 10,646:
         }
         }
       },
       },
       "additionalProperties": false
       "type": "object"
     },
     },
     {
     {
       "type": "object",
       "additionalProperties": false,
       "properties": {
       "properties": {
         "episodeid": {
         "episodeid": {
Line 14,413: Line 10,656:
         }
         }
       },
       },
       "additionalProperties": false
       "type": "object"
     },
     },
     {
     {
       "type": "object",
       "additionalProperties": false,
       "properties": {
       "properties": {
         "musicvideoid": {
         "musicvideoid": {
Line 14,423: Line 10,666:
         }
         }
       },
       },
       "additionalProperties": false
       "type": "object"
     },
     },
     {
     {
       "type": "object",
       "additionalProperties": false,
       "properties": {
       "properties": {
         "artistid": {
         "artistid": {
Line 14,433: Line 10,676:
         }
         }
       },
       },
       "additionalProperties": false
       "type": "object"
     },
     },
     {
     {
       "type": "object",
       "additionalProperties": false,
       "properties": {
       "properties": {
         "albumid": {
         "albumid": {
Line 14,443: Line 10,686:
         }
         }
       },
       },
       "additionalProperties": false
       "type": "object"
     },
     },
     {
     {
       "type": "object",
       "additionalProperties": false,
       "properties": {
       "properties": {
         "songid": {
         "songid": {
Line 14,453: Line 10,696:
         }
         }
       },
       },
       "additionalProperties": false
       "type": "object"
     },
     },
     {
     {
       "type": "object",
       "additionalProperties": false,
       "properties": {
       "properties": {
         "genreid": {
         "genreid": {
           "$ref": "Library.Id",
           "$ref": "Library.Id",
          "required": true,
           "description": "Identification of a genre from the AudioLibrary",
           "description": "Identification of a genre from the AudioLibrary"
          "required": true
         }
         }
       },
       },
       "additionalProperties": false
       "type": "object"
     }
     }
   ]
   ]
}
}</syntaxhighlight>}}==== Playlist.Position ===='''Type:''' ''integer''<br />{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
</syntaxhighlight>}}
  "default": -1,
==== Playlist.Position ====
   "id": "Playlist.Position",
'''Type:''' ''integer''
<br />
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
   "type": "integer",
   "minimum": 0,
   "minimum": 0,
   "default": -1
   "type": "integer"
}
}</syntaxhighlight>}}==== Playlist.Property.Name ===='''Type:''' ''string''<br />{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
</syntaxhighlight>}}
   "default": "type",
==== Playlist.Property.Name ====
   "enums": [
'''Type:''' ''string''
<br />
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
   "type": "string",
   "enum": [
     "type",
     "type",
     "size"
     "size"
   ]
   ],
}
  "id": "Playlist.Property.Name",
</syntaxhighlight>}}
  "type": "string"
==== Playlist.Property.Value ====
}</syntaxhighlight>}}==== Playlist.Property.Value ===='''Type:''' ''object''<br />'''Properties:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">* [''integer'' size]* [''[[#Playlist.Type|Playlist.Type]]'' type = unknown]</div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
'''Type:''' ''object''
   "id": "Playlist.Property.Value",
<br />
'''Properties:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
* [''[[#Playlist.Type|Playlist.Type]]'' type]
* [''integer'' size]
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
   "type": "object",
   "properties": {
   "properties": {
    "size": {
      "default": 0,
      "minimum": 0,
      "type": "integer"
    },
     "type": {
     "type": {
       "$ref": "Playlist.Type"
       "$ref": "Playlist.Type",
    },
       "default": "unknown"
    "size": {
       "type": "integer",
      "minimum": 0
     }
     }
   }
   },
}
  "type": "object"
</syntaxhighlight>}}
}</syntaxhighlight>}}==== Playlist.Type ===='''Type:''' ''string''<br />{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
==== Playlist.Type ====
   "default": "unknown",
'''Type:''' ''string''
   "enums": [
<br />
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
   "type": "string",
   "enum": [
     "unknown",
     "unknown",
     "video",
     "video",
Line 14,525: Line 10,745:
     "picture",
     "picture",
     "mixed"
     "mixed"
   ]
   ],
}
  "id": "Playlist.Type",
</syntaxhighlight>}}
  "type": "string"
=== Profiles ===
}</syntaxhighlight>}}=== Profiles ======= Profiles.Details.Profile ===='''Extends:'''* ''[[#Item.Details.Base|Item.Details.Base]]'''''Properties:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">* [''integer'' lockmode]* [''string'' thumbnail]</div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
==== Profiles.Details.Profile ====
'''Extends:'''
* ''[[#Item.Details.Base|Item.Details.Base]]''
'''Properties:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
* [''string'' thumbnail]
* [''integer'' lockmode]
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
   "extends": "Item.Details.Base",
   "extends": "Item.Details.Base",
  "id": "Profiles.Details.Profile",
   "properties": {
   "properties": {
    "lockmode": {
      "default": 0,
      "type": "integer"
    },
     "thumbnail": {
     "thumbnail": {
      "default": "",
       "type": "string"
       "type": "string"
    },
    "lockmode": {
      "type": "integer"
     }
     }
   }
   }
}
}</syntaxhighlight>}}==== Profiles.Fields.Profile ===='''Extends:'''* ''[[#Item.Fields.Base|Item.Fields.Base]]''{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
</syntaxhighlight>}}
==== Profiles.Fields.Profile ====
'''Extends:'''
* ''[[#Item.Fields.Base|Item.Fields.Base]]''
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
   "extends": "Item.Fields.Base",
   "extends": "Item.Fields.Base",
  "id": "Profiles.Fields.Profile",
   "items": {
   "items": {
     "type": "string",
     "enums": [
    "enum": [
       "thumbnail",
       "thumbnail",
       "lockmode"
       "lockmode"
     ]
     ],
    "type": "string"
   }
   }
}
}</syntaxhighlight>}}==== Profiles.Password ===='''Type:''' ''object''<br />'''Properties:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">* [''string'' encryption = md5]* ''string'' value</div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
</syntaxhighlight>}}
   "id": "Profiles.Password",
==== Profiles.Password ====
'''Type:''' ''object''
<br />
'''Properties:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
* ''string'' value
* [''string'' encryption = md5]
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
   "type": "object",
   "properties": {
   "properties": {
    "value": {
      "type": "string",
      "required": true,
      "description": "Password"
    },
     "encryption": {
     "encryption": {
       "type": "string",
       "default": "md5",
       "description": "Password Encryption",
       "description": "Password Encryption",
       "default": "md5",
       "enums": [
      "enum": [
         "none",
         "none",
         "md5"
         "md5"
       ]
       ],
      "type": "string"
    },
    "value": {
      "description": "Password",
      "required": true,
      "type": "string"
     }
     }
   }
   },
}
  "type": "object"
</syntaxhighlight>}}
}</syntaxhighlight>}}=== Setting ======= Setting.Details.Base ===='''Type:''' ''object''<br />'''Properties:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">* [''string'' help]* ''string'' id* ''string'' label</div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
=== Setting ===
   "id": "Setting.Details.Base",
==== Setting.Details.Base ====
'''Type:''' ''object''
<br />
'''Properties:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
* ''string'' id
* ''string'' label
* [''string'' help]
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
   "type": "object",
   "properties": {
   "properties": {
    "help": {
      "default": "",
      "type": "string"
    },
     "id": {
     "id": {
       "type": "string",
       "minLength": 1,
       "required": true,
       "required": true,
       "minLength": 1
       "type": "string"
     },
     },
     "label": {
     "label": {
      "type": "string",
       "required": true,
       "required": true
    },
    "help": {
       "type": "string"
       "type": "string"
     }
     }
   }
   },
}
  "type": "object"
</syntaxhighlight>}}
}</syntaxhighlight>}}==== Setting.Details.Category ===='''Extends:'''* ''[[#Setting.Details.Base|Setting.Details.Base]]'''''Properties:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">* [''array'' groups]</div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
==== Setting.Details.Category ====
  "additionalProperties": false,
'''Extends:'''
* ''[[#Setting.Details.Base|Setting.Details.Base]]''
'''Properties:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
* [''array'' groups]
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
   "extends": "Setting.Details.Base",
   "extends": "Setting.Details.Base",
  "id": "Setting.Details.Category",
   "properties": {
   "properties": {
     "groups": {
     "groups": {
      "type": "array",
       "items": {
       "items": {
         "$ref": "Setting.Details.Group"
         "$ref": "Setting.Details.Group"
       },
       },
       "minItems": 1,
       "minItems": 1,
      "type": "array",
       "uniqueItems": true
       "uniqueItems": true
     }
     }
   },
   }
  "additionalProperties": false
}</syntaxhighlight>}}==== Setting.Details.Control ===='''Type:''' ''mixed''<br />{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
}
  "id": "Setting.Details.Control",
</syntaxhighlight>}}
==== Setting.Details.Control ====
'''Type:''' ''mixed''
<br />
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
   "type": [
   "type": [
     {
     {
       "$ref": "Setting.Details.ControlCheckmark",
       "$ref": "Setting.Details.ControlCheckmark"
      "required": true
     },
     },
     {
     {
       "$ref": "Setting.Details.ControlSpinner",
       "$ref": "Setting.Details.ControlSpinner"
      "required": true
     },
     },
     {
     {
       "$ref": "Setting.Details.ControlEdit",
       "$ref": "Setting.Details.ControlEdit"
      "required": true
     },
     },
     {
     {
       "$ref": "Setting.Details.ControlButton",
       "$ref": "Setting.Details.ControlButton"
      "required": true
     },
     },
     {
     {
       "$ref": "Setting.Details.ControlList",
       "$ref": "Setting.Details.ControlList"
      "required": true
     },
     },
     {
     {
       "$ref": "Setting.Details.ControlSlider",
       "$ref": "Setting.Details.ControlSlider"
      "required": true
     },
     },
     {
     {
       "$ref": "Setting.Details.ControlRange",
       "$ref": "Setting.Details.ControlRange"
      "required": true
     },
     },
     {
     {
       "$ref": "Setting.Details.ControlLabel",
       "$ref": "Setting.Details.ControlLabel"
      "required": true
     }
     }
   ]
   ]
}
}</syntaxhighlight>}}==== Setting.Details.ControlBase ===='''Type:''' ''object''<br />'''Properties:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">* ''boolean'' delayed* ''string'' format* ''string'' type</div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
</syntaxhighlight>}}
   "id": "Setting.Details.ControlBase",
==== Setting.Details.ControlBase ====
'''Type:''' ''object''
<br />
'''Properties:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
* ''string'' type
* ''string'' format
* ''boolean'' delayed
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
   "type": "object",
   "properties": {
   "properties": {
     "type": {
     "delayed": {
       "type": "string",
       "required": true,
       "required": true
       "type": "boolean"
     },
     },
     "format": {
     "format": {
       "type": "string",
       "required": true,
       "required": true
       "type": "string"
     },
     },
     "delayed": {
     "type": {
       "type": "boolean",
       "required": true,
       "required": true
       "type": "string"
     }
     }
   }
   },
}
  "type": "object"
</syntaxhighlight>}}
}</syntaxhighlight>}}==== Setting.Details.ControlButton ===='''Extends:'''* ''[[#Setting.Details.ControlHeading|Setting.Details.ControlHeading]]'''''Properties:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">* ''string'' type</div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
==== Setting.Details.ControlButton ====
'''Extends:'''
* ''[[#Setting.Details.ControlHeading|Setting.Details.ControlHeading]]''
'''Properties:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
* ''string'' type
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
   "extends": "Setting.Details.ControlHeading",
   "extends": "Setting.Details.ControlHeading",
  "id": "Setting.Details.ControlButton",
   "properties": {
   "properties": {
     "type": {
     "type": {
       "type": "string",
       "enums": [
        "button"
      ],
       "required": true,
       "required": true,
       "enum": [
       "type": "string"
        "button"
      ]
     }
     }
   }
   }
}
}</syntaxhighlight>}}==== Setting.Details.ControlCheckmark ===='''Extends:'''* ''[[#Setting.Details.ControlBase|Setting.Details.ControlBase]]'''''Properties:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">* ''string'' format* ''string'' type</div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
</syntaxhighlight>}}
==== Setting.Details.ControlCheckmark ====
'''Extends:'''
* ''[[#Setting.Details.ControlBase|Setting.Details.ControlBase]]''
'''Properties:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
* ''string'' type
* ''string'' format
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
   "extends": "Setting.Details.ControlBase",
   "extends": "Setting.Details.ControlBase",
  "id": "Setting.Details.ControlCheckmark",
   "properties": {
   "properties": {
    "format": {
      "enums": [
        "boolean"
      ],
      "required": true,
      "type": "string"
    },
     "type": {
     "type": {
       "type": "string",
       "enums": [
      "required": true,
      "enum": [
         "toggle"
         "toggle"
       ]
       ],
    },
    "format": {
      "type": "string",
       "required": true,
       "required": true,
       "enum": [
       "type": "string"
        "boolean"
      ]
     }
     }
   }
   }
}
}</syntaxhighlight>}}==== Setting.Details.ControlEdit ===='''Extends:'''* ''[[#Setting.Details.ControlHeading|Setting.Details.ControlHeading]]'''''Properties:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">* ''boolean'' hidden* ''string'' type* ''boolean'' verifynewvalue</div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
</syntaxhighlight>}}
==== Setting.Details.ControlEdit ====
'''Extends:'''
* ''[[#Setting.Details.ControlHeading|Setting.Details.ControlHeading]]''
'''Properties:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
* ''string'' type
* ''boolean'' hidden
* ''boolean'' verifynewvalue
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
   "extends": "Setting.Details.ControlHeading",
   "extends": "Setting.Details.ControlHeading",
  "id": "Setting.Details.ControlEdit",
   "properties": {
   "properties": {
    "hidden": {
      "required": true,
      "type": "boolean"
    },
     "type": {
     "type": {
       "type": "string",
       "enums": [
        "edit"
      ],
       "required": true,
       "required": true,
      "enum": [
       "type": "string"
        "edit"
      ]
    },
    "hidden": {
       "type": "boolean",
      "required": true
     },
     },
     "verifynewvalue": {
     "verifynewvalue": {
       "type": "boolean",
       "required": true,
       "required": true
       "type": "boolean"
     }
     }
   }
   }
}
}</syntaxhighlight>}}==== Setting.Details.ControlHeading ===='''Extends:'''* ''[[#Setting.Details.ControlBase|Setting.Details.ControlBase]]'''''Properties:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">* [''string'' heading]</div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
</syntaxhighlight>}}
==== Setting.Details.ControlHeading ====
'''Extends:'''
* ''[[#Setting.Details.ControlBase|Setting.Details.ControlBase]]''
'''Properties:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
* [''string'' heading]
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
   "extends": "Setting.Details.ControlBase",
   "extends": "Setting.Details.ControlBase",
  "id": "Setting.Details.ControlHeading",
   "properties": {
   "properties": {
     "heading": {
     "heading": {
      "default": "",
       "type": "string"
       "type": "string"
     }
     }
   }
   }
}
}</syntaxhighlight>}}==== Setting.Details.ControlLabel ===='''Extends:'''* ''[[#Setting.Details.ControlBase|Setting.Details.ControlBase]]'''''Properties:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">* ''string'' format* ''string'' type</div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
</syntaxhighlight>}}
==== Setting.Details.ControlLabel ====
'''Extends:'''
* ''[[#Setting.Details.ControlBase|Setting.Details.ControlBase]]''
'''Properties:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
* ''string'' type
* ''string'' format
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
   "extends": "Setting.Details.ControlBase",
   "extends": "Setting.Details.ControlBase",
  "id": "Setting.Details.ControlLabel",
   "properties": {
   "properties": {
     "type": {
     "format": {
       "type": "string",
       "enums": [
        "string"
      ],
       "required": true,
       "required": true,
       "enum": [
       "type": "string"
        "label"
      ]
     },
     },
     "format": {
     "type": {
       "type": "string",
       "enums": [
        "label"
      ],
       "required": true,
       "required": true,
       "enum": [
       "type": "string"
        "string"
      ]
     }
     }
   }
   }
}
}</syntaxhighlight>}}==== Setting.Details.ControlList ===='''Extends:'''* ''[[#Setting.Details.ControlHeading|Setting.Details.ControlHeading]]'''''Properties:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">* ''boolean'' multiselect* ''string'' type</div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
</syntaxhighlight>}}
==== Setting.Details.ControlList ====
'''Extends:'''
* ''[[#Setting.Details.ControlHeading|Setting.Details.ControlHeading]]''
'''Properties:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
* ''string'' type
* ''boolean'' multiselect
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
   "extends": "Setting.Details.ControlHeading",
   "extends": "Setting.Details.ControlHeading",
  "id": "Setting.Details.ControlList",
   "properties": {
   "properties": {
    "multiselect": {
      "required": true,
      "type": "boolean"
    },
     "type": {
     "type": {
       "type": "string",
       "enums": [
        "list"
      ],
       "required": true,
       "required": true,
      "enum": [
       "type": "string"
        "list"
      ]
    },
    "multiselect": {
       "type": "boolean",
      "required": true
     }
     }
   }
   }
}
}</syntaxhighlight>}}==== Setting.Details.ControlRange ===='''Extends:'''* ''[[#Setting.Details.ControlBase|Setting.Details.ControlBase]]'''''Properties:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">* ''string'' formatlabel* ''string'' formatvalue* ''string'' type</div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
</syntaxhighlight>}}
==== Setting.Details.ControlRange ====
'''Extends:'''
* ''[[#Setting.Details.ControlBase|Setting.Details.ControlBase]]''
'''Properties:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
* ''string'' type
* ''string'' formatlabel
* ''string'' formatvalue
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
   "extends": "Setting.Details.ControlBase",
   "extends": "Setting.Details.ControlBase",
  "id": "Setting.Details.ControlRange",
   "properties": {
   "properties": {
     "type": {
     "formatlabel": {
      "type": "string",
       "required": true,
       "required": true,
       "enum": [
       "type": "string"
        "range"
      ]
     },
     },
     "formatlabel": {
     "formatvalue": {
       "type": "string",
       "required": true,
       "required": true
       "type": "string"
     },
     },
     "formatvalue": {
     "type": {
       "type": "string",
       "enums": [
       "required": true
        "range"
      ],
       "required": true,
      "type": "string"
     }
     }
   }
   }
}
}</syntaxhighlight>}}==== Setting.Details.ControlSlider ===='''Extends:'''* ''[[#Setting.Details.ControlHeading|Setting.Details.ControlHeading]]'''''Properties:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">* ''string'' formatlabel* ''boolean'' popup* ''string'' type</div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
</syntaxhighlight>}}
==== Setting.Details.ControlSlider ====
'''Extends:'''
* ''[[#Setting.Details.ControlHeading|Setting.Details.ControlHeading]]''
'''Properties:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
* ''string'' type
* ''string'' formatlabel
* ''boolean'' popup
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
   "extends": "Setting.Details.ControlHeading",
   "extends": "Setting.Details.ControlHeading",
  "id": "Setting.Details.ControlSlider",
   "properties": {
   "properties": {
     "type": {
     "formatlabel": {
      "type": "string",
       "required": true,
       "required": true,
       "enum": [
       "type": "string"
        "slider"
      ]
     },
     },
     "formatlabel": {
     "popup": {
       "type": "string",
       "required": true,
       "required": true
       "type": "boolean"
     },
     },
     "popup": {
     "type": {
       "type": "boolean",
       "enums": [
       "required": true
        "slider"
      ],
       "required": true,
      "type": "string"
     }
     }
   }
   }
}
}</syntaxhighlight>}}==== Setting.Details.ControlSpinner ===='''Extends:'''* ''[[#Setting.Details.ControlBase|Setting.Details.ControlBase]]'''''Properties:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">* [''string'' formatlabel]* [''string'' minimumlabel]* ''string'' type</div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
</syntaxhighlight>}}
==== Setting.Details.ControlSpinner ====
'''Extends:'''
* ''[[#Setting.Details.ControlBase|Setting.Details.ControlBase]]''
'''Properties:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
* ''string'' type
* [''string'' formatlabel]
* [''string'' minimumlabel]
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
   "extends": "Setting.Details.ControlBase",
   "extends": "Setting.Details.ControlBase",
  "id": "Setting.Details.ControlSpinner",
   "properties": {
   "properties": {
     "type": {
     "formatlabel": {
       "type": "string",
       "default": "",
       "required": true,
       "type": "string"
      "enum": [
        "spinner"
      ]
     },
     },
     "formatlabel": {
     "minimumlabel": {
      "default": "",
       "type": "string"
       "type": "string"
     },
     },
     "minimumlabel": {
     "type": {
      "enums": [
        "spinner"
      ],
      "required": true,
       "type": "string"
       "type": "string"
     }
     }
   }
   }
}
}</syntaxhighlight>}}==== Setting.Details.Group ===='''Type:''' ''object''<br />'''Properties:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">* ''string'' id* [''array'' settings]</div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
</syntaxhighlight>}}
  "additionalProperties": false,
==== Setting.Details.Group ====
   "id": "Setting.Details.Group",
'''Type:''' ''object''
<br />
'''Properties:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
* ''string'' id
* [''array'' settings]
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
   "type": "object",
   "properties": {
   "properties": {
     "id": {
     "id": {
       "type": "string",
       "minLength": 1,
       "required": true,
       "required": true,
       "minLength": 1
       "type": "string"
     },
     },
     "settings": {
     "settings": {
      "type": "array",
       "items": {
       "items": {
         "$ref": "Setting.Details.Setting"
         "$ref": "Setting.Details.Setting"
       },
       },
       "minItems": 1,
       "minItems": 1,
      "type": "array",
       "uniqueItems": true
       "uniqueItems": true
     }
     }
   },
   },
   "additionalProperties": false
   "type": "object"
}
}</syntaxhighlight>}}==== Setting.Details.Section ===='''Extends:'''* ''[[#Setting.Details.Base|Setting.Details.Base]]'''''Properties:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">* [''array'' categories]</div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
</syntaxhighlight>}}
  "additionalProperties": false,
==== Setting.Details.Section ====
'''Extends:'''
* ''[[#Setting.Details.Base|Setting.Details.Base]]''
'''Properties:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
* [''array'' categories]
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
   "extends": "Setting.Details.Base",
   "extends": "Setting.Details.Base",
  "id": "Setting.Details.Section",
   "properties": {
   "properties": {
     "categories": {
     "categories": {
      "type": "array",
       "items": {
       "items": {
         "$ref": "Setting.Details.Category"
         "$ref": "Setting.Details.Category"
       },
       },
       "minItems": 1,
       "minItems": 1,
      "type": "array",
       "uniqueItems": true
       "uniqueItems": true
     }
     }
   },
   }
  "additionalProperties": false
}</syntaxhighlight>}}==== Setting.Details.Setting ===='''Type:''' ''mixed''<br />{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
}
  "id": "Setting.Details.Setting",
</syntaxhighlight>}}
==== Setting.Details.Setting ====
'''Type:''' ''mixed''
<br />
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
   "type": [
   "type": [
     {
     {
       "$ref": "Setting.Details.SettingBool",
       "$ref": "Setting.Details.SettingBool"
      "required": true
     },
     },
     {
     {
       "$ref": "Setting.Details.SettingInt",
       "$ref": "Setting.Details.SettingInt"
      "required": true
     },
     },
     {
     {
       "$ref": "Setting.Details.SettingNumber",
       "$ref": "Setting.Details.SettingNumber"
      "required": true
     },
     },
     {
     {
       "$ref": "Setting.Details.SettingString",
       "$ref": "Setting.Details.SettingString"
      "required": true
     },
     },
     {
     {
       "$ref": "Setting.Details.SettingAction",
       "$ref": "Setting.Details.SettingAction"
      "required": true
     },
     },
     {
     {
       "$ref": "Setting.Details.SettingList",
       "$ref": "Setting.Details.SettingList"
      "required": true
     },
     },
     {
     {
       "$ref": "Setting.Details.SettingPath",
       "$ref": "Setting.Details.SettingPath"
      "required": true
     },
     },
     {
     {
       "$ref": "Setting.Details.SettingAddon",
       "$ref": "Setting.Details.SettingAddon"
      "required": true
     },
     },
     {
     {
       "$ref": "Setting.Details.SettingDate",
       "$ref": "Setting.Details.SettingDate"
      "required": true
     },
     },
     {
     {
       "$ref": "Setting.Details.SettingTime",
       "$ref": "Setting.Details.SettingTime"
      "required": true
     }
     }
   ]
   ]
}
}</syntaxhighlight>}}==== Setting.Details.SettingAction ===='''Extends:'''* ''[[#Setting.Details.SettingBase|Setting.Details.SettingBase]]'''''Properties:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">* ''string'' data</div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
</syntaxhighlight>}}
  "additionalProperties": false,
==== Setting.Details.SettingAction ====
'''Extends:'''
* ''[[#Setting.Details.SettingBase|Setting.Details.SettingBase]]''
'''Properties:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
* ''string'' data
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
   "extends": "Setting.Details.SettingBase",
   "extends": "Setting.Details.SettingBase",
  "id": "Setting.Details.SettingAction",
   "properties": {
   "properties": {
     "data": {
     "data": {
       "type": "string",
       "required": true,
       "required": true
       "type": "string"
     }
     }
   },
   }
  "additionalProperties": false
}</syntaxhighlight>}}==== Setting.Details.SettingAddon ===='''Extends:'''* ''[[#Setting.Details.SettingString|Setting.Details.SettingString]]'''''Properties:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">* ''[[#Addon.Types|Addon.Types]]'' addontype</div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
}
  "additionalProperties": false,
</syntaxhighlight>}}
==== Setting.Details.SettingAddon ====
'''Extends:'''
* ''[[#Setting.Details.SettingString|Setting.Details.SettingString]]''
'''Properties:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
* ''[[#Addon.Types|Addon.Types]]'' addontype
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
   "extends": "Setting.Details.SettingString",
   "extends": "Setting.Details.SettingString",
  "id": "Setting.Details.SettingAddon",
   "properties": {
   "properties": {
     "addontype": {
     "addontype": {
Line 15,094: Line 11,108:
       "required": true
       "required": true
     }
     }
   },
   }
  "additionalProperties": false
}</syntaxhighlight>}}==== Setting.Details.SettingBase ===='''Extends:'''* ''[[#Setting.Details.Base|Setting.Details.Base]]'''''Properties:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">* [''[[#Setting.Details.Control|Setting.Details.Control]]'' control]* ''boolean'' enabled* ''[[#Setting.Level|Setting.Level]]'' level* [''string'' parent]* ''[[#Setting.Type|Setting.Type]]'' type</div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
}
  "additionalProperties": false,
</syntaxhighlight>}}
==== Setting.Details.SettingBase ====
'''Extends:'''
* ''[[#Setting.Details.Base|Setting.Details.Base]]''
'''Properties:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
* ''[[#Setting.Type|Setting.Type]]'' type
* ''boolean'' enabled
* ''[[#Setting.Level|Setting.Level]]'' level
* [''string'' parent]
* [''[[#Setting.Details.Control|Setting.Details.Control]]'' control]
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
   "extends": "Setting.Details.Base",
   "extends": "Setting.Details.Base",
  "id": "Setting.Details.SettingBase",
   "properties": {
   "properties": {
     "type": {
     "control": {
       "$ref": "Setting.Type",
       "$ref": "Setting.Details.Control"
      "required": true
     },
     },
     "enabled": {
     "enabled": {
       "type": "boolean",
       "required": true,
       "required": true
       "type": "boolean"
     },
     },
     "level": {
     "level": {
Line 15,126: Line 11,126:
     },
     },
     "parent": {
     "parent": {
      "default": "",
       "type": "string"
       "type": "string"
     },
     },
     "control": {
     "type": {
       "$ref": "Setting.Details.Control"
       "$ref": "Setting.Type",
      "required": true
     }
     }
   },
   }
  "additionalProperties": false
}</syntaxhighlight>}}==== Setting.Details.SettingBool ===='''Extends:'''* ''[[#Setting.Details.SettingBase|Setting.Details.SettingBase]]'''''Properties:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">* ''boolean'' default* ''boolean'' value</div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
}
  "additionalProperties": false,
</syntaxhighlight>}}
==== Setting.Details.SettingBool ====
'''Extends:'''
* ''[[#Setting.Details.SettingBase|Setting.Details.SettingBase]]''
'''Properties:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
* ''boolean'' value
* ''boolean'' default
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
   "extends": "Setting.Details.SettingBase",
   "extends": "Setting.Details.SettingBase",
  "id": "Setting.Details.SettingBool",
   "properties": {
   "properties": {
    "default": {
      "required": true,
      "type": "boolean"
    },
     "value": {
     "value": {
      "type": "boolean",
       "required": true,
       "required": true
       "type": "boolean"
    },
    "default": {
       "type": "boolean",
      "required": true
     }
     }
   },
   }
  "additionalProperties": false
}</syntaxhighlight>}}==== Setting.Details.SettingDate ===='''Extends:'''* ''[[#Setting.Details.SettingString|Setting.Details.SettingString]]''{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
}
  "additionalProperties": false,
</syntaxhighlight>}}
==== Setting.Details.SettingDate ====
'''Extends:'''
* ''[[#Setting.Details.SettingString|Setting.Details.SettingString]]''
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
   "extends": "Setting.Details.SettingString",
   "extends": "Setting.Details.SettingString",
   "additionalProperties": false
   "id": "Setting.Details.SettingDate"
}
}</syntaxhighlight>}}==== Setting.Details.SettingInt ===='''Extends:'''* ''[[#Setting.Details.SettingBase|Setting.Details.SettingBase]]'''''Properties:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">* ''integer'' default* [''integer'' maximum]* [''integer'' minimum]* [''array'' options]* [''integer'' step]* ''integer'' value</div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
</syntaxhighlight>}}
  "additionalProperties": false,
==== Setting.Details.SettingInt ====
'''Extends:'''
* ''[[#Setting.Details.SettingBase|Setting.Details.SettingBase]]''
'''Properties:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
* ''integer'' value
* ''integer'' default
* [''integer'' minimum]
* [''integer'' step]
* [''integer'' maximum]
* [''array'' options]
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
   "extends": "Setting.Details.SettingBase",
   "extends": "Setting.Details.SettingBase",
  "id": "Setting.Details.SettingInt",
   "properties": {
   "properties": {
    "value": {
      "type": "integer",
      "required": true
    },
     "default": {
     "default": {
      "type": "integer",
       "required": true,
       "required": true
    },
    "minimum": {
       "type": "integer"
       "type": "integer"
     },
     },
     "step": {
     "maximum": {
      "default": 0,
       "type": "integer"
       "type": "integer"
     },
     },
     "maximum": {
     "minimum": {
      "default": 0,
       "type": "integer"
       "type": "integer"
     },
     },
     "options": {
     "options": {
      "type": "array",
       "items": {
       "items": {
        "type": "object",
         "properties": {
         "properties": {
           "label": {
           "label": {
             "type": "string",
             "required": true,
             "required": true
             "type": "string"
           },
           },
           "value": {
           "value": {
             "type": "integer",
             "required": true,
             "required": true
             "type": "integer"
           }
           }
         }
         },
       }
        "type": "object"
     }
       },
  },
      "type": "array"
  "additionalProperties": false
     },
}
    "step": {
</syntaxhighlight>}}
      "default": 0,
==== Setting.Details.SettingList ====
      "type": "integer"
'''Extends:'''
    },
* ''[[#Setting.Details.SettingBase|Setting.Details.SettingBase]]''
    "value": {
'''Properties:'''
      "required": true,
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
      "type": "integer"
* ''[[#Setting.Value.List|Setting.Value.List]]'' value
    }
* ''[[#Setting.Value.List|Setting.Value.List]]'' default
  }
* ''[[#Setting.Type|Setting.Type]]'' elementtype
}</syntaxhighlight>}}==== Setting.Details.SettingList ===='''Extends:'''* ''[[#Setting.Details.SettingBase|Setting.Details.SettingBase]]'''''Properties:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">* ''[[#Setting.Value.List|Setting.Value.List]]'' default* ''[[#Setting.Details.Setting|Setting.Details.Setting]]'' definition* ''string'' delimiter* ''[[#Setting.Type|Setting.Type]]'' elementtype* [''integer'' maximumitems]* [''integer'' minimumitems]* ''[[#Setting.Value.List|Setting.Value.List]]'' value</div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
* ''[[#Setting.Details.Setting|Setting.Details.Setting]]'' definition
  "additionalProperties": false,
* ''string'' delimiter
* [''integer'' minimumItems]
* [''integer'' maximumItems]
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
   "extends": "Setting.Details.SettingBase",
   "extends": "Setting.Details.SettingBase",
  "id": "Setting.Details.SettingList",
   "properties": {
   "properties": {
    "value": {
      "$ref": "Setting.Value.List",
      "required": true
    },
     "default": {
     "default": {
       "$ref": "Setting.Value.List",
       "$ref": "Setting.Value.List",
      "required": true
    },
    "elementtype": {
      "$ref": "Setting.Type",
       "required": true
       "required": true
     },
     },
Line 15,255: Line 11,208:
     },
     },
     "delimiter": {
     "delimiter": {
       "type": "string",
      "required": true,
       "type": "string"
    },
    "elementtype": {
      "$ref": "Setting.Type",
       "required": true
       "required": true
     },
     },
     "minimumItems": {
     "maximumitems": {
      "default": 0,
       "type": "integer"
       "type": "integer"
     },
     },
     "maximumItems": {
     "minimumitems": {
      "default": 0,
       "type": "integer"
       "type": "integer"
    },
    "value": {
      "$ref": "Setting.Value.List",
      "required": true
     }
     }
   },
   }
  "additionalProperties": false
}</syntaxhighlight>}}==== Setting.Details.SettingNumber ===='''Extends:'''* ''[[#Setting.Details.SettingBase|Setting.Details.SettingBase]]'''''Properties:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">* ''number'' default* ''number'' maximum* ''number'' minimum* ''number'' step* ''number'' value</div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
}
  "additionalProperties": false,
</syntaxhighlight>}}
==== Setting.Details.SettingNumber ====
'''Extends:'''
* ''[[#Setting.Details.SettingBase|Setting.Details.SettingBase]]''
'''Properties:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
* ''number'' value
* ''number'' default
* ''number'' minimum
* ''number'' step
* ''number'' maximum
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
   "extends": "Setting.Details.SettingBase",
   "extends": "Setting.Details.SettingBase",
  "id": "Setting.Details.SettingNumber",
   "properties": {
   "properties": {
     "value": {
     "default": {
       "type": "number",
       "required": true,
       "required": true
       "type": "number"
     },
     },
     "default": {
     "maximum": {
       "type": "number",
       "required": true,
       "required": true
       "type": "number"
     },
     },
     "minimum": {
     "minimum": {
       "type": "number",
       "required": true,
       "required": true
       "type": "number"
     },
     },
     "step": {
     "step": {
       "type": "number",
       "required": true,
       "required": true
       "type": "number"
     },
     },
     "maximum": {
     "value": {
       "type": "number",
       "required": true,
       "required": true
       "type": "number"
     }
     }
   },
   }
  "additionalProperties": false
}</syntaxhighlight>}}==== Setting.Details.SettingPath ===='''Extends:'''* ''[[#Setting.Details.SettingString|Setting.Details.SettingString]]'''''Properties:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">* [''array'' sources]* ''boolean'' writable</div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
}
  "additionalProperties": false,
</syntaxhighlight>}}
==== Setting.Details.SettingPath ====
'''Extends:'''
* ''[[#Setting.Details.SettingString|Setting.Details.SettingString]]''
'''Properties:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
* ''boolean'' writable
* [''array'' sources]
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
   "extends": "Setting.Details.SettingString",
   "extends": "Setting.Details.SettingString",
  "id": "Setting.Details.SettingPath",
   "properties": {
   "properties": {
    "writable": {
      "type": "boolean",
      "required": true
    },
     "sources": {
     "sources": {
      "type": "array",
       "items": {
       "items": {
         "type": "string"
         "type": "string"
       }
       },
      "type": "array"
    },
    "writable": {
      "required": true,
      "type": "boolean"
     }
     }
   },
   }
  "additionalProperties": false
}</syntaxhighlight>}}==== Setting.Details.SettingString ===='''Extends:'''* ''[[#Setting.Details.SettingBase|Setting.Details.SettingBase]]'''''Properties:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">* ''boolean'' allowempty* ''string'' default* [''array'' options]* ''string'' value</div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
}
</syntaxhighlight>}}
==== Setting.Details.SettingString ====
'''Extends:'''
* ''[[#Setting.Details.SettingBase|Setting.Details.SettingBase]]''
'''Properties:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
* ''string'' value
* ''string'' default
* ''boolean'' allowempty
* [''array'' options]
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
   "extends": "Setting.Details.SettingBase",
   "extends": "Setting.Details.SettingBase",
  "id": "Setting.Details.SettingString",
   "properties": {
   "properties": {
     "value": {
     "allowempty": {
       "type": "string",
       "required": true,
       "required": true
       "type": "boolean"
     },
     },
     "default": {
     "default": {
      "type": "string",
       "required": true,
       "required": true
       "type": "string"
    },
    "allowempty": {
       "type": "boolean",
      "required": true
     },
     },
     "options": {
     "options": {
      "type": "array",
       "items": {
       "items": {
        "type": "object",
         "properties": {
         "properties": {
           "label": {
           "label": {
             "type": "string",
             "required": true,
             "required": true
             "type": "string"
           },
           },
           "value": {
           "value": {
             "type": "string",
             "required": true,
             "required": true
             "type": "string"
           }
           }
         }
         },
       }
        "type": "object"
       },
      "type": "array"
    },
    "value": {
      "required": true,
      "type": "string"
     }
     }
   }
   }
}
}</syntaxhighlight>}}==== Setting.Details.SettingTime ===='''Extends:'''* ''[[#Setting.Details.SettingString|Setting.Details.SettingString]]''{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
</syntaxhighlight>}}
  "additionalProperties": false,
==== Setting.Details.SettingTime ====
'''Extends:'''
* ''[[#Setting.Details.SettingString|Setting.Details.SettingString]]''
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
   "extends": "Setting.Details.SettingString",
   "extends": "Setting.Details.SettingString",
   "additionalProperties": false
   "id": "Setting.Details.SettingTime"
}
}</syntaxhighlight>}}==== Setting.Level ===='''Type:''' ''string''<br />{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
</syntaxhighlight>}}
   "default": "basic",
==== Setting.Level ====
   "enums": [
'''Type:''' ''string''
<br />
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
   "type": "string",
   "enum": [
     "basic",
     "basic",
     "standard",
     "standard",
     "advanced",
     "advanced",
     "expert"
     "expert"
   ]
   ],
}
  "id": "Setting.Level",
</syntaxhighlight>}}
  "type": "string"
==== Setting.Type ====
}</syntaxhighlight>}}==== Setting.Type ===='''Type:''' ''string''<br />{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
'''Type:''' ''string''
   "default": "boolean",
<br />
   "enums": [
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
   "type": "string",
   "enum": [
     "boolean",
     "boolean",
     "integer",
     "integer",
Line 15,418: Line 11,330:
     "date",
     "date",
     "time"
     "time"
   ]
   ],
}
  "id": "Setting.Type",
</syntaxhighlight>}}
  "type": "string"
==== Setting.Value ====
}</syntaxhighlight>}}==== Setting.Value ===='''Type:''' ''mixed''<br />{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
'''Type:''' ''mixed''
  "default": null,
<br />
  "id": "Setting.Value",
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
   "type": [
   "type": [
     {
     {
       "type": "boolean",
       "type": "boolean"
      "required": true
     },
     },
     {
     {
       "type": "integer",
       "type": "integer"
      "required": true
     },
     },
     {
     {
       "type": "number",
       "type": "number"
      "required": true
     },
     },
     {
     {
       "type": "string",
       "type": "string"
      "required": true
     }
     }
   ]
   ]
}
}</syntaxhighlight>}}==== Setting.Value.Extended ===='''Type:''' ''mixed''<br />{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
</syntaxhighlight>}}
  "default": null,
==== Setting.Value.Extended ====
  "id": "Setting.Value.Extended",
'''Type:''' ''mixed''
<br />
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
   "type": [
   "type": [
     {
     {
       "type": "boolean",
       "type": "boolean"
      "required": true
     },
     },
     {
     {
       "type": "integer",
       "type": "integer"
      "required": true
     },
     },
     {
     {
       "type": "number",
       "type": "number"
      "required": true
     },
     },
     {
     {
       "type": "string",
       "type": "string"
      "required": true
     },
     },
     {
     {
       "$ref": "Setting.Value.List",
       "$ref": "Setting.Value.List"
      "required": true
     }
     }
   ]
   ]
}
}</syntaxhighlight>}}==== Setting.Value.List ===='''Type:''' ''array''<br />{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
</syntaxhighlight>}}
   "id": "Setting.Value.List",
==== Setting.Value.List ====
'''Type:''' ''array''
<br />
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
   "type": "array",
   "items": {
   "items": {
     "$ref": "Setting.Value"
     "$ref": "Setting.Value"
   }
   },
}
  "type": "array"
</syntaxhighlight>}}
}</syntaxhighlight>}}=== System ======= System.Property.Name ===='''Type:''' ''string''<br />{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
=== System ===
   "default": "canshutdown",
==== System.Property.Name ====
   "enums": [
'''Type:''' ''string''
<br />
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
   "type": "string",
   "enum": [
     "canshutdown",
     "canshutdown",
     "cansuspend",
     "cansuspend",
     "canhibernate",
     "canhibernate",
     "canreboot"
     "canreboot"
   ]
   ],
}
  "id": "System.Property.Name",
</syntaxhighlight>}}
  "type": "string"
==== System.Property.Value ====
}</syntaxhighlight>}}==== System.Property.Value ===='''Type:''' ''object''<br />'''Properties:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">* [''boolean'' canhibernate]* [''boolean'' canreboot]* [''boolean'' canshutdown]* [''boolean'' cansuspend]</div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
'''Type:''' ''object''
   "id": "System.Property.Value",
<br />
'''Properties:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
* [''boolean'' canshutdown]
* [''boolean'' cansuspend]
* [''boolean'' canhibernate]
* [''boolean'' canreboot]
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
   "type": "object",
   "properties": {
   "properties": {
     "canshutdown": {
     "canhibernate": {
      "default": false,
       "type": "boolean"
       "type": "boolean"
     },
     },
     "cansuspend": {
     "canreboot": {
      "default": false,
       "type": "boolean"
       "type": "boolean"
     },
     },
     "canhibernate": {
     "canshutdown": {
      "default": false,
       "type": "boolean"
       "type": "boolean"
     },
     },
     "canreboot": {
     "cansuspend": {
      "default": false,
       "type": "boolean"
       "type": "boolean"
     }
     }
   }
   },
}
  "type": "object"
</syntaxhighlight>}}
}</syntaxhighlight>}}=== Textures ======= Textures.Details.Size ===='''Type:''' ''object''<br />'''Properties:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">* [''integer'' height]* [''string'' lastused]* [''integer'' size]* [''integer'' usecount]* [''integer'' width]</div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
=== Textures ===
   "id": "Textures.Details.Size",
==== Textures.Details.Size ====
'''Type:''' ''object''
<br />
'''Properties:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
* [''integer'' size]
* [''integer'' width]
* [''integer'' height]
* [''integer'' usecount]
* [''string'' lastused]
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
   "type": "object",
   "properties": {
   "properties": {
     "size": {
     "height": {
       "type": "integer",
       "default": 0,
       "description": "Size of the texture (1 == largest)"
       "description": "Height of texture",
      "type": "integer"
     },
     },
     "width": {
     "lastused": {
       "type": "integer",
       "default": "",
       "description": "Width of texture"
       "description": "Date of last use",
      "type": "string"
     },
     },
     "height": {
     "size": {
       "type": "integer",
       "default": 0,
       "description": "Height of texture"
       "description": "Size of the texture (1 == largest)",
      "type": "integer"
     },
     },
     "usecount": {
     "usecount": {
       "type": "integer",
       "default": 0,
       "description": "Number of uses"
       "description": "Number of uses",
      "type": "integer"
     },
     },
     "lastused": {
     "width": {
       "type": "string",
       "default": 0,
       "description": "Date of last use"
      "description": "Width of texture",
       "type": "integer"
     }
     }
   }
   },
}
  "type": "object"
</syntaxhighlight>}}
}</syntaxhighlight>}}==== Textures.Details.Texture ===='''Type:''' ''object''<br />'''Properties:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">* [''string'' cachedurl]* [''string'' imagehash]* [''string'' lasthashcheck]* [''array'' sizes]* [''[[#Library.Id|Library.Id]]'' textureid = -1]* [''string'' url]</div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
==== Textures.Details.Texture ====
   "id": "Textures.Details.Texture",
'''Type:''' ''object''
<br />
'''Properties:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
* ''[[#Library.Id|Library.Id]]'' textureid
* [''string'' url]
* [''string'' cachedurl]
* [''string'' lasthashcheck]
* [''string'' imagehash]
* [''array'' sizes]
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
   "type": "object",
   "properties": {
   "properties": {
     "textureid": {
     "cachedurl": {
       "$ref": "Library.Id",
       "default": "",
       "required": "true"
       "description": "Cached URL on disk",
      "type": "string"
     },
     },
     "url": {
     "imagehash": {
       "type": "string",
       "default": "",
       "description": "Original source URL"
       "description": "Hash of image",
    },
       "type": "string"
    "cachedurl": {
       "type": "string",
      "description": "Cached URL on disk"
     },
     },
     "lasthashcheck": {
     "lasthashcheck": {
       "type": "string",
       "default": "",
       "description": "Last time source was checked for changes"
       "description": "Last time source was checked for changes",
    },
       "type": "string"
    "imagehash": {
       "type": "string",
      "description": "Hash of image"
     },
     },
     "sizes": {
     "sizes": {
      "type": "array",
       "items": {
       "items": {
         "$ref": "Textures.Details.Size"
         "$ref": "Textures.Details.Size"
       }
       },
      "type": "array"
    },
    "textureid": {
      "$ref": "Library.Id",
      "default": -1
    },
    "url": {
      "default": "",
      "description": "Original source URL",
      "type": "string"
     }
     }
   }
   },
}
  "type": "object"
</syntaxhighlight>}}
}</syntaxhighlight>}}==== Textures.Fields.Texture ===='''Extends:'''* ''[[#Item.Fields.Base|Item.Fields.Base]]''{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
==== Textures.Fields.Texture ====
'''Extends:'''
* ''[[#Item.Fields.Base|Item.Fields.Base]]''
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
   "extends": "Item.Fields.Base",
   "extends": "Item.Fields.Base",
  "id": "Textures.Fields.Texture",
   "items": {
   "items": {
     "type": "string",
     "enums": [
    "enum": [
       "url",
       "url",
       "cachedurl",
       "cachedurl",
Line 15,628: Line 11,482:
       "imagehash",
       "imagehash",
       "sizes"
       "sizes"
     ]
     ],
    "type": "string"
   }
   }
}
}</syntaxhighlight>}}=== Video ======= Video.Cast ===='''Type:''' ''array''<br />{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
</syntaxhighlight>}}
   "id": "Video.Cast",
=== Video ===
==== Video.Cast ====
'''Type:''' ''array''
<br />
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
   "type": "array",
   "items": {
   "items": {
     "type": "object",
     "additionalProperties": false,
     "properties": {
     "properties": {
       "name": {
       "name": {
         "type": "string",
        "required": true,
         "required": true
         "type": "string"
      },
      "order": {
         "required": true,
        "type": "integer"
       },
       },
       "role": {
       "role": {
        "type": "string",
         "required": true,
         "required": true
         "type": "string"
      },
      "order": {
         "type": "integer",
        "required": true
       },
       },
       "thumbnail": {
       "thumbnail": {
        "default": "",
         "type": "string"
         "type": "string"
       }
       }
     },
     },
     "additionalProperties": false
     "type": "object"
   }
   },
}
  "type": "array"
</syntaxhighlight>}}
}</syntaxhighlight>}}==== Video.Details.Base ===='''Extends:'''* ''[[#Media.Details.Base|Media.Details.Base]]'''''Properties:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">* [''[[#Media.Artwork|Media.Artwork]]'' art]* [''integer'' playcount]</div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
==== Video.Details.Base ====
'''Extends:'''
* ''[[#Media.Details.Base|Media.Details.Base]]''
'''Properties:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
* [''integer'' playcount]
* [''[[#Media.Artwork|Media.Artwork]]'' art]
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
   "extends": "Media.Details.Base",
   "extends": "Media.Details.Base",
  "id": "Video.Details.Base",
   "properties": {
   "properties": {
    "art": {
      "$ref": "Media.Artwork"
    },
     "playcount": {
     "playcount": {
      "default": 0,
       "type": "integer"
       "type": "integer"
    },
    "art": {
      "$ref": "Media.Artwork"
     }
     }
   }
   }
}
}</syntaxhighlight>}}==== Video.Details.Episode ===='''Extends:'''* ''[[#Video.Details.File|Video.Details.File]]'''''Properties:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">* [''[[#Video.Cast|Video.Cast]]'' cast]* [''integer'' episode]* ''[[#Library.Id|Library.Id]]'' episodeid* [''string'' firstaired]* [''string'' originaltitle]* [''string'' productioncode]* [''number'' rating]* [''any'' ratings]* [''integer'' season]* [''[[#Library.Id|Library.Id]]'' seasonid = -1]* [''string'' showtitle]* [''integer'' specialsortepisode]* [''integer'' specialsortseason]* [''[[#Library.Id|Library.Id]]'' tvshowid = -1]* [''[[#Media.UniqueID|Media.UniqueID]]'' uniqueid]* [''integer'' userrating]* [''string'' votes]* [''[[#Array.String|Array.String]]'' writer]</div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
</syntaxhighlight>}}
==== Video.Details.Episode ====
'''Extends:'''
* ''[[#Video.Details.File|Video.Details.File]]''
'''Properties:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
* ''[[#Library.Id|Library.Id]]'' episodeid
* [''string'' votes]
* [''number'' rating]
* [''[[#Array.String|Array.String]]'' writer]
* [''string'' firstaired]
* [''string'' productioncode]
* [''integer'' season]
* [''integer'' episode]
* [''[[#Media.UniqueID|Media.UniqueID]]'' uniqueid]
* [''string'' originaltitle]
* [''string'' showtitle]
* [''[[#Video.Cast|Video.Cast]]'' cast]
* [''[[#Library.Id|Library.Id]]'' tvshowid]
* [''integer'' specialsortseason]
* [''integer'' specialsortepisode]
* [''integer'' userrating]
* [''[[#Library.Id|Library.Id]]'' seasonid]
* [''Video.Ratings'' ratings]
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
   "extends": "Video.Details.File",
   "extends": "Video.Details.File",
  "id": "Video.Details.Episode",
   "properties": {
   "properties": {
    "cast": {
      "$ref": "Video.Cast"
    },
    "episode": {
      "default": 0,
      "type": "integer"
    },
     "episodeid": {
     "episodeid": {
       "$ref": "Library.Id",
       "$ref": "Library.Id",
       "required": true
       "required": true
     },
     },
     "votes": {
     "firstaired": {
      "default": "",
       "type": "string"
       "type": "string"
     },
     },
     "rating": {
     "originaltitle": {
       "type": "number"
       "default": "",
    },
    "writer": {
      "$ref": "Array.String"
    },
    "firstaired": {
       "type": "string"
       "type": "string"
     },
     },
     "productioncode": {
     "productioncode": {
      "default": "",
       "type": "string"
       "type": "string"
    },
    "rating": {
      "default": 0.0,
      "type": "number"
    },
    "ratings": {
      "default": null,
      "type": "any"
     },
     },
     "season": {
     "season": {
      "default": 0,
       "type": "integer"
       "type": "integer"
     },
     },
     "episode": {
     "seasonid": {
      "type": "integer"
       "$ref": "Library.Id",
    },
       "default": -1
    "uniqueid": {
       "$ref": "Media.UniqueID"
    },
    "originaltitle": {
       "type": "string"
     },
     },
     "showtitle": {
     "showtitle": {
      "default": "",
       "type": "string"
       "type": "string"
     },
     },
     "cast": {
     "specialsortepisode": {
       "$ref": "Video.Cast"
       "default": 0,
    },
       "type": "integer"
    "tvshowid": {
       "$ref": "Library.Id"
     },
     },
     "specialsortseason": {
     "specialsortseason": {
      "default": 0,
       "type": "integer"
       "type": "integer"
     },
     },
     "specialsortepisode": {
     "tvshowid": {
       "type": "integer"
       "$ref": "Library.Id",
      "default": -1
    },
    "uniqueid": {
      "$ref": "Media.UniqueID"
     },
     },
     "userrating": {
     "userrating": {
      "default": 0,
       "type": "integer"
       "type": "integer"
     },
     },
     "seasonid": {
     "votes": {
       "$ref": "Library.Id"
       "default": "",
      "type": "string"
     },
     },
     "ratings": {
     "writer": {
       "type": "Video.Ratings"
       "$ref": "Array.String"
     }
     }
   }
   }
}
}</syntaxhighlight>}}==== Video.Details.File ===='''Extends:'''* ''[[#Video.Details.Item|Video.Details.Item]]'''''Properties:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">* [''[[#Array.String|Array.String]]'' director]* [''[[#Video.Resume|Video.Resume]]'' resume]* [''integer'' runtime]* [''[[#Video.Streams|Video.Streams]]'' streamdetails]</div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
</syntaxhighlight>}}
==== Video.Details.File ====
'''Extends:'''
* ''[[#Video.Details.Item|Video.Details.Item]]''
'''Properties:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
* [''integer'' runtime]
* [''[[#Array.String|Array.String]]'' director]
* [''[[#Video.Streams|Video.Streams]]'' streamdetails]
* [''[[#Video.Resume|Video.Resume]]'' resume]
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
   "extends": "Video.Details.Item",
   "extends": "Video.Details.Item",
  "id": "Video.Details.File",
   "properties": {
   "properties": {
    "runtime": {
      "type": "integer",
      "description": "Runtime in seconds"
    },
     "director": {
     "director": {
       "$ref": "Array.String"
       "$ref": "Array.String"
    },
    "streamdetails": {
      "$ref": "Video.Streams"
     },
     },
     "resume": {
     "resume": {
       "$ref": "Video.Resume"
       "$ref": "Video.Resume"
    },
    "runtime": {
      "default": 0,
      "description": "Runtime in seconds",
      "type": "integer"
    },
    "streamdetails": {
      "$ref": "Video.Streams"
     }
     }
   }
   }
}
}</syntaxhighlight>}}==== Video.Details.Item ===='''Extends:'''* ''[[#Video.Details.Media|Video.Details.Media]]'''''Properties:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">* [''string'' dateadded]* [''string'' file]* [''string'' lastplayed]* [''string'' plot]</div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
</syntaxhighlight>}}
==== Video.Details.Item ====
'''Extends:'''
* ''[[#Video.Details.Media|Video.Details.Media]]''
'''Properties:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
* [''string'' file]
* [''string'' plot]
* [''string'' lastplayed]
* [''string'' dateadded]
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
   "extends": "Video.Details.Media",
   "extends": "Video.Details.Media",
  "id": "Video.Details.Item",
   "properties": {
   "properties": {
     "file": {
     "dateadded": {
      "default": "",
       "type": "string"
       "type": "string"
     },
     },
     "plot": {
     "file": {
      "default": "",
       "type": "string"
       "type": "string"
     },
     },
     "lastplayed": {
     "lastplayed": {
      "default": "",
       "type": "string"
       "type": "string"
     },
     },
     "dateadded": {
     "plot": {
      "default": "",
       "type": "string"
       "type": "string"
     }
     }
   }
   }
}
}</syntaxhighlight>}}==== Video.Details.Media ===='''Extends:'''* ''[[#Video.Details.Base|Video.Details.Base]]'''''Properties:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">* [''string'' title]</div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
</syntaxhighlight>}}
==== Video.Details.Media ====
'''Extends:'''
* ''[[#Video.Details.Base|Video.Details.Base]]''
'''Properties:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
* [''string'' title]
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
   "extends": "Video.Details.Base",
   "extends": "Video.Details.Base",
  "id": "Video.Details.Media",
   "properties": {
   "properties": {
     "title": {
     "title": {
      "default": "",
       "type": "string"
       "type": "string"
     }
     }
   }
   }
}
}</syntaxhighlight>}}==== Video.Details.Movie ===='''Extends:'''* ''[[#Video.Details.File|Video.Details.File]]'''''Properties:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">* [''[[#Video.Cast|Video.Cast]]'' cast]* [''[[#Array.String|Array.String]]'' country]* [''[[#Array.String|Array.String]]'' genre]* [''string'' imdbnumber]* ''[[#Library.Id|Library.Id]]'' movieid* [''string'' mpaa]* [''string'' originaltitle]* [''string'' plotoutline]* [''string'' premiered]* [''number'' rating]* [''any'' ratings]* [''string'' set]* [''[[#Library.Id|Library.Id]]'' setid = -1]* [''[[#Array.String|Array.String]]'' showlink]* [''string'' sorttitle]* [''[[#Array.String|Array.String]]'' studio]* [''[[#Array.String|Array.String]]'' tag]* [''string'' tagline]* [''integer'' top250]* [''string'' trailer]* [''[[#Media.UniqueID|Media.UniqueID]]'' uniqueid]* [''integer'' userrating]* [''string'' votes]* [''[[#Array.String|Array.String]]'' writer]* [''integer'' year]</div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
</syntaxhighlight>}}
==== Video.Details.Movie ====
'''Extends:'''
* ''[[#Video.Details.File|Video.Details.File]]''
'''Properties:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
* ''[[#Library.Id|Library.Id]]'' movieid
* [''[[#Array.String|Array.String]]'' genre]
* [''integer'' year]
* [''number'' rating]
* [''string'' trailer]
* [''string'' tagline]
* [''string'' plotoutline]
* [''string'' originaltitle]
* [''string'' sorttitle]
* [''[[#Array.String|Array.String]]'' writer]
* [''[[#Array.String|Array.String]]'' studio]
* [''string'' mpaa]
* [''[[#Video.Cast|Video.Cast]]'' cast]
* [''[[#Array.String|Array.String]]'' country]
* [''string'' imdbnumber]
* [''string'' set]
* [''[[#Array.String|Array.String]]'' showlink]
* [''integer'' top250]
* [''string'' votes]
* [''[[#Library.Id|Library.Id]]'' setid]
* [''[[#Array.String|Array.String]]'' tag]
* [''integer'' userrating]
* [''Video.Ratings'' ratings]
* [''string'' premiered]
* [''[[#Media.UniqueID|Media.UniqueID]]'' uniqueid]
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
   "extends": "Video.Details.File",
   "extends": "Video.Details.File",
  "id": "Video.Details.Movie",
   "properties": {
   "properties": {
     "movieid": {
     "cast": {
       "$ref": "Library.Id",
       "$ref": "Video.Cast"
       "required": true
    },
    "country": {
       "$ref": "Array.String"
     },
     },
     "genre": {
     "genre": {
       "$ref": "Array.String"
       "$ref": "Array.String"
     },
     },
     "year": {
     "imdbnumber": {
       "type": "integer"
      "default": "",
       "type": "string"
     },
     },
     "rating": {
     "movieid": {
       "type": "number"
       "$ref": "Library.Id",
      "required": true
     },
     },
     "trailer": {
     "mpaa": {
      "default": "",
       "type": "string"
       "type": "string"
     },
     },
     "tagline": {
     "originaltitle": {
      "default": "",
       "type": "string"
       "type": "string"
     },
     },
     "plotoutline": {
     "plotoutline": {
      "default": "",
       "type": "string"
       "type": "string"
     },
     },
     "originaltitle": {
     "premiered": {
      "default": "",
       "type": "string"
       "type": "string"
     },
     },
     "sorttitle": {
     "rating": {
       "type": "string"
      "default": 0.0,
       "type": "number"
     },
     },
     "writer": {
     "ratings": {
       "$ref": "Array.String"
       "default": null,
      "type": "any"
     },
     },
     "studio": {
     "set": {
      "default": "",
      "type": "string"
    },
    "setid": {
      "$ref": "Library.Id",
      "default": -1
    },
    "showlink": {
       "$ref": "Array.String"
       "$ref": "Array.String"
     },
     },
     "mpaa": {
     "sorttitle": {
      "default": "",
       "type": "string"
       "type": "string"
     },
     },
     "cast": {
     "studio": {
       "$ref": "Video.Cast"
       "$ref": "Array.String"
     },
     },
     "country": {
     "tag": {
       "$ref": "Array.String"
       "$ref": "Array.String"
     },
     },
     "imdbnumber": {
     "tagline": {
      "default": "",
       "type": "string"
       "type": "string"
     },
     },
     "set": {
     "top250": {
      "default": 0,
      "type": "integer"
    },
    "trailer": {
      "default": "",
       "type": "string"
       "type": "string"
     },
     },
     "showlink": {
     "uniqueid": {
       "$ref": "Array.String"
       "$ref": "Media.UniqueID"
     },
     },
     "top250": {
     "userrating": {
      "default": 0,
       "type": "integer"
       "type": "integer"
     },
     },
     "votes": {
     "votes": {
      "default": "",
       "type": "string"
       "type": "string"
     },
     },
     "setid": {
     "writer": {
      "$ref": "Library.Id"
    },
    "tag": {
       "$ref": "Array.String"
       "$ref": "Array.String"
     },
     },
     "userrating": {
     "year": {
      "default": 0,
       "type": "integer"
       "type": "integer"
    },
    "ratings": {
      "type": "Video.Ratings"
    },
    "premiered": {
      "type": "string"
    },
    "uniqueid": {
      "$ref": "Media.UniqueID"
     }
     }
   }
   }
}
}</syntaxhighlight>}}==== Video.Details.MovieSet ===='''Extends:'''* ''[[#Video.Details.Media|Video.Details.Media]]'''''Properties:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">* [''string'' plot]* ''[[#Library.Id|Library.Id]]'' setid</div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
</syntaxhighlight>}}
==== Video.Details.MovieSet ====
'''Extends:'''
* ''[[#Video.Details.Media|Video.Details.Media]]''
'''Properties:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
* ''[[#Library.Id|Library.Id]]'' setid
* [''string'' plot]
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
   "extends": "Video.Details.Media",
   "extends": "Video.Details.Media",
  "id": "Video.Details.MovieSet",
   "properties": {
   "properties": {
    "plot": {
      "default": "",
      "type": "string"
    },
     "setid": {
     "setid": {
       "$ref": "Library.Id",
       "$ref": "Library.Id",
       "required": true
       "required": true
    },
    "plot": {
      "type": "string"
     }
     }
   }
   }
}
}</syntaxhighlight>}}==== Video.Details.MovieSet.Extended ===='''Extends:'''* ''[[#Video.Details.MovieSet|Video.Details.MovieSet]]'''''Properties:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">* ''[[#List.LimitsReturned|List.LimitsReturned]]'' limits* [''array'' movies]</div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
</syntaxhighlight>}}
==== Video.Details.MovieSet.Extended ====
'''Extends:'''
* ''[[#Video.Details.MovieSet|Video.Details.MovieSet]]''
'''Properties:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
* ''[[#List.LimitsReturned|List.LimitsReturned]]'' limits
* [''array'' movies]
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
   "extends": "Video.Details.MovieSet",
   "extends": "Video.Details.MovieSet",
  "id": "Video.Details.MovieSet.Extended",
   "properties": {
   "properties": {
     "limits": {
     "limits": {
Line 15,998: Line 11,764:
     },
     },
     "movies": {
     "movies": {
      "type": "array",
       "items": {
       "items": {
         "$ref": "Video.Details.Movie"
         "$ref": "Video.Details.Movie"
       }
       },
      "type": "array"
     }
     }
   }
   }
}
}</syntaxhighlight>}}==== Video.Details.MusicVideo ===='''Extends:'''* ''[[#Video.Details.File|Video.Details.File]]'''''Properties:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">* [''string'' album]* [''[[#Array.String|Array.String]]'' artist]* [''[[#Array.String|Array.String]]'' genre]* ''[[#Library.Id|Library.Id]]'' musicvideoid* [''string'' premiered]* [''number'' rating]* [''[[#Array.String|Array.String]]'' studio]* [''[[#Array.String|Array.String]]'' tag]* [''integer'' track]* [''integer'' userrating]* [''integer'' year]</div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
</syntaxhighlight>}}
==== Video.Details.MusicVideo ====
'''Extends:'''
* ''[[#Video.Details.File|Video.Details.File]]''
'''Properties:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
* ''[[#Library.Id|Library.Id]]'' musicvideoid
* [''[[#Array.String|Array.String]]'' studio]
* [''integer'' year]
* [''string'' album]
* [''[[#Array.String|Array.String]]'' artist]
* [''[[#Array.String|Array.String]]'' genre]
* [''integer'' track]
* [''[[#Array.String|Array.String]]'' tag]
* [''number'' rating]
* [''integer'' userrating]
* [''string'' premiered]
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
   "extends": "Video.Details.File",
   "extends": "Video.Details.File",
  "id": "Video.Details.MusicVideo",
   "properties": {
   "properties": {
    "musicvideoid": {
      "$ref": "Library.Id",
      "required": true
    },
    "studio": {
      "$ref": "Array.String"
    },
    "year": {
      "type": "integer"
    },
     "album": {
     "album": {
      "default": "",
       "type": "string"
       "type": "string"
     },
     },
Line 16,046: Line 11,784:
       "$ref": "Array.String"
       "$ref": "Array.String"
     },
     },
     "track": {
     "musicvideoid": {
       "type": "integer"
      "$ref": "Library.Id",
      "required": true
    },
    "premiered": {
      "default": "",
       "type": "string"
    },
    "rating": {
      "default": 0.0,
      "type": "number"
    },
    "studio": {
      "$ref": "Array.String"
     },
     },
     "tag": {
     "tag": {
       "$ref": "Array.String"
       "$ref": "Array.String"
     },
     },
     "rating": {
     "track": {
       "type": "number"
      "default": 0,
       "type": "integer"
     },
     },
     "userrating": {
     "userrating": {
      "default": 0,
       "type": "integer"
       "type": "integer"
     },
     },
     "premiered": {
     "year": {
       "type": "string"
      "default": 0,
       "type": "integer"
     }
     }
   }
   }
}
}</syntaxhighlight>}}==== Video.Details.Season ===='''Extends:'''* ''[[#Video.Details.Base|Video.Details.Base]]'''''Properties:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">* [''integer'' episode]* ''integer'' season* ''[[#Library.Id|Library.Id]]'' seasonid* [''string'' showtitle]* [''string'' title]* [''[[#Library.Id|Library.Id]]'' tvshowid = -1]* [''integer'' userrating]* [''integer'' watchedepisodes]</div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
</syntaxhighlight>}}
==== Video.Details.Season ====
'''Extends:'''
* ''[[#Video.Details.Base|Video.Details.Base]]''
'''Properties:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
* ''[[#Library.Id|Library.Id]]'' seasonid
* ''integer'' season
* [''string'' showtitle]
* [''integer'' episode]
* [''integer'' watchedepisodes]
* [''[[#Library.Id|Library.Id]]'' tvshowid]
* [''integer'' userrating]
* [''string'' title]
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
   "extends": "Video.Details.Base",
   "extends": "Video.Details.Base",
  "id": "Video.Details.Season",
   "properties": {
   "properties": {
    "episode": {
      "default": 0,
      "type": "integer"
    },
    "season": {
      "required": true,
      "type": "integer"
    },
     "seasonid": {
     "seasonid": {
       "$ref": "Library.Id",
       "$ref": "Library.Id",
      "required": true
    },
    "season": {
      "type": "integer",
       "required": true
       "required": true
     },
     },
     "showtitle": {
     "showtitle": {
      "default": "",
       "type": "string"
       "type": "string"
     },
     },
     "episode": {
     "title": {
       "type": "integer"
       "default": "",
    },
       "type": "string"
    "watchedepisodes": {
       "type": "integer"
     },
     },
     "tvshowid": {
     "tvshowid": {
       "$ref": "Library.Id"
       "$ref": "Library.Id",
      "default": -1
     },
     },
     "userrating": {
     "userrating": {
      "default": 0,
       "type": "integer"
       "type": "integer"
     },
     },
     "title": {
     "watchedepisodes": {
       "type": "string"
      "default": 0,
       "type": "integer"
     }
     }
   }
   }
}
}</syntaxhighlight>}}==== Video.Details.TVShow ===='''Extends:'''* ''[[#Video.Details.Item|Video.Details.Item]]'''''Properties:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">* [''[[#Video.Cast|Video.Cast]]'' cast]* [''integer'' episode]* [''string'' episodeguide]* [''[[#Array.String|Array.String]]'' genre]* [''string'' imdbnumber]* [''string'' mpaa]* [''string'' originaltitle]* [''string'' premiered]* [''number'' rating]* [''any'' ratings]* [''integer'' runtime]* [''integer'' season]* [''string'' sorttitle]* [''string'' status]* [''[[#Array.String|Array.String]]'' studio]* [''[[#Array.String|Array.String]]'' tag]* ''[[#Library.Id|Library.Id]]'' tvshowid* [''[[#Media.UniqueID|Media.UniqueID]]'' uniqueid]* [''integer'' userrating]* [''string'' votes]* [''integer'' watchedepisodes]* [''integer'' year]</div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
</syntaxhighlight>}}
==== Video.Details.TVShow ====
'''Extends:'''
* ''[[#Video.Details.Item|Video.Details.Item]]''
'''Properties:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
* ''[[#Library.Id|Library.Id]]'' tvshowid
* [''[[#Array.String|Array.String]]'' genre]
* [''integer'' year]
* [''number'' rating]
* [''string'' originaltitle]
* [''string'' sorttitle]
* [''[[#Array.String|Array.String]]'' studio]
* [''string'' mpaa]
* [''[[#Video.Cast|Video.Cast]]'' cast]
* [''integer'' episode]
* [''integer'' watchedepisodes]
* [''string'' imdbnumber]
* [''string'' premiered]
* [''string'' votes]
* [''string'' episodeguide]
* [''integer'' season]
* [''[[#Array.String|Array.String]]'' tag]
* [''integer'' userrating]
* [''Video.Ratings'' ratings]
* [''integer'' runtime]
* [''string'' status]
* [''[[#Media.UniqueID|Media.UniqueID]]'' uniqueid]
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
   "extends": "Video.Details.Item",
   "extends": "Video.Details.Item",
  "id": "Video.Details.TVShow",
   "properties": {
   "properties": {
     "tvshowid": {
     "cast": {
       "$ref": "Library.Id",
       "$ref": "Video.Cast"
       "required": true
    },
    "episode": {
      "default": 0,
      "type": "integer"
    },
    "episodeguide": {
      "default": "",
       "type": "string"
     },
     },
     "genre": {
     "genre": {
       "$ref": "Array.String"
       "$ref": "Array.String"
     },
     },
     "year": {
     "imdbnumber": {
       "type": "integer"
      "default": "",
       "type": "string"
     },
     },
     "rating": {
     "mpaa": {
       "type": "number"
      "default": "",
       "type": "string"
     },
     },
     "originaltitle": {
     "originaltitle": {
      "default": "",
       "type": "string"
       "type": "string"
     },
     },
     "sorttitle": {
     "premiered": {
      "default": "",
       "type": "string"
       "type": "string"
     },
     },
     "studio": {
     "rating": {
       "$ref": "Array.String"
       "default": 0.0,
      "type": "number"
     },
     },
     "mpaa": {
     "ratings": {
       "type": "string"
      "default": null,
       "type": "any"
     },
     },
     "cast": {
     "runtime": {
       "$ref": "Video.Cast"
       "default": 0,
    },
      "description": "Runtime in seconds",
    "episode": {
       "type": "integer"
       "type": "integer"
     },
     },
     "watchedepisodes": {
     "season": {
      "default": 0,
       "type": "integer"
       "type": "integer"
     },
     },
     "imdbnumber": {
     "sorttitle": {
      "default": "",
       "type": "string"
       "type": "string"
     },
     },
     "premiered": {
     "status": {
      "default": "",
      "description": "Returns 'returning series', 'in production', 'planned', 'cancelled' or 'ended'",
       "type": "string"
       "type": "string"
     },
     },
     "votes": {
     "studio": {
       "type": "string"
       "$ref": "Array.String"
     },
     },
     "episodeguide": {
     "tag": {
       "type": "string"
       "$ref": "Array.String"
     },
     },
     "season": {
     "tvshowid": {
       "type": "integer"
       "$ref": "Library.Id",
      "required": true
     },
     },
     "tag": {
     "uniqueid": {
       "$ref": "Array.String"
       "$ref": "Media.UniqueID"
     },
     },
     "userrating": {
     "userrating": {
      "default": 0,
       "type": "integer"
       "type": "integer"
     },
     },
     "ratings": {
     "votes": {
       "type": "Video.Ratings"
      "default": "",
       "type": "string"
     },
     },
     "runtime": {
     "watchedepisodes": {
       "type": "integer",
       "default": 0,
       "description": "Runtime in seconds"
       "type": "integer"
     },
     },
     "status": {
     "year": {
       "type": "string",
       "default": 0,
       "description": "Returns 'returning series', 'in production', 'planned', 'cancelled' or 'ended'"
       "type": "integer"
    },
    "uniqueid": {
      "$ref": "Media.UniqueID"
     }
     }
   }
   }
}
}</syntaxhighlight>}}==== Video.Fields.Episode ===='''Extends:'''* ''[[#Item.Fields.Base|Item.Fields.Base]]''{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
</syntaxhighlight>}}
==== Video.Fields.Episode ====
'''Extends:'''
* ''[[#Item.Fields.Base|Item.Fields.Base]]''
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
   "extends": "Item.Fields.Base",
   "extends": "Item.Fields.Base",
  "id": "Video.Fields.Episode",
   "items": {
   "items": {
    "type": "string",
     "description": "Requesting the cast, ratings, streamdetails, uniqueid and/or tag field will result in increased response times",
     "description": "Requesting the cast, ratings, streamdetails, uniqueid and/or tag field will result in increased response times",
     "enum": [
     "enums": [
       "title",
       "title",
       "plot",
       "plot",
Line 16,255: Line 11,978:
       "seasonid",
       "seasonid",
       "ratings"
       "ratings"
     ]
     ],
    "type": "string"
   }
   }
}
}</syntaxhighlight>}}==== Video.Fields.Movie ===='''Extends:'''* ''[[#Item.Fields.Base|Item.Fields.Base]]''{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
</syntaxhighlight>}}
==== Video.Fields.Movie ====
'''Extends:'''
* ''[[#Item.Fields.Base|Item.Fields.Base]]''
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
   "extends": "Item.Fields.Base",
   "extends": "Item.Fields.Base",
  "id": "Video.Fields.Movie",
   "items": {
   "items": {
    "type": "string",
     "description": "Requesting the cast, ratings, showlink, streamdetails, uniqueid and/or tag field will result in increased response times",
     "description": "Requesting the cast, ratings, showlink, streamdetails, uniqueid and/or tag field will result in increased response times",
     "enum": [
     "enums": [
       "title",
       "title",
       "genre",
       "genre",
Line 16,306: Line 12,024:
       "premiered",
       "premiered",
       "uniqueid"
       "uniqueid"
     ]
     ],
    "type": "string"
   }
   }
}
}</syntaxhighlight>}}==== Video.Fields.MovieSet ===='''Extends:'''* ''[[#Item.Fields.Base|Item.Fields.Base]]''{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
</syntaxhighlight>}}
==== Video.Fields.MovieSet ====
'''Extends:'''
* ''[[#Item.Fields.Base|Item.Fields.Base]]''
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
   "extends": "Item.Fields.Base",
   "extends": "Item.Fields.Base",
  "id": "Video.Fields.MovieSet",
   "items": {
   "items": {
     "type": "string",
     "enums": [
    "enum": [
       "title",
       "title",
       "playcount",
       "playcount",
Line 16,325: Line 12,038:
       "art",
       "art",
       "plot"
       "plot"
     ]
     ],
    "type": "string"
   }
   }
}
}</syntaxhighlight>}}==== Video.Fields.MusicVideo ===='''Extends:'''* ''[[#Item.Fields.Base|Item.Fields.Base]]''{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
</syntaxhighlight>}}
==== Video.Fields.MusicVideo ====
'''Extends:'''
* ''[[#Item.Fields.Base|Item.Fields.Base]]''
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
   "extends": "Item.Fields.Base",
   "extends": "Item.Fields.Base",
  "id": "Video.Fields.MusicVideo",
   "items": {
   "items": {
    "type": "string",
     "description": "Requesting the streamdetails and/or tag field will result in increased response times",
     "description": "Requesting the streamdetails and/or tag field will result in increased response times",
     "enum": [
     "enums": [
       "title",
       "title",
       "playcount",
       "playcount",
Line 16,362: Line 12,070:
       "userrating",
       "userrating",
       "premiered"
       "premiered"
     ]
     ],
    "type": "string"
   }
   }
}
}</syntaxhighlight>}}==== Video.Fields.Season ===='''Extends:'''* ''[[#Item.Fields.Base|Item.Fields.Base]]''{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
</syntaxhighlight>}}
==== Video.Fields.Season ====
'''Extends:'''
* ''[[#Item.Fields.Base|Item.Fields.Base]]''
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
   "extends": "Item.Fields.Base",
   "extends": "Item.Fields.Base",
  "id": "Video.Fields.Season",
   "items": {
   "items": {
     "type": "string",
     "enums": [
    "enum": [
       "season",
       "season",
       "showtitle",
       "showtitle",
Line 16,386: Line 12,089:
       "userrating",
       "userrating",
       "title"
       "title"
     ]
     ],
    "type": "string"
   }
   }
}
}</syntaxhighlight>}}==== Video.Fields.TVShow ===='''Extends:'''* ''[[#Item.Fields.Base|Item.Fields.Base]]''{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
</syntaxhighlight>}}
==== Video.Fields.TVShow ====
'''Extends:'''
* ''[[#Item.Fields.Base|Item.Fields.Base]]''
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
   "extends": "Item.Fields.Base",
   "extends": "Item.Fields.Base",
  "id": "Video.Fields.TVShow",
   "items": {
   "items": {
    "type": "string",
     "description": "Requesting the cast, ratings, uniqueid and/or tag field will result in increased response times",
     "description": "Requesting the cast, ratings, uniqueid and/or tag field will result in increased response times",
     "enum": [
     "enums": [
       "title",
       "title",
       "genre",
       "genre",
Line 16,429: Line 12,127:
       "runtime",
       "runtime",
       "uniqueid"
       "uniqueid"
     ]
     ],
    "type": "string"
   }
   }
}
}</syntaxhighlight>}}==== Video.Rating ===='''Type:''' ''object''<br />'''Properties:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">* [''boolean'' default]* ''number'' rating* [''integer'' votes]</div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
</syntaxhighlight>}}
   "id": "Video.Rating",
==== Video.Rating ====
'''Type:''' ''object''
<br />
'''Properties:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
* ''number'' rating
* [''integer'' votes]
* [''boolean'' default]
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
   "type": "object",
   "properties": {
   "properties": {
    "default": {
      "default": false,
      "type": "boolean"
    },
     "rating": {
     "rating": {
       "type": "number",
       "required": true,
       "required": true
       "type": "number"
     },
     },
     "votes": {
     "votes": {
      "default": 0,
       "type": "integer"
       "type": "integer"
     },
     }
    "default": {
  },
      "type": "boolean"
  "type": "object"
    }
}</syntaxhighlight>}}==== Video.Ratings ===='''Type:''' ''object''<br />{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
  }
}
</syntaxhighlight>}}
==== Video.Ratings ====
'''Type:''' ''object''
<br />
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
  "type": "object",
   "additionalProperties": {
   "additionalProperties": {
     "$ref": "Video.Rating"
     "$ref": "Video.Rating"
   }
   },
}
  "id": "Video.Ratings",
</syntaxhighlight>}}
  "type": "object"
==== Video.Ratings.Set ====
}</syntaxhighlight>}}==== Video.Ratings.Set ===='''Type:''' ''object''<br />{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
'''Type:''' ''object''
<br />
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
  "type": "object",
   "additionalProperties": {
   "additionalProperties": {
    "default": null,
     "type": [
     "type": [
      "null",
       {
       {
         "$ref": "Video.Rating",
         "type": "null"
         "required": true
      },
      {
         "$ref": "Video.Rating"
       }
       }
     ]
     ]
   }
   },
}
  "id": "Video.Ratings.Set",
</syntaxhighlight>}}
  "type": "object"
==== Video.Resume ====
}</syntaxhighlight>}}==== Video.Resume ===='''Type:''' ''object''<br />'''Properties:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">* [''number'' position]* [''number'' total]</div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
'''Type:''' ''object''
  "additionalProperties": false,
<br />
   "id": "Video.Resume",
'''Properties:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
* [''number'' position]
* [''number'' total]
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
   "type": "object",
   "properties": {
   "properties": {
     "position": {
     "position": {
       "type": "number",
       "default": 0.0,
       "minimum": 0.0
       "minimum": 0.0,
      "type": "number"
     },
     },
     "total": {
     "total": {
       "type": "number",
       "default": 0.0,
       "minimum": 0.0
       "minimum": 0.0,
      "type": "number"
     }
     }
   },
   },
   "additionalProperties": false
   "type": "object"
}
}</syntaxhighlight>}}==== Video.Streams ===='''Type:''' ''object''<br />'''Properties:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">* [''array'' audio]* [''array'' subtitle]* [''array'' video]</div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
</syntaxhighlight>}}
  "additionalProperties": false,
==== Video.Streams ====
   "id": "Video.Streams",
'''Type:''' ''object''
<br />
'''Properties:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
* [''array'' audio]
* [''array'' video]
* [''array'' subtitle]
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
   "type": "object",
   "properties": {
   "properties": {
     "audio": {
     "audio": {
      "type": "array",
      "minItems": 1,
       "items": {
       "items": {
         "type": "object",
         "additionalProperties": false,
         "properties": {
         "properties": {
          "channels": {
            "default": 0,
            "type": "integer"
          },
           "codec": {
           "codec": {
            "default": "",
             "type": "string"
             "type": "string"
           },
           },
           "language": {
           "language": {
            "default": "",
            "type": "string"
          }
        },
        "type": "object"
      },
      "minItems": 1,
      "type": "array"
    },
    "subtitle": {
      "items": {
        "additionalProperties": false,
        "properties": {
          "language": {
            "default": "",
             "type": "string"
             "type": "string"
          },
          "channels": {
            "type": "integer"
           }
           }
         },
         },
         "additionalProperties": false
         "type": "object"
       }
       },
      "minItems": 1,
      "type": "array"
     },
     },
     "video": {
     "video": {
      "type": "array",
      "minItems": 1,
       "items": {
       "items": {
         "type": "object",
         "additionalProperties": false,
         "properties": {
         "properties": {
          "aspect": {
            "default": 0.0,
            "type": "number"
          },
           "codec": {
           "codec": {
            "default": "",
             "type": "string"
             "type": "string"
           },
           },
           "aspect": {
           "duration": {
             "type": "number"
             "default": 0,
          },
          "width": {
             "type": "integer"
             "type": "integer"
           },
           },
           "height": {
           "height": {
            "default": 0,
             "type": "integer"
             "type": "integer"
           },
           },
           "duration": {
           "width": {
            "default": 0,
             "type": "integer"
             "type": "integer"
           }
           }
         },
         },
         "additionalProperties": false
         "type": "object"
      }
       },
    },
    "subtitle": {
       "type": "array",
       "minItems": 1,
       "minItems": 1,
       "items": {
       "type": "array"
        "type": "object",
        "properties": {
          "language": {
            "type": "string"
          }
        },
        "additionalProperties": false
      }
     }
     }
   },
   },
   "additionalProperties": false
   "type": "object"
}
}</syntaxhighlight>}}== Notifications ===== Application ======= Application.OnVolumeChanged ====The volume of the application has changed.<br />'''Parameters:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA"># ''string'' sender# ''object'' data:#* ''boolean'' muted#* ''integer'' volume</div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
</syntaxhighlight>}}
== Notifications ==
=== Application ===
==== Application.OnVolumeChanged ====
The volume of the application has changed.<br />
'''Parameters:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
# ''string'' sender
# ''object'' data:
#* ''integer'' volume
#* ''boolean'' muted
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
  "type": "notification",
   "description": "The volume of the application has changed.",
   "description": "The volume of the application has changed.",
   "params": [
   "params": [
     {
     {
       "name": "sender",
       "name": "sender",
       "type": "string",
       "required": true,
       "required": true
       "type": "string"
     },
     },
     {
     {
       "name": "data",
       "name": "data",
      "type": "object",
      "required": true,
       "properties": {
       "properties": {
        "muted": {
          "required": true,
          "type": "boolean"
        },
         "volume": {
         "volume": {
           "type": "integer",
           "maximum": 100,
           "minimum": 0,
           "minimum": 0,
          "maximum": 100,
           "required": true,
           "required": true
           "type": "integer"
        },
        "muted": {
           "type": "boolean",
          "required": true
         }
         }
       }
       },
      "required": true,
      "type": "object"
     }
     }
   ],
   ],
   "returns": null
   "returns": null,
}
  "type": "notification"
</syntaxhighlight>}}
}</syntaxhighlight>}}=== AudioLibrary ======= AudioLibrary.OnCleanFinished ====The audio library has been cleaned.<br />'''Parameters:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA"># ''string'' sender# ''string'' data</div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
=== AudioLibrary ===
==== AudioLibrary.OnCleanFinished ====
The audio library has been cleaned.<br />
'''Parameters:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
# ''string'' sender
# ''string'' data
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
  "type": "notification",
   "description": "The audio library has been cleaned.",
   "description": "The audio library has been cleaned.",
   "params": [
   "params": [
     {
     {
       "name": "sender",
       "name": "sender",
       "type": "string",
       "required": true,
       "required": true
       "type": "string"
     },
     },
     {
     {
       "name": "data",
       "name": "data",
       "type": "null",
       "required": true,
       "required": true
       "type": "null"
     }
     }
   ],
   ],
   "returns": null
   "returns": null,
}
  "type": "notification"
</syntaxhighlight>}}
}</syntaxhighlight>}}==== AudioLibrary.OnCleanStarted ====An audio library clean operation has started.<br />'''Parameters:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA"># ''string'' sender# ''string'' data</div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
==== AudioLibrary.OnCleanStarted ====
An audio library clean operation has started.<br />
'''Parameters:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
# ''string'' sender
# ''string'' data
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
  "type": "notification",
   "description": "An audio library clean operation has started.",
   "description": "An audio library clean operation has started.",
   "params": [
   "params": [
     {
     {
       "name": "sender",
       "name": "sender",
       "type": "string",
       "required": true,
       "required": true
       "type": "string"
     },
     },
     {
     {
       "name": "data",
       "name": "data",
       "type": "null",
       "required": true,
       "required": true
       "type": "null"
     }
     }
   ],
   ],
   "returns": null
   "returns": null,
}
  "type": "notification"
</syntaxhighlight>}}
}</syntaxhighlight>}}==== AudioLibrary.OnExport ====An audio library export has finished.<br />'''Parameters:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA"># ''string'' sender# [''object'' data]:#* [''integer'' failcount = 0]#* [''string'' file = ""]</div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
==== AudioLibrary.OnExport ====
An audio library export has finished.<br />
'''Parameters:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
# ''string'' sender
# [''object'' data]:
#* [''string'' file = ""]
#* [''integer'' failcount = 0]
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
  "type": "notification",
   "description": "An audio library export has finished.",
   "description": "An audio library export has finished.",
   "params": [
   "params": [
     {
     {
       "name": "sender",
       "name": "sender",
       "type": "string",
       "required": true,
       "required": true
       "type": "string"
     },
     },
     {
     {
       "name": "data",
       "name": "data",
      "type": "object",
      "required": false,
       "properties": {
       "properties": {
         "file": {
         "failcount": {
           "type": "string",
           "default": 0,
          "minimum": 0,
           "required": false,
           "required": false,
           "default": ""
           "type": "integer"
         },
         },
         "failcount": {
         "file": {
           "type": "integer",
           "default": "",
          "minimum": 0,
           "required": false,
           "required": false,
           "default": 0
           "type": "string"
         }
         }
       }
       },
      "required": false,
      "type": "object"
     }
     }
   ],
   ],
   "returns": null
   "returns": null,
}
  "type": "notification"
</syntaxhighlight>}}
}</syntaxhighlight>}}==== AudioLibrary.OnRemove ====An audio item has been removed.<br />'''Parameters:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA"># ''string'' sender# ''object'' data:#* ''[[#Library.Id|Library.Id]]'' id#* ''[[#Optional.Boolean|Optional.Boolean]]'' transaction#* ''[[#Notifications.Library.Audio.Type|Notifications.Library.Audio.Type]]'' type</div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
==== AudioLibrary.OnRemove ====
An audio item has been removed.<br />
'''Parameters:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
# ''string'' sender
# ''object'' data:
#* ''[[#Library.Id|Library.Id]]'' id
#* ''[[#Notifications.Library.Audio.Type|Notifications.Library.Audio.Type]]'' type
#* ''[[#Optional.Boolean|Optional.Boolean]]'' transaction
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
  "type": "notification",
   "description": "An audio item has been removed.",
   "description": "An audio item has been removed.",
   "params": [
   "params": [
     {
     {
       "name": "sender",
       "name": "sender",
       "type": "string",
       "required": true,
       "required": true
       "type": "string"
     },
     },
     {
     {
       "name": "data",
       "name": "data",
      "type": "object",
      "required": true,
       "properties": {
       "properties": {
         "id": {
         "id": {
           "$ref": "Library.Id",
           "$ref": "Library.Id",
           "required": true
           "required": true
        },
        "transaction": {
          "$ref": "Optional.Boolean",
          "description": "True if the removal is being performed within a transaction."
         },
         },
         "type": {
         "type": {
           "$ref": "Notifications.Library.Audio.Type",
           "$ref": "Notifications.Library.Audio.Type",
           "required": true
           "required": true
        },
        "transaction": {
          "$ref": "Optional.Boolean",
          "description": "True if the removal is being performed within a transaction."
         }
         }
       }
       },
      "required": true,
      "type": "object"
     }
     }
   ],
   ],
   "returns": null
   "returns": null,
}
  "type": "notification"
</syntaxhighlight>}}
}</syntaxhighlight>}}==== AudioLibrary.OnScanFinished ====Scanning the audio library has been finished.<br />'''Parameters:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA"># ''string'' sender# ''string'' data</div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
==== AudioLibrary.OnScanFinished ====
Scanning the audio library has been finished.<br />
'''Parameters:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
# ''string'' sender
# ''string'' data
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
  "type": "notification",
   "description": "Scanning the audio library has been finished.",
   "description": "Scanning the audio library has been finished.",
   "params": [
   "params": [
     {
     {
       "name": "sender",
       "name": "sender",
       "type": "string",
       "required": true,
       "required": true
       "type": "string"
     },
     },
     {
     {
       "name": "data",
       "name": "data",
       "type": "null",
       "required": true,
       "required": true
       "type": "null"
     }
     }
   ],
   ],
   "returns": null
   "returns": null,
}
  "type": "notification"
</syntaxhighlight>}}
}</syntaxhighlight>}}==== AudioLibrary.OnScanStarted ====An audio library scan has started.<br />'''Parameters:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA"># ''string'' sender# ''string'' data</div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
==== AudioLibrary.OnScanStarted ====
An audio library scan has started.<br />
'''Parameters:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
# ''string'' sender
# ''string'' data
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
  "type": "notification",
   "description": "An audio library scan has started.",
   "description": "An audio library scan has started.",
   "params": [
   "params": [
     {
     {
       "name": "sender",
       "name": "sender",
       "type": "string",
       "required": true,
       "required": true
       "type": "string"
     },
     },
     {
     {
       "name": "data",
       "name": "data",
       "type": "null",
       "required": true,
       "required": true
       "type": "null"
     }
     }
   ],
   ],
   "returns": null
   "returns": null,
}
  "type": "notification"
</syntaxhighlight>}}
}</syntaxhighlight>}}==== AudioLibrary.OnUpdate ====An audio item has been updated.<br />'''Parameters:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA"># ''string'' sender# ''object'' data:#* ''[[#Optional.Boolean|Optional.Boolean]]'' added#* ''[[#Library.Id|Library.Id]]'' id#* ''[[#Optional.Boolean|Optional.Boolean]]'' transaction#* ''string'' type</div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
==== AudioLibrary.OnUpdate ====
An audio item has been updated.<br />
'''Parameters:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
# ''string'' sender
# ''object'' data:
#* ''[[#Library.Id|Library.Id]]'' id
#* ''string'' type
#* ''[[#Optional.Boolean|Optional.Boolean]]'' transaction
#* ''[[#Optional.Boolean|Optional.Boolean]]'' added
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
  "type": "notification",
   "description": "An audio item has been updated.",
   "description": "An audio item has been updated.",
   "params": [
   "params": [
     {
     {
       "name": "sender",
       "name": "sender",
       "type": "string",
       "required": true,
       "required": true
       "type": "string"
     },
     },
     {
     {
       "name": "data",
       "name": "data",
      "type": "object",
      "required": true,
       "properties": {
       "properties": {
        "added": {
          "$ref": "Optional.Boolean",
          "description": "True if the update is for a newly added item."
        },
         "id": {
         "id": {
           "$ref": "Library.Id",
           "$ref": "Library.Id",
           "required": true
           "required": true
        },
        "transaction": {
          "$ref": "Optional.Boolean",
          "description": "True if the update is being performed within a transaction."
         },
         },
         "type": {
         "type": {
          "type": "string",
          "id": "Notifications.Library.Audio.Type",
           "enum": [
           "enum": [
             "song"
             "song"
           ],
           ],
           "required": true
           "id": "Notifications.Library.Audio.Type",
        },
           "required": true,
        "transaction": {
           "type": "string"
          "$ref": "Optional.Boolean",
          "description": "True if the update is being performed within a transaction."
        },
        "added": {
           "$ref": "Optional.Boolean",
           "description": "True if the update is for a newly added item."
         }
         }
       }
       },
      "required": true,
      "type": "object"
     }
     }
   ],
   ],
   "returns": null
   "returns": null,
}
  "type": "notification"
</syntaxhighlight>}}
}</syntaxhighlight>}}=== GUI ======= GUI.OnDPMSActivated ====Energy saving/DPMS has been activated.<br />'''Parameters:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA"># ''string'' sender# ''string'' data</div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
=== GUI ===
==== GUI.OnDPMSActivated ====
Energy saving/DPMS has been activated.<br />
'''Parameters:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
# ''string'' sender
# ''string'' data
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
  "type": "notification",
   "description": "Energy saving/DPMS has been activated.",
   "description": "Energy saving/DPMS has been activated.",
   "params": [
   "params": [
     {
     {
       "name": "sender",
       "name": "sender",
       "type": "string",
       "required": true,
       "required": true
       "type": "string"
     },
     },
     {
     {
       "name": "data",
       "name": "data",
       "type": "null",
       "required": true,
       "required": true
       "type": "null"
     }
     }
   ],
   ],
   "returns": null
   "returns": null,
}
  "type": "notification"
</syntaxhighlight>}}
}</syntaxhighlight>}}==== GUI.OnDPMSDeactivated ====Energy saving/DPMS has been deactivated.<br />'''Parameters:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA"># ''string'' sender# ''string'' data</div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
==== GUI.OnDPMSDeactivated ====
Energy saving/DPMS has been deactivated.<br />
'''Parameters:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
# ''string'' sender
# ''string'' data
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
  "type": "notification",
   "description": "Energy saving/DPMS has been deactivated.",
   "description": "Energy saving/DPMS has been deactivated.",
   "params": [
   "params": [
     {
     {
       "name": "sender",
       "name": "sender",
       "type": "string",
       "required": true,
       "required": true
       "type": "string"
     },
     },
     {
     {
       "name": "data",
       "name": "data",
       "type": "null",
       "required": true,
       "required": true
       "type": "null"
     }
     }
   ],
   ],
   "returns": null
   "returns": null,
}
  "type": "notification"
</syntaxhighlight>}}
}</syntaxhighlight>}}==== GUI.OnScreensaverActivated ====The screensaver has been activated.<br />'''Parameters:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA"># ''string'' sender# ''string'' data</div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
==== GUI.OnScreensaverActivated ====
The screensaver has been activated.<br />
'''Parameters:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
# ''string'' sender
# ''string'' data
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
  "type": "notification",
   "description": "The screensaver has been activated.",
   "description": "The screensaver has been activated.",
   "params": [
   "params": [
     {
     {
       "name": "sender",
       "name": "sender",
       "type": "string",
       "required": true,
       "required": true
       "type": "string"
     },
     },
     {
     {
       "name": "data",
       "name": "data",
       "type": "null",
       "required": true,
       "required": true
       "type": "null"
     }
     }
   ],
   ],
   "returns": null
   "returns": null,
}
  "type": "notification"
</syntaxhighlight>}}
}</syntaxhighlight>}}==== GUI.OnScreensaverDeactivated ====The screensaver has been deactivated.<br />'''Parameters:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA"># ''string'' sender# ''object'' data:#* ''boolean'' shuttingdown</div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
==== GUI.OnScreensaverDeactivated ====
The screensaver has been deactivated.<br />
'''Parameters:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
# ''string'' sender
# ''object'' data:
#* ''boolean'' shuttingdown
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
  "type": "notification",
   "description": "The screensaver has been deactivated.",
   "description": "The screensaver has been deactivated.",
   "params": [
   "params": [
     {
     {
       "name": "sender",
       "name": "sender",
       "type": "string",
       "required": true,
       "required": true
       "type": "string"
     },
     },
     {
     {
       "name": "data",
       "name": "data",
      "type": "object",
      "required": true,
       "properties": {
       "properties": {
         "shuttingdown": {
         "shuttingdown": {
           "type": "boolean",
           "required": true,
           "required": true
           "type": "boolean"
         }
         }
       }
       },
      "required": true,
      "type": "object"
     }
     }
   ],
   ],
   "returns": null
   "returns": null,
}
  "type": "notification"
</syntaxhighlight>}}
}</syntaxhighlight>}}=== Input ======= Input.OnInputFinished ====The user has provided the requested input.<br />'''Parameters:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA"># ''string'' sender# ''string'' data</div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
=== Input ===
==== Input.OnInputFinished ====
The user has provided the requested input.<br />
'''Parameters:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
# ''string'' sender
# ''string'' data
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
  "type": "notification",
   "description": "The user has provided the requested input.",
   "description": "The user has provided the requested input.",
   "params": [
   "params": [
     {
     {
       "name": "sender",
       "name": "sender",
       "type": "string",
       "required": true,
       "required": true
       "type": "string"
     },
     },
     {
     {
       "name": "data",
       "name": "data",
       "type": "null",
       "required": true,
       "required": true
       "type": "null"
     }
     }
   ],
   ],
   "returns": null
   "returns": null,
}
  "type": "notification"
</syntaxhighlight>}}
}</syntaxhighlight>}}==== Input.OnInputRequested ====The user is requested to provide some information.<br />'''Parameters:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA"># ''string'' sender# ''object'' data:#* ''string'' title#* ''string'' type#* ''string'' value</div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
==== Input.OnInputRequested ====
The user is requested to provide some information.<br />
'''Parameters:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
# ''string'' sender
# ''object'' data:
#* ''string'' type
#* ''string'' value
#* ''string'' title
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
  "type": "notification",
   "description": "The user is requested to provide some information.",
   "description": "The user is requested to provide some information.",
   "params": [
   "params": [
     {
     {
       "name": "sender",
       "name": "sender",
       "type": "string",
       "required": true,
       "required": true
       "type": "string"
     },
     },
     {
     {
       "name": "data",
       "name": "data",
      "type": "object",
      "required": true,
       "properties": {
       "properties": {
        "title": {
          "type": "string"
        },
         "type": {
         "type": {
          "type": "string",
           "enum": [
           "enum": [
             "keyboard",
             "keyboard",
Line 17,044: Line 12,555:
             "seconds"
             "seconds"
           ],
           ],
           "required": true
           "required": true,
          "type": "string"
         },
         },
         "value": {
         "value": {
          "type": "string",
           "required": true,
           "required": true
        },
        "title": {
           "type": "string"
           "type": "string"
         }
         }
       }
       },
      "required": true,
      "type": "object"
     }
     }
   ],
   ],
   "returns": null
   "returns": null,
}
  "type": "notification"
</syntaxhighlight>}}
}</syntaxhighlight>}}=== Player ======= Player.OnAVChange ====Audio- or videostream has changed. If there is no ID available extra information will be provided.<br />'''Parameters:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA"># ''string'' sender# ''[[#Player.Notifications.Data|Player.Notifications.Data]]'' data</div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
=== Player ===
==== Player.OnAVChange ====
Audio- or videostream has changed. If there is no ID available extra information will be provided.<br />
'''Parameters:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
# ''string'' sender
# ''[[#Player.Notifications.Data|Player.Notifications.Data]]'' data
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
  "type": "notification",
   "description": "Audio- or videostream has changed. If there is no ID available extra information will be provided.",
   "description": "Audio- or videostream has changed. If there is no ID available extra information will be provided.",
   "params": [
   "params": [
     {
     {
       "name": "sender",
       "name": "sender",
       "type": "string",
       "required": true,
       "required": true
       "type": "string"
     },
     },
     {
     {
      "$ref": "Player.Notifications.Data",
       "name": "data",
       "name": "data",
      "$ref": "Player.Notifications.Data",
       "required": true
       "required": true
     }
     }
   ],
   ],
   "returns": null
   "returns": null,
}
  "type": "notification"
</syntaxhighlight>}}
}</syntaxhighlight>}}==== Player.OnAVStart ====Playback of a media item has been started and first frame is available. If there is no ID available extra information will be provided.<br />'''Parameters:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA"># ''string'' sender# ''[[#Player.Notifications.Data|Player.Notifications.Data]]'' data</div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
==== Player.OnAVStart ====
Playback of a media item has been started and first frame is available. If there is no ID available extra information will be provided.<br />
'''Parameters:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
# ''string'' sender
# ''[[#Player.Notifications.Data|Player.Notifications.Data]]'' data
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
  "type": "notification",
   "description": "Playback of a media item has been started and first frame is available. If there is no ID available extra information will be provided.",
   "description": "Playback of a media item has been started and first frame is available. If there is no ID available extra information will be provided.",
   "params": [
   "params": [
     {
     {
       "name": "sender",
       "name": "sender",
       "type": "string",
       "required": true,
       "required": true
       "type": "string"
     },
     },
     {
     {
      "$ref": "Player.Notifications.Data",
       "name": "data",
       "name": "data",
      "$ref": "Player.Notifications.Data",
       "required": true
       "required": true
     }
     }
   ],
   ],
   "returns": null
   "returns": null,
}
  "type": "notification"
</syntaxhighlight>}}
}</syntaxhighlight>}}==== Player.OnPause ====Playback of a media item has been paused. If there is no ID available extra information will be provided.<br />'''Parameters:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA"># ''string'' sender# ''[[#Player.Notifications.Data|Player.Notifications.Data]]'' data</div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
==== Player.OnPause ====
Playback of a media item has been paused. If there is no ID available extra information will be provided.<br />
'''Parameters:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
# ''string'' sender
# ''[[#Player.Notifications.Data|Player.Notifications.Data]]'' data
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
  "type": "notification",
   "description": "Playback of a media item has been paused. If there is no ID available extra information will be provided.",
   "description": "Playback of a media item has been paused. If there is no ID available extra information will be provided.",
   "params": [
   "params": [
     {
     {
       "name": "sender",
       "name": "sender",
       "type": "string",
       "required": true,
       "required": true
       "type": "string"
     },
     },
     {
     {
      "$ref": "Player.Notifications.Data",
       "name": "data",
       "name": "data",
      "$ref": "Player.Notifications.Data",
       "required": true
       "required": true
     }
     }
   ],
   ],
   "returns": null
   "returns": null,
}
  "type": "notification"
</syntaxhighlight>}}
}</syntaxhighlight>}}==== Player.OnPlay ====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.<br />'''Parameters:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA"># ''string'' sender# ''[[#Player.Notifications.Data|Player.Notifications.Data]]'' data</div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
==== Player.OnPlay ====
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.<br />
'''Parameters:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
# ''string'' sender
# ''[[#Player.Notifications.Data|Player.Notifications.Data]]'' data
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
  "type": "notification",
   "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.",
   "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.",
   "params": [
   "params": [
     {
     {
       "name": "sender",
       "name": "sender",
       "type": "string",
       "required": true,
       "required": true
       "type": "string"
     },
     },
     {
     {
      "$ref": "Player.Notifications.Data",
       "name": "data",
       "name": "data",
      "$ref": "Player.Notifications.Data",
       "required": true
       "required": true
     }
     }
   ],
   ],
   "returns": null
   "returns": null,
}
  "type": "notification"
</syntaxhighlight>}}
}</syntaxhighlight>}}==== Player.OnPropertyChanged ====A property of the playing items has changed.<br />'''Parameters:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA"># ''string'' sender# ''object'' data:#* ''[[#Player.Notifications.Player|Player.Notifications.Player]]'' player#* ''[[#Player.Property.Value|Player.Property.Value]]'' property</div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
==== Player.OnPropertyChanged ====
A property of the playing items has changed.<br />
'''Parameters:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
# ''string'' sender
# ''object'' data:
#* ''[[#Player.Property.Value|Player.Property.Value]]'' property
#* ''[[#Player.Notifications.Player|Player.Notifications.Player]]'' player
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
  "type": "notification",
   "description": "A property of the playing items has changed.",
   "description": "A property of the playing items has changed.",
   "params": [
   "params": [
     {
     {
       "name": "sender",
       "name": "sender",
       "type": "string",
       "required": true,
       "required": true
       "type": "string"
     },
     },
     {
     {
       "name": "data",
       "name": "data",
      "type": "object",
      "required": true,
       "properties": {
       "properties": {
        "property": {
          "$ref": "Player.Property.Value"
        },
         "player": {
         "player": {
           "$ref": "Player.Notifications.Player",
           "$ref": "Player.Notifications.Player",
           "required": true
           "required": true
        },
        "property": {
          "$ref": "Player.Property.Value"
         }
         }
       }
       },
      "required": true,
      "type": "object"
     }
     }
   ],
   ],
   "returns": null
   "returns": null,
}
  "type": "notification"
</syntaxhighlight>}}
}</syntaxhighlight>}}==== Player.OnResume ====Playback of a media item has been resumed. If there is no ID available extra information will be provided.<br />'''Parameters:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA"># ''string'' sender# ''[[#Player.Notifications.Data|Player.Notifications.Data]]'' data</div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
==== Player.OnResume ====
Playback of a media item has been resumed. If there is no ID available extra information will be provided.<br />
'''Parameters:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
# ''string'' sender
# ''[[#Player.Notifications.Data|Player.Notifications.Data]]'' data
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
  "type": "notification",
   "description": "Playback of a media item has been resumed. If there is no ID available extra information will be provided.",
   "description": "Playback of a media item has been resumed. If there is no ID available extra information will be provided.",
   "params": [
   "params": [
     {
     {
       "name": "sender",
       "name": "sender",
       "type": "string",
       "required": true,
       "required": true
       "type": "string"
     },
     },
     {
     {
      "$ref": "Player.Notifications.Data",
       "name": "data",
       "name": "data",
      "$ref": "Player.Notifications.Data",
       "required": true
       "required": true
     }
     }
   ],
   ],
   "returns": null
   "returns": null,
}
  "type": "notification"
</syntaxhighlight>}}
}</syntaxhighlight>}}==== Player.OnSeek ====The playback position has been changed. If there is no ID available extra information will be provided.<br />'''Parameters:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA"># ''string'' sender# ''object'' data:#* ''[[#Notifications.Item|Notifications.Item]]'' item#* ''[[#Player.Notifications.Player.Seek|Player.Notifications.Player.Seek]]'' player</div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
==== Player.OnSeek ====
The playback position has been changed. If there is no ID available extra information will be provided.<br />
'''Parameters:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
# ''string'' sender
# ''object'' data:
#* ''[[#Notifications.Item|Notifications.Item]]'' item
#* ''[[#Player.Notifications.Player.Seek|Player.Notifications.Player.Seek]]'' player
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
  "type": "notification",
   "description": "The playback position has been changed. If there is no ID available extra information will be provided.",
   "description": "The playback position has been changed. If there is no ID available extra information will be provided.",
   "params": [
   "params": [
     {
     {
       "name": "sender",
       "name": "sender",
       "type": "string",
       "required": true,
       "required": true
       "type": "string"
     },
     },
     {
     {
       "name": "data",
       "name": "data",
      "type": "object",
      "required": true,
       "properties": {
       "properties": {
         "item": {
         "item": {
Line 17,258: Line 12,692:
           "required": true
           "required": true
         }
         }
       }
       },
      "required": true,
      "type": "object"
     }
     }
   ],
   ],
   "returns": null
   "returns": null,
}
  "type": "notification"
</syntaxhighlight>}}
}</syntaxhighlight>}}==== Player.OnSpeedChanged ====Speed of the playback of a media item has been changed. If there is no ID available extra information will be provided.<br />'''Parameters:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA"># ''string'' sender# ''[[#Player.Notifications.Data|Player.Notifications.Data]]'' data</div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
==== Player.OnSpeedChanged ====
Speed of the playback of a media item has been changed. If there is no ID available extra information will be provided.<br />
'''Parameters:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
# ''string'' sender
# ''[[#Player.Notifications.Data|Player.Notifications.Data]]'' data
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
  "type": "notification",
   "description": "Speed of the playback of a media item has been changed. If there is no ID available extra information will be provided.",
   "description": "Speed of the playback of a media item has been changed. If there is no ID available extra information will be provided.",
   "params": [
   "params": [
     {
     {
       "name": "sender",
       "name": "sender",
       "type": "string",
       "required": true,
       "required": true
       "type": "string"
     },
     },
     {
     {
      "$ref": "Player.Notifications.Data",
       "name": "data",
       "name": "data",
      "$ref": "Player.Notifications.Data",
       "required": true
       "required": true
     }
     }
   ],
   ],
   "returns": null
   "returns": null,
}
  "type": "notification"
</syntaxhighlight>}}
}</syntaxhighlight>}}==== Player.OnStop ====Playback of a media item has been stopped. If there is no ID available extra information will be provided.<br />'''Parameters:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA"># ''string'' sender# ''object'' data:#* ''boolean'' end#* ''[[#Notifications.Item|Notifications.Item]]'' item</div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
==== Player.OnStop ====
Playback of a media item has been stopped. If there is no ID available extra information will be provided.<br />
'''Parameters:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
# ''string'' sender
# ''object'' data:
#* ''[[#Notifications.Item|Notifications.Item]]'' item
#* ''boolean'' end
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
  "type": "notification",
   "description": "Playback of a media item has been stopped. If there is no ID available extra information will be provided.",
   "description": "Playback of a media item has been stopped. If there is no ID available extra information will be provided.",
   "params": [
   "params": [
     {
     {
       "name": "sender",
       "name": "sender",
       "type": "string",
       "required": true,
       "required": true
       "type": "string"
     },
     },
     {
     {
       "name": "data",
       "name": "data",
      "type": "object",
      "required": true,
       "properties": {
       "properties": {
        "end": {
          "description": "Whether the player has reached the end of the playable item(s) or not",
          "required": true,
          "type": "boolean"
        },
         "item": {
         "item": {
           "$ref": "Notifications.Item"
           "$ref": "Notifications.Item"
        },
        "end": {
          "type": "boolean",
          "required": true,
          "description": "Whether the player has reached the end of the playable item(s) or not"
         }
         }
       }
       },
      "required": true,
      "type": "object"
     }
     }
   ],
   ],
   "returns": null
   "returns": null,
}
  "type": "notification"
</syntaxhighlight>}}
}</syntaxhighlight>}}=== Playlist ======= Playlist.OnAdd ====A playlist item has been added.<br />'''Parameters:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA"># ''string'' sender# ''object'' data:#* ''[[#Notifications.Item|Notifications.Item]]'' item#* ''[[#Playlist.Id|Playlist.Id]]'' playlistid#* ''[[#Playlist.Position|Playlist.Position]]'' position</div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
=== Playlist ===
==== Playlist.OnAdd ====
A playlist item has been added.<br />
'''Parameters:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
# ''string'' sender
# ''object'' data:
#* ''[[#Playlist.Id|Playlist.Id]]'' playlistid
#* ''[[#Notifications.Item|Notifications.Item]]'' item
#* ''[[#Playlist.Position|Playlist.Position]]'' position
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
  "type": "notification",
   "description": "A playlist item has been added.",
   "description": "A playlist item has been added.",
   "params": [
   "params": [
     {
     {
       "name": "sender",
       "name": "sender",
       "type": "string",
       "required": true,
       "required": true
       "type": "string"
     },
     },
     {
     {
       "name": "data",
       "name": "data",
      "type": "object",
      "required": true,
       "properties": {
       "properties": {
        "item": {
          "$ref": "Notifications.Item"
        },
         "playlistid": {
         "playlistid": {
           "$ref": "Playlist.Id",
           "$ref": "Playlist.Id",
           "required": true
           "required": true
        },
        "item": {
          "$ref": "Notifications.Item"
         },
         },
         "position": {
         "position": {
           "$ref": "Playlist.Position"
           "$ref": "Playlist.Position"
         }
         }
       }
       },
      "required": true,
      "type": "object"
     }
     }
   ],
   ],
   "returns": null
   "returns": null,
}
  "type": "notification"
</syntaxhighlight>}}
}</syntaxhighlight>}}==== Playlist.OnClear ====A playlist item has been cleared.<br />'''Parameters:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA"># ''string'' sender# ''object'' data:#* ''[[#Playlist.Id|Playlist.Id]]'' playlistid</div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
==== Playlist.OnClear ====
A playlist item has been cleared.<br />
'''Parameters:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
# ''string'' sender
# ''object'' data:
#* ''[[#Playlist.Id|Playlist.Id]]'' playlistid
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
  "type": "notification",
   "description": "A playlist item has been cleared.",
   "description": "A playlist item has been cleared.",
   "params": [
   "params": [
     {
     {
       "name": "sender",
       "name": "sender",
       "type": "string",
       "required": true,
       "required": true
       "type": "string"
     },
     },
     {
     {
       "name": "data",
       "name": "data",
      "type": "object",
      "required": true,
       "properties": {
       "properties": {
         "playlistid": {
         "playlistid": {
Line 17,397: Line 12,784:
           "required": true
           "required": true
         }
         }
       }
       },
      "required": true,
      "type": "object"
     }
     }
   ],
   ],
   "returns": null
   "returns": null,
}
  "type": "notification"
</syntaxhighlight>}}
}</syntaxhighlight>}}==== Playlist.OnRemove ====A playlist item has been removed.<br />'''Parameters:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA"># ''string'' sender# ''object'' data:#* ''[[#Playlist.Id|Playlist.Id]]'' playlistid#* ''[[#Playlist.Position|Playlist.Position]]'' position</div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
==== Playlist.OnRemove ====
A playlist item has been removed.<br />
'''Parameters:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
# ''string'' sender
# ''object'' data:
#* ''[[#Playlist.Id|Playlist.Id]]'' playlistid
#* ''[[#Playlist.Position|Playlist.Position]]'' position
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
  "type": "notification",
   "description": "A playlist item has been removed.",
   "description": "A playlist item has been removed.",
   "params": [
   "params": [
     {
     {
       "name": "sender",
       "name": "sender",
       "type": "string",
       "required": true,
       "required": true
       "type": "string"
     },
     },
     {
     {
       "name": "data",
       "name": "data",
      "type": "object",
      "required": true,
       "properties": {
       "properties": {
         "playlistid": {
         "playlistid": {
Line 17,434: Line 12,809:
           "$ref": "Playlist.Position"
           "$ref": "Playlist.Position"
         }
         }
       }
       },
      "required": true,
      "type": "object"
     }
     }
   ],
   ],
   "returns": null
   "returns": null,
}
  "type": "notification"
</syntaxhighlight>}}
}</syntaxhighlight>}}=== System ======= System.OnLowBattery ====The system is on low battery.<br />'''Parameters:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA"># ''string'' sender# ''string'' data</div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
=== System ===
   "description": "The system is on low battery.",
==== System.OnLowBattery ====
The system is on low battery.<br />
'''Parameters:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
# ''string'' sender
# ''string'' data
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
  "type": "notification",
   "description": "The system is on low battery.",
   "params": [
   "params": [
     {
     {
       "name": "sender",
       "name": "sender",
       "type": "string",
       "required": true,
       "required": true
       "type": "string"
     },
     },
     {
     {
       "name": "data",
       "name": "data",
       "type": "null",
       "required": true,
       "required": true
       "type": "null"
     }
     }
   ],
   ],
   "returns": null
   "returns": null,
}
  "type": "notification"
</syntaxhighlight>}}
}</syntaxhighlight>}}==== System.OnQuit ====Kodi will be closed.<br />'''Parameters:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA"># ''string'' sender# ''object'' data:#* ''integer'' exitcode</div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
==== System.OnQuit ====
Kodi will be closed.<br />
'''Parameters:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
# ''string'' sender
# ''object'' data:
#* ''integer'' exitcode
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
  "type": "notification",
   "description": "Kodi will be closed.",
   "description": "Kodi will be closed.",
   "params": [
   "params": [
     {
     {
       "name": "sender",
       "name": "sender",
       "type": "string",
       "required": true,
       "required": true
       "type": "string"
     },
     },
     {
     {
       "name": "data",
       "name": "data",
      "type": "object",
      "required": true,
       "properties": {
       "properties": {
         "exitcode": {
         "exitcode": {
          "type": "integer",
           "minimum": 0,
           "minimum": 0,
           "required": true
           "required": true,
          "type": "integer"
         }
         }
       }
       },
      "required": true,
      "type": "object"
     }
     }
   ],
   ],
   "returns": null
   "returns": null,
}
  "type": "notification"
</syntaxhighlight>}}
}</syntaxhighlight>}}==== System.OnRestart ====The system will be restarted.<br />'''Parameters:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA"># ''string'' sender# ''string'' data</div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
==== System.OnRestart ====
The system will be restarted.<br />
'''Parameters:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
# ''string'' sender
# ''string'' data
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
  "type": "notification",
   "description": "The system will be restarted.",
   "description": "The system will be restarted.",
   "params": [
   "params": [
     {
     {
       "name": "sender",
       "name": "sender",
       "type": "string",
       "required": true,
       "required": true
       "type": "string"
     },
     },
     {
     {
       "name": "data",
       "name": "data",
       "type": "null",
       "required": true,
       "required": true
       "type": "null"
     }
     }
   ],
   ],
   "returns": null
   "returns": null,
}
  "type": "notification"
</syntaxhighlight>}}
}</syntaxhighlight>}}==== System.OnSleep ====The system will be suspended.<br />'''Parameters:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA"># ''string'' sender# ''string'' data</div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
==== System.OnSleep ====
The system will be suspended.<br />
'''Parameters:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
# ''string'' sender
# ''string'' data
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
  "type": "notification",
   "description": "The system will be suspended.",
   "description": "The system will be suspended.",
   "params": [
   "params": [
     {
     {
       "name": "sender",
       "name": "sender",
       "type": "string",
       "required": true,
       "required": true
       "type": "string"
     },
     },
     {
     {
       "name": "data",
       "name": "data",
       "type": "null",
       "required": true,
       "required": true
       "type": "null"
     }
     }
   ],
   ],
   "returns": null
   "returns": null,
}
  "type": "notification"
</syntaxhighlight>}}
}</syntaxhighlight>}}==== System.OnWake ====The system woke up from suspension.<br />'''Parameters:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA"># ''string'' sender# ''string'' data</div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
==== System.OnWake ====
The system woke up from suspension.<br />
'''Parameters:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
# ''string'' sender
# ''string'' data
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
  "type": "notification",
   "description": "The system woke up from suspension.",
   "description": "The system woke up from suspension.",
   "params": [
   "params": [
     {
     {
       "name": "sender",
       "name": "sender",
       "type": "string",
       "required": true,
       "required": true
       "type": "string"
     },
     },
     {
     {
       "name": "data",
       "name": "data",
       "type": "null",
       "required": true,
       "required": true
       "type": "null"
     }
     }
   ],
   ],
   "returns": null
   "returns": null,
}
  "type": "notification"
</syntaxhighlight>}}
}</syntaxhighlight>}}=== VideoLibrary ======= VideoLibrary.OnCleanFinished ====The video library has been cleaned.<br />'''Parameters:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA"># ''string'' sender# ''string'' data</div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
=== VideoLibrary ===
==== VideoLibrary.OnCleanFinished ====
The video library has been cleaned.<br />
'''Parameters:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
# ''string'' sender
# ''string'' data
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
  "type": "notification",
   "description": "The video library has been cleaned.",
   "description": "The video library has been cleaned.",
   "params": [
   "params": [
     {
     {
       "name": "sender",
       "name": "sender",
       "type": "string",
       "required": true,
       "required": true
       "type": "string"
     },
     },
     {
     {
       "name": "data",
       "name": "data",
       "type": "null",
       "required": true,
       "required": true
       "type": "null"
     }
     }
   ],
   ],
   "returns": null
   "returns": null,
}
  "type": "notification"
</syntaxhighlight>}}
}</syntaxhighlight>}}==== VideoLibrary.OnCleanStarted ====A video library clean operation has started.<br />'''Parameters:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA"># ''string'' sender# ''string'' data</div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
==== VideoLibrary.OnCleanStarted ====
A video library clean operation has started.<br />
'''Parameters:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
# ''string'' sender
# ''string'' data
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
  "type": "notification",
   "description": "A video library clean operation has started.",
   "description": "A video library clean operation has started.",
   "params": [
   "params": [
     {
     {
       "name": "sender",
       "name": "sender",
       "type": "string",
       "required": true,
       "required": true
       "type": "string"
     },
     },
     {
     {
       "name": "data",
       "name": "data",
       "type": "null",
       "required": true,
       "required": true
       "type": "null"
     }
     }
   ],
   ],
   "returns": null
   "returns": null,
}
  "type": "notification"
</syntaxhighlight>}}
}</syntaxhighlight>}}==== VideoLibrary.OnExport ====A video library export has finished.<br />'''Parameters:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA"># ''string'' sender# [''object'' data]:#* [''integer'' failcount = 0]#* [''string'' file = ""]#* [''string'' root = ""]</div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
==== VideoLibrary.OnExport ====
A video library export has finished.<br />
'''Parameters:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
# ''string'' sender
# [''object'' data]:
#* [''string'' file = ""]
#* [''string'' root = ""]
#* [''integer'' failcount = 0]
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
  "type": "notification",
   "description": "A video library export has finished.",
   "description": "A video library export has finished.",
   "params": [
   "params": [
     {
     {
       "name": "sender",
       "name": "sender",
       "type": "string",
       "required": true,
       "required": true
       "type": "string"
     },
     },
     {
     {
       "name": "data",
       "name": "data",
      "type": "object",
      "required": false,
       "properties": {
       "properties": {
        "failcount": {
          "default": 0,
          "minimum": 0,
          "required": false,
          "type": "integer"
        },
         "file": {
         "file": {
           "type": "string",
           "default": "",
           "required": false,
           "required": false,
           "default": ""
           "type": "string"
         },
         },
         "root": {
         "root": {
           "type": "string",
           "default": "",
           "required": false,
           "required": false,
          "default": ""
           "type": "string"
        },
        "failcount": {
           "type": "integer",
          "minimum": 0,
          "required": false,
          "default": 0
         }
         }
       }
       },
      "required": false,
      "type": "object"
     }
     }
   ],
   ],
   "returns": null
   "returns": null,
}
  "type": "notification"
</syntaxhighlight>}}
}</syntaxhighlight>}}==== VideoLibrary.OnRefresh ====The video library has been refreshed and a home screen reload might be necessary.<br />'''Parameters:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA"># ''string'' sender# ''string'' data</div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
==== VideoLibrary.OnRefresh ====
The video library has been refreshed and a home screen reload might be necessary.<br />
'''Parameters:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
# ''string'' sender
# ''string'' data
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
  "type": "notification",
   "description": "The video library has been refreshed and a home screen reload might be necessary.",
   "description": "The video library has been refreshed and a home screen reload might be necessary.",
   "params": [
   "params": [
     {
     {
       "name": "sender",
       "name": "sender",
       "type": "string",
       "required": true,
       "required": true
       "type": "string"
     },
     },
     {
     {
       "name": "data",
       "name": "data",
       "type": "null",
       "required": true,
       "required": true
       "type": "null"
     }
     }
   ],
   ],
   "returns": null
   "returns": null,
}
  "type": "notification"
</syntaxhighlight>}}
}</syntaxhighlight>}}==== VideoLibrary.OnRemove ====A video item has been removed.<br />'''Parameters:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA"># ''string'' sender# ''object'' data:#* ''[[#Library.Id|Library.Id]]'' id#* ''[[#Optional.Boolean|Optional.Boolean]]'' transaction#* ''[[#Notifications.Library.Video.Type|Notifications.Library.Video.Type]]'' type</div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
==== VideoLibrary.OnRemove ====
A video item has been removed.<br />
'''Parameters:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
# ''string'' sender
# ''object'' data:
#* ''[[#Library.Id|Library.Id]]'' id
#* ''[[#Notifications.Library.Video.Type|Notifications.Library.Video.Type]]'' type
#* ''[[#Optional.Boolean|Optional.Boolean]]'' transaction
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
  "type": "notification",
   "description": "A video item has been removed.",
   "description": "A video item has been removed.",
   "params": [
   "params": [
     {
     {
       "name": "sender",
       "name": "sender",
       "type": "string",
       "required": true,
       "required": true
       "type": "string"
     },
     },
     {
     {
       "name": "data",
       "name": "data",
      "type": "object",
      "required": true,
       "properties": {
       "properties": {
         "id": {
         "id": {
           "$ref": "Library.Id",
           "$ref": "Library.Id",
           "required": true
           "required": true
        },
        "transaction": {
          "$ref": "Optional.Boolean",
          "description": "True if the removal is being performed within a transaction."
         },
         },
         "type": {
         "type": {
           "$ref": "Notifications.Library.Video.Type",
           "$ref": "Notifications.Library.Video.Type",
           "required": true
           "required": true
        }
      },
      "required": true,
      "type": "object"
    }
  ],
  "returns": null,
  "type": "notification"
}</syntaxhighlight>}}==== VideoLibrary.OnScanFinished ====Scanning the video library has been finished.<br />'''Parameters:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA"># ''string'' sender# ''string'' data</div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
  "description": "Scanning the video library has been finished.",
  "params": [
    {
      "name": "sender",
      "required": true,
      "type": "string"
    },
    {
      "name": "data",
      "required": true,
      "type": "null"
    }
  ],
  "returns": null,
  "type": "notification"
}</syntaxhighlight>}}==== VideoLibrary.OnScanStarted ====A video library scan has started.<br />'''Parameters:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA"># ''string'' sender# ''string'' data</div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
  "description": "A video library scan has started.",
  "params": [
    {
      "name": "sender",
      "required": true,
      "type": "string"
    },
    {
      "name": "data",
      "required": true,
      "type": "null"
    }
  ],
  "returns": null,
  "type": "notification"
}</syntaxhighlight>}}==== VideoLibrary.OnUpdate ====A video item has been updated.<br />'''Parameters:'''<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA"># ''string'' sender# ''object'' data:#* ''[[#Optional.Boolean|Optional.Boolean]]'' added#* ''[[#Library.Id|Library.Id]]'' id#* ''integer'' playcount = -1#* ''[[#Optional.Boolean|Optional.Boolean]]'' transaction#* ''string'' type</div>{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">{
  "description": "A video item has been updated.",
  "params": [
    {
      "name": "sender",
      "required": true,
      "type": "string"
    },
    {
      "name": "data",
      "properties": {
        "added": {
          "$ref": "Optional.Boolean",
          "description": "True if the update is for a newly added item."
        },
        "id": {
          "$ref": "Library.Id",
          "required": true
        },
        "playcount": {
          "default": -1,
          "minimum": 0,
          "type": "integer"
         },
         },
         "transaction": {
         "transaction": {
           "$ref": "Optional.Boolean",
           "$ref": "Optional.Boolean",
           "description": "True if the removal is being performed within a transaction."
           "description": "True if the update is being performed within a transaction."
        },
        "type": {
          "enum": [
            "movie",
            "tvshow",
            "episode",
            "musicvideo"
          ],
          "id": "Notifications.Library.Video.Type",
          "required": true,
          "type": "string"
         }
         }
       }
       },
    }
  ],
  "returns": null
}
</syntaxhighlight>}}
==== VideoLibrary.OnScanFinished ====
Scanning the video library has been finished.<br />
'''Parameters:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
# ''string'' sender
# ''string'' data
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
  "type": "notification",
  "description": "Scanning the video library has been finished.",
  "params": [
    {
      "name": "sender",
      "type": "string",
      "required": true
    },
    {
      "name": "data",
      "type": "null",
      "required": true
    }
  ],
  "returns": null
}
</syntaxhighlight>}}
==== VideoLibrary.OnScanStarted ====
A video library scan has started.<br />
'''Parameters:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
# ''string'' sender
# ''string'' data
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
  "type": "notification",
  "description": "A video library scan has started.",
  "params": [
    {
      "name": "sender",
      "type": "string",
      "required": true
    },
    {
      "name": "data",
      "type": "null",
      "required": true
    }
  ],
  "returns": null
}
</syntaxhighlight>}}
==== VideoLibrary.OnUpdate ====
A video item has been updated.<br />
'''Parameters:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
# ''string'' sender
# ''object'' data:
#* ''[[#Library.Id|Library.Id]]'' id
#* ''string'' type
#* ''integer'' playcount = -1
#* ''[[#Optional.Boolean|Optional.Boolean]]'' transaction
#* ''[[#Optional.Boolean|Optional.Boolean]]'' added
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight enclose="div">
{
  "type": "notification",
  "description": "A video item has been updated.",
  "params": [
    {
      "name": "sender",
      "type": "string",
      "required": true
    },
    {
      "name": "data",
      "type": "object",
       "required": true,
       "required": true,
       "properties": {
       "type": "object"
        "id": {
          "$ref": "Library.Id",
          "required": true
        },
        "type": {
          "type": "string",
          "id": "Notifications.Library.Video.Type",
          "enum": [
            "movie",
            "tvshow",
            "episode",
            "musicvideo"
          ],
          "required": true
        },
        "playcount": {
          "type": "integer",
          "minimum": 0,
          "default": -1
        },
        "transaction": {
          "$ref": "Optional.Boolean",
          "description": "True if the update is being performed within a transaction."
        },
        "added": {
          "$ref": "Optional.Boolean",
          "description": "True if the update is for a newly added item."
        }
      }
     }
     }
   ],
   ],
   "returns": null
   "returns": null,
}
  "type": "notification"
</syntaxhighlight>}}
}</syntaxhighlight>}}
 
== See also ==
== See also ==
* [[JSON-RPC API]]
* [[JSON-RPC API]]

Revision as of 21:56, 23 May 2020

Home icon grey.png   ▶ Development ▶ JSON-RPC API ▶ Ronie

Version 12 is the current development version of Kodi's JSON-RPC API and will be published with the release of v19.
This document has been updated to version 11.8.1. Recent changes are announced on the forum

It comes with support for WebSockets as an alternative transport for third party clients. Using WebSockets will allow webinterfaces (which are currently restricted to the HTTP transport only) to get access to a bidirectional transport with Kodi's JSON-RPC API and can therefore also profit from additional features like notifications.


JSON-RPC 2.0 compatibility

Version Method calls Notifications
(server-side)
Notifications
(client-side)
Parameters
by-name
Parameters
by-position
Batch requests
Version 6 Yes Yes Yes Yes Yes Yes

Documentation (JSON Schema)

Supported features of JSON Schema

Schema IETF Draft 03
type Yes
properties Yes
patternProperties No
additionalProperties Yes
items Yes
additionalItems Yes
required Yes
dependencies No
minimum Yes
maximum Yes
Schema IETF Draft 03
exclusiveMinimum Yes
exclusiveMaximum Yes
minItems Yes
maxItems Yes
uniqueItems Yes
pattern No
minLength Yes
maxLength Yes
enum Yes
default Yes
Schema IETF Draft 03
title No
description Yes
format No
divisibleBy Yes
disallow No
extends Yes
id Yes
$ref Yes
$schema No
Hyper Schema No

Error message

If Kodi detects a bad or missing parameter in a JSON-RPC request it returns an error object. The JSON schema description of that error object is

{
  "type": "object",
  "properties": {
    "code": { "type": "integer", "required": true },
    "message": { "type": "string", "required": true },
    "data": { "type": "object",
      "properties": {
        "method": { "type": "string", "required": true },
        "stack": { "type": "object", "id": "Error.Stack",
          "properties": {
            "name": { "type": "string", "required": true },
            "type": { "type": "string", "required": true },
            "message": { "type": "string", "required": true },
            "property": { "$ref": "Error.Stack" }
          }
        }
      }
    }
  }
}

Namespaces

The Kodi JSON-RPC API is split up into namespaces, which contain methods that can be called. These namespaces are:

Addons           List, enable and execute addons
Application      Application information and control
AudioLibrary     Audio Library information
Favourites       Favourites GetFavourites and AddFavourite
Files            Shares information & filesystem listings
GUI              Window properties and activation
Input            Allows limited navigation within Kodi
JSONRPC          A variety of standard JSONRPC calls
Player           Manages all available players
Playlist         Playlist modification
Profiles         Support for Profiles operations to xbmc. 
PVR              Live TV control
Settings         Allows manipulation of Kodi settings.
System           System controls and information
Textures         Supplies GetTextures and RemoveTexture. Textures are images.
VideoLibrary     Video Library information
XBMC             Dumping ground for very Kodi specific operations

== Methods ===== Addons ======= Addons.ExecuteAddon ====Executes the given addon with the given parameters (if possible)
Permissions:* ExecuteAddonParameters:

# string addonid
# [mixed: object|array|string params = ""]
# [boolean wait = False]

Returns:

Type: string

==== Addons.GetAddonDetails ====Gets the details of a specific addon
Permissions:* ReadDataParameters:

# string addonid
# [Addon.Fields properties]

Returns:

Type: object
Properties:# Addon.Details addon
# List.LimitsReturned limits

==== Addons.GetAddons ====Gets all available addons
Permissions:* ReadDataParameters:

# [Addon.Types type = unknown]
# [Addon.Content content = unknown] (Content provided by the addon. Only considered for plugins and scripts.)
# [mixed: boolean|string enabled = all]
# [Addon.Fields properties]
# [List.Limits limits]
# [mixed: boolean|string installed = True]

Returns:

Type: object
Properties:# [arrayAddon.Details addons]
# List.LimitsReturned limits

==== Addons.SetAddonEnabled ====Enables/Disables a specific addon
Permissions:* ManageAddonParameters:

# string addonid
# Global.Toggle enabled

Returns:

Type: string

=== Application ======= Application.GetProperties ====Retrieves the values of the given properties
Permissions:* ReadDataParameters:

# array properties

Returns:

Type: Application.Property.Value

==== Application.Quit ====Quit application
Permissions:* ControlPowerReturns:

Type: string

==== Application.SetMute ====Toggle mute/unmute
Permissions:* ControlPlaybackParameters:

# Global.Toggle mute

Returns:

Type: boolean (Mute state)

==== Application.SetVolume ====Set the current volume
Permissions:* ControlPlaybackParameters:

# mixed: integer|Global.IncrementDecrement volume

Returns:

Type: integer

=== AudioLibrary ======= AudioLibrary.Clean ====Cleans the audio library from non-existent items
Permissions:* RemoveDataParameters:

# [boolean showdialogs = True] (Whether or not to show the progress bar or any other GUI dialog)

Returns:

Type: string

==== AudioLibrary.Export ====Exports all items from the audio library
Permissions:* WriteFileParameters:

# [mixed: object|object options]

Returns:

Type: string

==== AudioLibrary.GetAlbumDetails ====Retrieve details about a specific album
Permissions:* ReadDataParameters:

# Library.Id albumid
# [Audio.Fields.Album properties]

Returns:

Type: object
Properties:# [Audio.Details.Album albumdetails]

==== AudioLibrary.GetAlbums ====Retrieve all albums from specified artist (and role) or that has songs of the specified genre
Permissions:* ReadDataParameters:

# [Audio.Fields.Album properties]
# [List.Limits limits]
# [List.Sort sort]
# [mixed: object|object|object|object|object|object|object|object|List.Filter.Albums filter]
# [boolean includesingles = False]
# [boolean allroles = False] (Whether or not to include all roles when filtering by artist, rather than the default of excluding other contributions. When true it overrides any role filter value.)

Returns:

Type: object
Properties:# [arrayAudio.Details.Album albums]
# List.LimitsReturned limits

==== AudioLibrary.GetArtistDetails ====Retrieve details about a specific artist
Permissions:* ReadDataParameters:

# Library.Id artistid
# [Audio.Fields.Artist properties]

Returns:

Type: object
Properties:# [Audio.Details.Artist artistdetails]

==== AudioLibrary.GetArtists ====Retrieve all artists. For backward compatibility by default this implicity does not include those that only contribute other roles, however absolutely all artists can be returned using allroles=true
Permissions:* ReadDataParameters:

# [Optional.Boolean albumartistsonly = None] (Whether or not to only include album artists rather than the artists of only individual songs as well. If the parameter is not passed or is passed as null the GUI setting will be used)
# [Audio.Fields.Artist properties]
# [List.Limits limits]
# [List.Sort sort]
# [mixed: object|object|object|object|object|object|object|object|object|object|object|object|object|object|object|List.Filter.Artists filter]
# [boolean allroles = False] (Whether or not to include all artists irrespective of the role they contributed. When true it overrides any role filter value.)

Returns:

Type: object
Properties:# [arrayAudio.Details.Artist artists]
# List.LimitsReturned limits

==== AudioLibrary.GetGenres ====Retrieve all genres
Permissions:* ReadDataParameters:

# [Library.Fields.Genre properties]
# [List.Limits limits]
# [List.Sort sort]

Returns:

Type: object
Properties:# arrayLibrary.Details.Genre genres
# List.LimitsReturned limits

==== AudioLibrary.GetProperties ====Retrieves the values of the music library properties
Permissions:* ReadDataParameters:

# array properties

Returns:

Type: Audio.Property.Value

==== AudioLibrary.GetRecentlyAddedAlbums ====Retrieve recently added albums
Permissions:* ReadDataParameters:

# [Audio.Fields.Album properties]
# [List.Limits limits]
# [List.Sort sort]

Returns:

Type: object
Properties:# [arrayAudio.Details.Album albums]
# List.LimitsReturned limits

==== AudioLibrary.GetRecentlyAddedSongs ====Retrieve recently added songs
Permissions:* ReadDataParameters:

# [List.Amount albumlimit = -1] (The amount of recently added albums from which to return the songs)
# [Audio.Fields.Song properties]
# [List.Limits limits]
# [List.Sort sort]

Returns:

Type: object
Properties:# List.LimitsReturned limits
# [arrayAudio.Details.Song songs]

==== AudioLibrary.GetRecentlyPlayedAlbums ====Retrieve recently played albums
Permissions:* ReadDataParameters:

# [Audio.Fields.Album properties]
# [List.Limits limits]
# [List.Sort sort]

Returns:

Type: object
Properties:# [arrayAudio.Details.Album albums]
# List.LimitsReturned limits

==== AudioLibrary.GetRecentlyPlayedSongs ====Retrieve recently played songs
Permissions:* ReadDataParameters:

# [Audio.Fields.Song properties]
# [List.Limits limits]
# [List.Sort sort]

Returns:

Type: object
Properties:# List.LimitsReturned limits
# [arrayAudio.Details.Song songs]

==== AudioLibrary.GetRoles ====Retrieve all contributor roles
Permissions:* ReadDataParameters:

# [Audio.Fields.Role properties]
# [List.Limits limits]
# [List.Sort sort]

Returns:

Type: object
Properties:# List.LimitsReturned limits
# arrayAudio.Details.Role roles

==== AudioLibrary.GetSongDetails ====Retrieve details about a specific song
Permissions:* ReadDataParameters:

# Library.Id songid
# [Audio.Fields.Song properties]

Returns:

Type: object
Properties:# [Audio.Details.Song songdetails]

==== AudioLibrary.GetSongs ====Retrieve all songs from specified album, artist or genre
Permissions:* ReadDataParameters:

# [Audio.Fields.Song properties]
# [List.Limits limits]
# [List.Sort sort]
# [mixed: object|object|object|object|object|object|object|object|object|object|List.Filter.Songs filter]
# [boolean includesingles = True] (Only songs from albums are returned when false, but overidden when singlesonly parameter is true)
# [boolean allroles = False] (Whether or not to include all roles when filtering by artist, rather than default of excluding other contributors. When true it overrides any role filter value.)
# [boolean singlesonly = False] (Only singles are returned when true, and overides includesingles parameter)

Returns:

Type: object
Properties:# List.LimitsReturned limits
# [arrayAudio.Details.Song songs]

==== AudioLibrary.GetSources ====Get all music sources, including unique ID
Permissions:* ReadDataParameters:

# [Library.Fields.Source properties]
# [List.Limits limits]
# [List.Sort sort]

Returns:

Type: object
Properties:# List.LimitsReturned limits
# arrayLibrary.Details.Source sources

==== AudioLibrary.Scan ====Scans the audio sources for new library items
Permissions:* UpdateDataParameters:

# [string directory = ""]
# [boolean showdialogs = True] (Whether or not to show the progress bar or any other GUI dialog)

Returns:

Type: string

==== AudioLibrary.SetAlbumDetails ====Update the given album with the given details
Permissions:* UpdateDataParameters:

# Library.Id albumid
# [Optional.String title = None]
# [mixed: null|Array.String artist = None]
# [Optional.String description = None]
# [mixed: null|Array.String genre = None]
# [mixed: null|Array.String theme = None]
# [mixed: null|Array.String mood = None]
# [mixed: null|Array.String style = None]
# [Optional.String type = None]
# [Optional.String albumlabel = None]
# [Optional.Number rating = None]
# [Optional.Integer year = None]
# [Optional.Integer userrating = None]
# [Optional.Integer votes = None]
# [Optional.String musicbrainzalbumid = None]
# [Optional.String musicbrainzreleasegroupid = None]
# [Optional.String sortartist = None]
# [Optional.String displayartist = None]
# [mixed: null|Array.String musicbrainzalbumartistid = None]
# [mixed: null|Media.Artwork.Set art = None]
# [Optional.Boolean isboxset = None]
# [Optional.String releasedate = None]
# [Optional.String originaldate = None]

Returns:

Type: string

==== AudioLibrary.SetArtistDetails ====Update the given artist with the given details
Permissions:* UpdateDataParameters:

# Library.Id artistid
# [Optional.String artist = None]
# [mixed: null|Array.String instrument = None]
# [mixed: null|Array.String style = None]
# [mixed: null|Array.String mood = None]
# [Optional.String born = None]
# [Optional.String formed = None]
# [Optional.String description = None]
# [mixed: null|Array.String genre = None]
# [Optional.String died = None]
# [Optional.String disbanded = None]
# [mixed: null|Array.String yearsactive = None]
# [Optional.String musicbrainzartistid = None]
# [Optional.String sortname = None]
# [Optional.String type = None]
# [Optional.String gender = None]
# [Optional.String disambiguation = None]
# [mixed: null|Media.Artwork.Set art = None]

Returns:

Type: string

==== AudioLibrary.SetSongDetails ====Update the given song with the given details
Permissions:* UpdateDataParameters:

# Library.Id songid
# [Optional.String title = None]
# [mixed: null|Array.String artist = None]
# [mixed: null|Array.String genre = None]
# [Optional.Integer year = None]
# [Optional.Number rating = None]
# [Optional.Integer track = None]
# [Optional.Integer disc = None]
# [Optional.Integer duration = None]
# [Optional.String comment = None]
# [Optional.String musicbrainztrackid = None]
# [Optional.String musicbrainzartistid = None]
# [Optional.Integer playcount = None]
# [Optional.String lastplayed = None]
# [Optional.Integer userrating = None]
# [Optional.Integer votes = None]
# [Optional.String displayartist = None]
# [Optional.String sortartist = None]
# [Optional.String mood = None]
# [mixed: null|Media.Artwork.Set art = None]
# [Optional.String disctitle = None]
# [Optional.String releasedate = None]
# [Optional.String originaldate = None]
# [Optional.Integer bpm = None]

Returns:

Type: string

=== Favourites ======= Favourites.AddFavourite ====Add a favourite with the given details
Permissions:* UpdateDataParameters:

# string title
# Favourite.Type type
# [Optional.String path = None] (Required for media, script and androidapp favourites types)
# [Optional.String window = None] (Required for window favourite type)
# [Optional.String windowparameter = None]
# [Optional.String thumbnail = None]

Returns:

Type: string

==== Favourites.GetFavourites ====Retrieve all favourites
Permissions:* ReadDataParameters:

# [mixed: null|Favourite.Type type = None]
# [Favourite.Fields.Favourite properties]

Returns:

Type: object
Properties:# [arrayFavourite.Details.Favourite favourites]
# List.LimitsReturned limits

=== Files ======= Files.GetDirectory ====Get the directories and files in the given directory
Permissions:* ReadDataParameters:

# string directory
# [Files.Media media = files]
# [List.Fields.Files properties]
# [List.Sort sort]
# [List.Limits limits] (Limits are applied after getting the directory content thus retrieval is not faster when they are applied.)

Returns:

Type: object
Properties:# arrayList.Item.File files
# List.LimitsReturned limits

==== Files.GetFileDetails ====Get details for a specific file
Permissions:* ReadDataParameters:

# string file (Full path to the file)
# [Files.Media media = files]
# [List.Fields.Files properties]

Returns:

Type: object
Properties:# List.Item.File filedetails

==== Files.GetSources ====Get the sources of the media windows
Permissions:* ReadDataParameters:

# Files.Media media
# [List.Limits limits]
# [List.Sort sort]

Returns:

Type: object
Properties:# List.LimitsReturned limits
# List.Items.Sources sources

==== Files.SetFileDetails ====Update the given specific file with the given details
Permissions:* UpdateDataParameters:

# string file (Full path to the file)
# Files.Media media (File type to update correct database. Currently only "video" is supported.)
# [Optional.Integer playcount = None]
# [Optional.String lastplayed = None] (Setting a valid lastplayed without a playcount will force playcount to 1.)
# [mixed: null|Video.Resume resume = None]

Returns:

Type: string

=== GUI ======= GUI.ActivateWindow ====Activates the given window
Permissions:* ControlGUIParameters:

# GUI.Window window
# [array parameters]

Returns:

Type: string

==== GUI.GetProperties ====Retrieves the values of the given properties
Permissions:* ReadDataParameters:

# array properties

Returns:

Type: GUI.Property.Value

==== GUI.GetStereoscopicModes ====Returns the supported stereoscopic modes of the GUI
Permissions:* ReadDataReturns:

Type: object
Properties:# [arrayGUI.Stereoscopy.Mode stereoscopicmodes]

==== GUI.SetFullscreen ====Toggle fullscreen/GUI
Permissions:* ControlGUIParameters:

# Global.Toggle fullscreen

Returns:

Type: boolean (Fullscreen state)

==== GUI.SetStereoscopicMode ====Sets the stereoscopic mode of the GUI to the given mode
Permissions:* ControlGUIParameters:

# string mode

Returns:

Type: string

==== GUI.ShowNotification ====Shows a GUI notification
Permissions:* ControlGUIParameters:

# string title
# string message
# [mixed: string|string image = ""]
# [integer displaytime = 5000] (The time in milliseconds the notification will be visible)

Returns:

Type: string

=== Input ======= Input.Back ====Goes back in GUI
Permissions:* NavigateReturns:

Type: string

==== Input.ButtonEvent ====Send a button press event
Permissions:* NavigateParameters:

# string button (Button name)
# string keymap (Keymap name (KB, XG, R1, or R2))
# [integer holdtime = 0] (Number of milliseconds to simulate button hold.)

Returns:

Type: string

==== Input.ContextMenu ====Shows the context menu
Permissions:* NavigateReturns:

Type: string

==== Input.Down ====Navigate down in GUI
Permissions:* NavigateReturns:

Type: string

==== Input.ExecuteAction ====Execute a specific action
Permissions:* NavigateParameters:

# Input.Action action

Returns:

Type: string

==== Input.Home ====Goes to home window in GUI
Permissions:* NavigateReturns:

Type: string

==== Input.Info ====Shows the information dialog
Permissions:* NavigateReturns:

Type: string

==== Input.Left ====Navigate left in GUI
Permissions:* NavigateReturns:

Type: string

==== Input.Right ====Navigate right in GUI
Permissions:* NavigateReturns:

Type: string

==== Input.Select ====Select current item in GUI
Permissions:* NavigateReturns:

Type: string

==== Input.SendText ====Send a generic (unicode) text
Permissions:* NavigateParameters:

# string text (Unicode text)
# [boolean done = True] (Whether this is the whole input or not (closes an open input dialog if true).)

Returns:

Type: string

==== Input.ShowCodec ====Show codec information of the playing item
Permissions:* NavigateReturns:

Type: string

==== Input.ShowOSD ====Show the on-screen display for the current player
Permissions:* NavigateReturns:

Type: string

==== Input.ShowPlayerProcessInfo ====Show player process information of the playing item, like video decoder, pixel format, pvr signal strength, ...
Permissions:* NavigateReturns:

Type: string

==== Input.Up ====Navigate up in GUI
Permissions:* NavigateReturns:

Type: string

=== JSONRPC ======= JSONRPC.Introspect ====Enumerates all actions and descriptions
Permissions:* ReadDataParameters:

# [boolean getdescriptions = True]
# [boolean getmetadata = False]
# [boolean filterbytransport = True]
# [object filter]

Returns:

Type: object

==== JSONRPC.NotifyAll ====Notify all other connected clients
Permissions:* ReadDataParameters:

# string sender
# string message
# [any data = None]

Returns:

Type: any

==== JSONRPC.Permission ====Retrieve the clients permissions
Permissions:* ReadDataReturns:

Type: object
Properties:# boolean controlgui
# boolean controlnotify
# boolean controlplayback
# boolean controlpower
# boolean controlpvr
# boolean controlsystem
# boolean executeaddon
# boolean manageaddon
# boolean navigate
# boolean readdata
# boolean removedata
# boolean updatedata
# boolean writefile

==== JSONRPC.Ping ====Ping responder
Permissions:* ReadDataReturns:

Type: string

==== JSONRPC.Version ====Retrieve the JSON-RPC protocol version.
Permissions:* ReadDataReturns:

Type: object
Properties:# object version

=== PVR ======= PVR.AddTimer ====Adds a timer to record the given show one times or a timer rule to record all showings of the given show
Permissions:* ControlPVRParameters:

# Library.Id broadcastid (the broadcast id of the item to record)
# [boolean timerrule = False] (controls whether to create a timer rule or a onetime timer)

Returns:

Type: string

==== PVR.DeleteTimer ====Deletes a onetime timer or a timer rule
Permissions:* ControlPVRParameters:

# Library.Id timerid (the id of the onetime timer or timer rule to delete)

Returns:

Type: string

==== PVR.GetBroadcastDetails ====Retrieves the details of a specific broadcast
Permissions:* ReadDataParameters:

# Library.Id broadcastid
# [PVR.Fields.Broadcast properties]

Returns:

Type: object
Properties:# [PVR.Details.Broadcast broadcastdetails]

==== PVR.GetBroadcasts ====Retrieves the program of a specific channel
Permissions:* ReadDataParameters:

# Library.Id channelid
# [PVR.Fields.Broadcast properties]
# [List.Limits limits]

Returns:

Type: object
Properties:# arrayPVR.Details.Broadcast broadcasts
# List.LimitsReturned limits

==== PVR.GetChannelDetails ====Retrieves the details of a specific channel
Permissions:* ReadDataParameters:

# Library.Id channelid
# [PVR.Fields.Channel properties]

Returns:

Type: object
Properties:# [PVR.Details.Channel channeldetails]

==== PVR.GetChannelGroupDetails ====Retrieves the details of a specific channel group
Permissions:* ReadDataParameters:

# PVR.ChannelGroup.Id channelgroupid
# [object channels]

Returns:

Type: object
Properties:# [PVR.Details.ChannelGroup.Extended channelgroupdetails]

==== PVR.GetChannelGroups ====Retrieves the channel groups for the specified type
Permissions:* ReadDataParameters:

# PVR.Channel.Type channeltype
# [List.Limits limits]

Returns:

Type: object
Properties:# arrayPVR.Details.ChannelGroup channelgroups
# List.LimitsReturned limits

==== PVR.GetChannels ====Retrieves the channel list
Permissions:* ReadDataParameters:

# PVR.ChannelGroup.Id channelgroupid
# [PVR.Fields.Channel properties]
# [List.Limits limits]

Returns:

Type: object
Properties:# arrayPVR.Details.Channel channels
# List.LimitsReturned limits

==== PVR.GetProperties ====Retrieves the values of the given properties
Permissions:* ReadDataParameters:

# array properties

Returns:

Type: PVR.Property.Value

==== PVR.GetRecordingDetails ====Retrieves the details of a specific recording
Permissions:* ReadDataParameters:

# Library.Id recordingid
# [PVR.Fields.Recording properties]

Returns:

Type: object
Properties:# [PVR.Details.Recording recordingdetails]

==== PVR.GetRecordings ====Retrieves the recordings
Permissions:* ReadDataParameters:

# [PVR.Fields.Recording properties]
# [List.Limits limits]

Returns:

Type: object
Properties:# List.LimitsReturned limits
# arrayPVR.Details.Recording recordings

==== PVR.GetTimerDetails ====Retrieves the details of a specific timer
Permissions:* ReadDataParameters:

# Library.Id timerid
# [PVR.Fields.Timer properties]

Returns:

Type: object
Properties:# [PVR.Details.Timer timerdetails]

==== PVR.GetTimers ====Retrieves the timers
Permissions:* ReadDataParameters:

# [PVR.Fields.Timer properties]
# [List.Limits limits]

Returns:

Type: object
Properties:# List.LimitsReturned limits
# arrayPVR.Details.Timer timers

==== PVR.Record ====Toggle recording of a channel
Permissions:* ControlPVRParameters:

# [Global.Toggle record = toggle]
# [mixed: string|Library.Id channel = current]

Returns:

Type: string

==== PVR.Scan ====Starts a channel scan
Permissions:* ControlPVRReturns:

Type: string

==== PVR.ToggleTimer ====Creates or deletes a onetime timer or timer rule for a given show. If it exists, it will be deleted. If it does not exist, it will be created
Permissions:* ControlPVRParameters:

# Library.Id broadcastid (the broadcast id of the item to toggle a onetime timer or time rule for)
# [boolean timerrule = False] (controls whether to create / delete a timer rule or a onetime timer)

Returns:

Type: string

=== Player ======= Player.GetActivePlayers ====Returns all active players
Permissions:* ReadDataReturns:

Type: array

==== Player.GetItem ====Retrieves the currently played item
Permissions:* ReadDataParameters:

# Player.Id playerid
# [List.Fields.All properties]

Returns:

Type: object
Properties:# List.Item.All item

==== Player.GetPlayers ====Get a list of available players
Permissions:* ReadDataParameters:

# [string media = all]

Returns:

Type: array

==== Player.GetProperties ====Retrieves the values of the given properties
Permissions:* ReadDataParameters:

# Player.Id playerid
# array properties

Returns:

Type: Player.Property.Value

==== Player.GetViewMode ====Get view mode of video player
Permissions:* ReadDataReturns:

Type: object
Properties:# boolean nonlinearstretch
# number pixelratio
# number verticalshift
# Player.ViewMode viewmode
# number zoom

==== Player.GoTo ====Go to previous/next/specific item in the playlist
Permissions:* ControlPlaybackParameters:

# Player.Id playerid
# mixed: string|Playlist.Position to

Returns:

Type: string

==== Player.Move ====If picture is zoomed move viewport left/right/up/down otherwise skip previous/next
Permissions:* ControlPlaybackParameters:

# Player.Id playerid
# string direction

Returns:

Type: string

==== Player.Open ====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.
Permissions:* ControlPlaybackParameters:

# [mixed: object|Playlist.Item|object|object|object|object item]
# [object options]

Returns:

Type: string

==== Player.PlayPause ====Pauses or unpause playback and returns the new state
Permissions:* ControlPlaybackParameters:

# Player.Id playerid
# [Global.Toggle play = toggle]

Returns:

Type: Player.Speed

==== Player.Rotate ====Rotates current picture
Permissions:* ControlPlaybackParameters:

# Player.Id playerid
# [string value = clockwise]

Returns:

Type: string

==== Player.Seek ====Seek through the playing item
Permissions:* ControlPlaybackParameters:

# Player.Id playerid
# mixed: object|object|object|object value

Returns:

Type: object
Properties:# [Player.Position.Percentage percentage]
# [Global.Time time]
# [Global.Time totaltime]

==== Player.SetAudioStream ====Set the audio stream played by the player
Permissions:* ControlPlaybackParameters:

# Player.Id playerid
# mixed: string|integer stream

Returns:

Type: string

==== Player.SetPartymode ====Turn partymode on or off
Permissions:* ControlPlaybackParameters:

# Player.Id playerid
# Global.Toggle partymode

Returns:

Type: string

==== Player.SetRepeat ====Set the repeat mode of the player
Permissions:* ControlPlaybackParameters:

# Player.Id playerid
# mixed: Player.Repeat|string repeat

Returns:

Type: string

==== Player.SetShuffle ====Shuffle/Unshuffle items in the player
Permissions:* ControlPlaybackParameters:

# Player.Id playerid
# Global.Toggle shuffle

Returns:

Type: string

==== Player.SetSpeed ====Set the speed of the current playback
Permissions:* ControlPlaybackParameters:

# Player.Id playerid
# mixed: integer|Global.IncrementDecrement speed

Returns:

Type: Player.Speed

==== Player.SetSubtitle ====Set the subtitle displayed by the player
Permissions:* ControlPlaybackParameters:

# Player.Id playerid
# mixed: string|integer subtitle
# [boolean enable = False] (Whether to enable subtitles to be displayed after setting the new subtitle)

Returns:

Type: string

==== Player.SetVideoStream ====Set the video stream played by the player
Permissions:* ControlPlaybackParameters:

# Player.Id playerid
# mixed: string|integer stream

Returns:

Type: string

==== Player.SetViewMode ====Set view mode of video player
Permissions:* ControlPlaybackParameters:

# mixed: Player.CustomViewMode|Player.ViewMode viewmode

Returns:

Type: string

==== Player.Stop ====Stops playback
Permissions:* ControlPlaybackParameters:

# Player.Id playerid

Returns:

Type: string

==== Player.Zoom ====Zoom current picture
Permissions:* ControlPlaybackParameters:

# Player.Id playerid
# mixed: string|integer zoom

Returns:

Type: string

=== Playlist ======= Playlist.Add ====Add item(s) to playlist
Permissions:* ControlPlaybackParameters:

# Playlist.Id playlistid
# mixed: Playlist.Item|array item

Returns:

Type: string

==== Playlist.Clear ====Clear playlist
Permissions:* ControlPlaybackParameters:

# Playlist.Id playlistid

Returns:

Type: string

==== Playlist.GetItems ====Get all items from playlist
Permissions:* ReadDataParameters:

# Playlist.Id playlistid
# [List.Fields.All properties]
# [List.Limits limits]
# [List.Sort sort]

Returns:

Type: object
Properties:# arrayList.Item.All items
# List.LimitsReturned limits

==== Playlist.GetPlaylists ====Returns all existing playlists
Permissions:* ReadDataReturns:

Type: array

==== Playlist.GetProperties ====Retrieves the values of the given properties
Permissions:* ReadDataParameters:

# Playlist.Id playlistid
# array properties

Returns:

Type: Playlist.Property.Value

==== Playlist.Insert ====Insert item(s) into playlist. Does not work for picture playlists (aka slideshows).
Permissions:* ControlPlaybackParameters:

# Playlist.Id playlistid
# Playlist.Position position
# mixed: Playlist.Item|array item

Returns:

Type: string

==== Playlist.Remove ====Remove item from playlist. Does not work for picture playlists (aka slideshows).
Permissions:* ControlPlaybackParameters:

# Playlist.Id playlistid
# Playlist.Position position

Returns:

Type: string

==== Playlist.Swap ====Swap items in the playlist. Does not work for picture playlists (aka slideshows).
Permissions:* ControlPlaybackParameters:

# Playlist.Id playlistid
# Playlist.Position position1
# Playlist.Position position2

Returns:

Type: string

=== Profiles ======= Profiles.GetCurrentProfile ====Retrieve the current profile
Permissions:* ReadDataParameters:

# [Profiles.Fields.Profile properties]

Returns:

Type: Profiles.Details.Profile

==== Profiles.GetProfiles ====Retrieve all profiles
Permissions:* ReadDataParameters:

# [Profiles.Fields.Profile properties]
# [List.Limits limits]
# [List.Sort sort]

Returns:

Type: object
Properties:# List.LimitsReturned limits
# arrayProfiles.Details.Profile profiles

==== Profiles.LoadProfile ====Load the specified profile
Permissions:* NavigateParameters:

# string profile (Profile name)
# [boolean prompt = False] (Prompt for password)
# [Profiles.Password password]

Returns:

Type: string

=== Settings ======= Settings.GetCategories ====Retrieves all setting categories
Permissions:* ReadDataParameters:

# [Setting.Level level = standard]
# [string section = ""]
# [string properties]

Returns:

Type: object
Properties:# [arraySetting.Details.Category categories]

==== Settings.GetSections ====Retrieves all setting sections
Permissions:* ReadDataParameters:

# [Setting.Level level = standard]
# [Setting.Level properties]

Returns:

Type: object
Properties:# [arraySetting.Details.Section sections]

==== Settings.GetSettingValue ====Retrieves the value of a setting
Permissions:* ReadDataParameters:

# string setting

Returns:

Type: object
Properties:# Setting.Value.Extended value

==== Settings.GetSettings ====Retrieves all settings
Permissions:* ReadDataParameters:

# [Setting.Level level = standard]
# [mixed: object filter]

Returns:

Type: object
Properties:# [arraySetting.Details.Setting settings]

==== Settings.ResetSettingValue ====Resets the value of a setting
Permissions:* ReadDataParameters:

# string setting

Returns:

Type: string

==== Settings.SetSettingValue ====Changes the value of a setting
Permissions:* ReadDataParameters:

# string setting
# Setting.Value.Extended value

Returns:

Type: boolean

=== System ======= System.EjectOpticalDrive ====Ejects or closes the optical disc drive (if available)
Permissions:* ControlSystemReturns:

Type: string

==== System.GetProperties ====Retrieves the values of the given properties
Permissions:* ReadDataParameters:

# array properties

Returns:

Type: System.Property.Value

==== System.Hibernate ====Puts the system running Kodi into hibernate mode
Permissions:* ControlPowerReturns:

Type: string

==== System.Reboot ====Reboots the system running Kodi
Permissions:* ControlPowerReturns:

Type: string

==== System.Shutdown ====Shuts the system running Kodi down
Permissions:* ControlPowerReturns:

Type: string

==== System.Suspend ====Suspends the system running Kodi
Permissions:* ControlPowerReturns:

Type: string

=== Textures ======= Textures.GetTextures ====Retrieve all textures
Permissions:* ReadDataParameters:

# [Textures.Fields.Texture properties]
# [List.Filter.Textures filter]

Returns:

Type: object
Properties:# arrayTextures.Details.Texture textures

==== Textures.RemoveTexture ====Remove the specified texture
Permissions:* RemoveDataParameters:

# Library.Id textureid (Texture database identifier)

Returns:

Type: string

=== VideoLibrary ======= VideoLibrary.Clean ====Cleans the video library for non-existent items
Permissions:* RemoveDataParameters:

# [boolean showdialogs = True] (Whether or not to show the progress bar or any other GUI dialog)
# [string content = video] (Content type to clean for)

Returns:

Type: string

==== VideoLibrary.Export ====Exports all items from the video library
Permissions:* WriteFileParameters:

# [mixed: object|object options]

Returns:

Type: string

==== VideoLibrary.GetEpisodeDetails ====Retrieve details about a specific tv show episode
Permissions:* ReadDataParameters:

# Library.Id episodeid
# [Video.Fields.Episode properties]

Returns:

Type: object
Properties:# [Video.Details.Episode episodedetails]

==== VideoLibrary.GetEpisodes ====Retrieve all tv show episodes
Permissions:* ReadDataParameters:

# [Library.Id tvshowid = -1]
# [integer season = -1]
# [Video.Fields.Episode properties]
# [List.Limits limits]
# [List.Sort sort]
# [mixed: object|object|object|object|object|List.Filter.Episodes filter]

Returns:

Type: object
Properties:# [arrayVideo.Details.Episode episodes]
# List.LimitsReturned limits

==== VideoLibrary.GetGenres ====Retrieve all genres
Permissions:* ReadDataParameters:

# string type
# [Library.Fields.Genre properties]
# [List.Limits limits]
# [List.Sort sort]

Returns:

Type: object
Properties:# arrayLibrary.Details.Genre genres
# List.LimitsReturned limits

==== VideoLibrary.GetInProgressTVShows ====Retrieve all in progress tvshows
Permissions:* ReadDataParameters:

# [Video.Fields.TVShow properties]
# [List.Limits limits]
# [List.Sort sort]

Returns:

Type: object
Properties:# List.LimitsReturned limits
# [arrayVideo.Details.TVShow tvshows]

==== VideoLibrary.GetMovieDetails ====Retrieve details about a specific movie
Permissions:* ReadDataParameters:

# Library.Id movieid
# [Video.Fields.Movie properties]

Returns:

Type: object
Properties:# [Video.Details.Movie moviedetails]

==== VideoLibrary.GetMovieSetDetails ====Retrieve details about a specific movie set
Permissions:* ReadDataParameters:

# Library.Id setid
# [Video.Fields.MovieSet properties]
# [object movies]

Returns:

Type: object
Properties:# [Video.Details.MovieSet.Extended setdetails]

==== VideoLibrary.GetMovieSets ====Retrieve all movie sets
Permissions:* ReadDataParameters:

# [Video.Fields.MovieSet properties]
# [List.Limits limits]
# [List.Sort sort]

Returns:

Type: object
Properties:# List.LimitsReturned limits
# [arrayVideo.Details.MovieSet sets]

==== VideoLibrary.GetMovies ====Retrieve all movies
Permissions:* ReadDataParameters:

# [Video.Fields.Movie properties]
# [List.Limits limits]
# [List.Sort sort]
# [mixed: object|object|object|object|object|object|object|object|object|object|List.Filter.Movies filter]

Returns:

Type: object
Properties:# List.LimitsReturned limits
# [arrayVideo.Details.Movie movies]

==== VideoLibrary.GetMusicVideoDetails ====Retrieve details about a specific music video
Permissions:* ReadDataParameters:

# Library.Id musicvideoid
# [Video.Fields.MusicVideo properties]

Returns:

Type: object
Properties:# [Video.Details.MusicVideo musicvideodetails]

==== VideoLibrary.GetMusicVideos ====Retrieve all music videos
Permissions:* ReadDataParameters:

# [Video.Fields.MusicVideo properties]
# [List.Limits limits]
# [List.Sort sort]
# [mixed: object|object|object|object|object|object|object|List.Filter.MusicVideos filter]

Returns:

Type: object
Properties:# List.LimitsReturned limits
# [arrayVideo.Details.MusicVideo musicvideos]

==== VideoLibrary.GetRecentlyAddedEpisodes ====Retrieve all recently added tv episodes
Permissions:* ReadDataParameters:

# [Video.Fields.Episode properties]
# [List.Limits limits]
# [List.Sort sort]

Returns:

Type: object
Properties:# [arrayVideo.Details.Episode episodes]
# List.LimitsReturned limits

==== VideoLibrary.GetRecentlyAddedMovies ====Retrieve all recently added movies
Permissions:* ReadDataParameters:

# [Video.Fields.Movie properties]
# [List.Limits limits]
# [List.Sort sort]

Returns:

Type: object
Properties:# List.LimitsReturned limits
# [arrayVideo.Details.Movie movies]

==== VideoLibrary.GetRecentlyAddedMusicVideos ====Retrieve all recently added music videos
Permissions:* ReadDataParameters:

# [Video.Fields.MusicVideo properties]
# [List.Limits limits]
# [List.Sort sort]

Returns:

Type: object
Properties:# List.LimitsReturned limits
# [arrayVideo.Details.MusicVideo musicvideos]

==== VideoLibrary.GetSeasonDetails ====Retrieve details about a specific tv show season
Permissions:* ReadDataParameters:

# Library.Id seasonid
# [Video.Fields.Season properties]

Returns:

Type: object
Properties:# [Video.Details.Season seasondetails]

==== VideoLibrary.GetSeasons ====Retrieve all tv seasons
Permissions:* ReadDataParameters:

# [Library.Id tvshowid = -1]
# [Video.Fields.Season properties]
# [List.Limits limits]
# [List.Sort sort]

Returns:

Type: object
Properties:# List.LimitsReturned limits
# [arrayVideo.Details.Season seasons]

==== VideoLibrary.GetTVShowDetails ====Retrieve details about a specific tv show
Permissions:* ReadDataParameters:

# Library.Id tvshowid
# [Video.Fields.TVShow properties]

Returns:

Type: object
Properties:# [Video.Details.TVShow tvshowdetails]

==== VideoLibrary.GetTVShows ====Retrieve all tv shows
Permissions:* ReadDataParameters:

# [Video.Fields.TVShow properties]
# [List.Limits limits]
# [List.Sort sort]
# [mixed: object|object|object|object|object|object|List.Filter.TVShows filter]

Returns:

Type: object
Properties:# List.LimitsReturned limits
# [arrayVideo.Details.TVShow tvshows]

==== VideoLibrary.GetTags ====Retrieve all tags
Permissions:* ReadDataParameters:

# string type
# [Library.Fields.Tag properties]
# [List.Limits limits]
# [List.Sort sort]

Returns:

Type: object
Properties:# List.LimitsReturned limits
# arrayLibrary.Details.Tag tags

==== VideoLibrary.RefreshEpisode ====Refresh the given episode in the library
Permissions:* UpdateDataParameters:

# Library.Id episodeid
# [boolean ignorenfo = False] (Whether or not to ignore a local NFO if present.)
# [string title = ""] (Title to use for searching (instead of determining it from the item's filename/path).)

Returns:

Type: string

==== VideoLibrary.RefreshMovie ====Refresh the given movie in the library
Permissions:* UpdateDataParameters:

# Library.Id movieid
# [boolean ignorenfo = False] (Whether or not to ignore a local NFO if present.)
# [string title = ""] (Title to use for searching (instead of determining it from the item's filename/path).)

Returns:

Type: string

==== VideoLibrary.RefreshMusicVideo ====Refresh the given music video in the library
Permissions:* UpdateDataParameters:

# Library.Id musicvideoid
# [boolean ignorenfo = False] (Whether or not to ignore a local NFO if present.)
# [string title = ""] (Title to use for searching (instead of determining it from the item's filename/path).)

Returns:

Type: string

==== VideoLibrary.RefreshTVShow ====Refresh the given tv show in the library
Permissions:* UpdateDataParameters:

# Library.Id tvshowid
# [boolean ignorenfo = False] (Whether or not to ignore a local NFO if present.)
# [boolean refreshepisodes = False] (Whether or not to refresh all episodes belonging to the TV show.)
# [string title = ""] (Title to use for searching (instead of determining it from the item's filename/path).)

Returns:

Type: string

==== VideoLibrary.RemoveEpisode ====Removes the given episode from the library
Permissions:* RemoveDataParameters:

# Library.Id episodeid

Returns:

Type: string

==== VideoLibrary.RemoveMovie ====Removes the given movie from the library
Permissions:* RemoveDataParameters:

# Library.Id movieid

Returns:

Type: string

==== VideoLibrary.RemoveMusicVideo ====Removes the given music video from the library
Permissions:* RemoveDataParameters:

# Library.Id musicvideoid

Returns:

Type: string

==== VideoLibrary.RemoveTVShow ====Removes the given tv show from the library
Permissions:* RemoveDataParameters:

# Library.Id tvshowid

Returns:

Type: string

==== VideoLibrary.Scan ====Scans the video sources for new library items
Permissions:* UpdateDataParameters:

# [string directory = ""]
# [boolean showdialogs = True] (Whether or not to show the progress bar or any other GUI dialog)

Returns:

Type: string

==== VideoLibrary.SetEpisodeDetails ====Update the given episode with the given details
Permissions:* UpdateDataParameters:

# Library.Id episodeid
# [Optional.String title = None]
# [Optional.Integer playcount = None]
# [Optional.Integer runtime = None] (Runtime in seconds)
# [mixed: null|Array.String director = None]
# [Optional.String plot = None]
# [Optional.Number rating = None]
# [Optional.String votes = None]
# [Optional.String lastplayed = None]
# [mixed: null|Array.String writer = None]
# [Optional.String firstaired = None]
# [Optional.String productioncode = None]
# [Optional.Integer season = None]
# [Optional.Integer episode = None]
# [Optional.String originaltitle = None]
# [Optional.String thumbnail = None]
# [Optional.String fanart = None]
# [mixed: null|Media.Artwork.Set art = None]
# [mixed: null|Video.Resume resume = None]
# [Optional.Integer userrating = None]
# [Video.Ratings.Set ratings]
# [Optional.String dateadded = None]
# [mixed: null|Media.UniqueID.Set uniqueid = None]

Returns:

Type: string

==== VideoLibrary.SetMovieDetails ====Update the given movie with the given details
Permissions:* UpdateDataParameters:

# Library.Id movieid
# [Optional.String title = None]
# [Optional.Integer playcount = None]
# [Optional.Integer runtime = None] (Runtime in seconds)
# [mixed: null|Array.String director = None]
# [mixed: null|Array.String studio = None]
# [Optional.Integer year = None] (linked with premiered. Overridden by premiered parameter)
# [Optional.String plot = None]
# [mixed: null|Array.String genre = None]
# [Optional.Number rating = None]
# [Optional.String mpaa = None]
# [Optional.String imdbnumber = None]
# [Optional.String votes = None]
# [Optional.String lastplayed = None]
# [Optional.String originaltitle = None]
# [Optional.String trailer = None]
# [Optional.String tagline = None]
# [Optional.String plotoutline = None]
# [mixed: null|Array.String writer = None]
# [mixed: null|Array.String country = None]
# [Optional.Integer top250 = None]
# [Optional.String sorttitle = None]
# [Optional.String set = None]
# [mixed: null|Array.String showlink = None]
# [Optional.String thumbnail = None]
# [Optional.String fanart = None]
# [mixed: null|Array.String tag = None]
# [mixed: null|Media.Artwork.Set art = None]
# [mixed: null|Video.Resume resume = None]
# [Optional.Integer userrating = None]
# [Video.Ratings.Set ratings]
# [Optional.String dateadded = None]
# [Optional.String premiered = None] (linked with year. Overrides year)
# [mixed: null|Media.UniqueID.Set uniqueid = None]

Returns:

Type: string

==== VideoLibrary.SetMovieSetDetails ====Update the given movie set with the given details
Permissions:* UpdateDataParameters:

# Library.Id setid
# [Optional.String title = None]
# [mixed: null|Media.Artwork.Set art = None]
# [Optional.String plot = None]

Returns:

Type: string

==== VideoLibrary.SetMusicVideoDetails ====Update the given music video with the given details
Permissions:* UpdateDataParameters:

# Library.Id musicvideoid
# [Optional.String title = None]
# [Optional.Integer playcount = None]
# [Optional.Integer runtime = None] (Runtime in seconds)
# [mixed: null|Array.String director = None]
# [mixed: null|Array.String studio = None]
# [Optional.Integer year = None] (linked with premiered. Overridden by premiered parameter)
# [Optional.String plot = None]
# [Optional.String album = None]
# [mixed: null|Array.String artist = None]
# [mixed: null|Array.String genre = None]
# [Optional.Integer track = None]
# [Optional.String lastplayed = None]
# [Optional.String thumbnail = None]
# [Optional.String fanart = None]
# [mixed: null|Array.String tag = None]
# [mixed: null|Media.Artwork.Set art = None]
# [mixed: null|Video.Resume resume = None]
# [Optional.Number rating = None]
# [Optional.Integer userrating = None]
# [Optional.String dateadded = None]
# [Optional.String premiered = None] (linked with year. Overrides year)

Returns:

Type: string

==== VideoLibrary.SetSeasonDetails ====Update the given season with the given details
Permissions:* UpdateDataParameters:

# Library.Id seasonid
# [mixed: null|Media.Artwork.Set art = None]
# [Optional.Integer userrating = None]
# [Optional.String title = None]

Returns:

Type: string

==== VideoLibrary.SetTVShowDetails ====Update the given tvshow with the given details
Permissions:* UpdateDataParameters:

# Library.Id tvshowid
# [Optional.String title = None]
# [Optional.Integer playcount = None]
# [mixed: null|Array.String studio = None]
# [Optional.String plot = None]
# [mixed: null|Array.String genre = None]
# [Optional.Number rating = None]
# [Optional.String mpaa = None]
# [Optional.String imdbnumber = None]
# [Optional.String premiered = None]
# [Optional.String votes = None]
# [Optional.String lastplayed = None]
# [Optional.String originaltitle = None]
# [Optional.String sorttitle = None]
# [Optional.String episodeguide = None]
# [Optional.String thumbnail = None]
# [Optional.String fanart = None]
# [mixed: null|Array.String tag = None]
# [mixed: null|Media.Artwork.Set art = None]
# [Optional.Integer userrating = None]
# [Video.Ratings.Set ratings]
# [Optional.String dateadded = None]
# [Optional.Integer runtime = None] (Runtime in seconds)
# [Optional.String status = None] (Valid values: 'returning series', 'in production', 'planned', 'cancelled', 'ended')
# [mixed: null|Media.UniqueID.Set uniqueid = None]

Returns:

Type: string

=== XBMC ======= XBMC.GetInfoBooleans ====Retrieve info booleans about Kodi and the system
Permissions:* ReadDataParameters:

# array booleans

Returns:

Type: object (Object containing key-value pairs of the retrieved info booleans)

==== XBMC.GetInfoLabels ====Retrieve info labels about Kodi and the system
Permissions:* ReadDataParameters:

# array labels (See http://kodi.wiki/view/InfoLabels for a list of possible info labels)

Returns:

Type: object (Object containing key-value pairs of the retrieved info labels)

== Global Types ===== Addon ======= Addon.Content ====Type: string

==== Addon.Details ====Extends:* Item.Details.BaseProperties:

* string addonid* [string author]* [mixed: boolean|string broken]* [array dependencies]* [string description]* [string disclaimer]* [boolean enabled]* [array extrainfo]* [string fanart]* [boolean installed]* [string name]* [string path]* [integer rating]* [string summary]* [string thumbnail]* Addon.Types type* [string version]

==== Addon.Fields ====Extends:* Item.Fields.Base

==== Addon.Types ====Type: string

=== Application ======= Application.Property.Name ====Type: string

==== Application.Property.Value ====Type: object
Properties:

* [string language]* [boolean muted]* [string name]* [Array.String sorttokens]* [object version]* [integer volume]

=== Array ======= Array.Integer ====Type: array

==== Array.String ====Type: array

=== Audio ======= Audio.Album.ReleaseType ====Type: string

==== Audio.Artist.Roles ====Type: array

==== Audio.Contributors ====Type: array

==== Audio.Details.Album ====Extends:* Audio.Details.MediaProperties:

* Library.Id albumid* [string albumlabel]* [boolean compilation]* [string description]* [boolean isboxset]* [string lastplayed]* [Array.String mood]* [string musicbrainzalbumid]* [string musicbrainzreleasegroupid]* [integer playcount]* [Audio.Album.ReleaseType releasetype = album]* [Audio.Details.Genres songgenres]* [Array.Integer sourceid]* [Array.String style]* [Array.String theme]* [integer totaldiscs]* [string type]

==== Audio.Details.Artist ====Extends:* Audio.Details.BaseProperties:

* string artist* Library.Id artistid* [string born]* [boolean compilationartist]* [string description]* [string died]* [string disambiguation]* [string disbanded]* [string formed]* [string gender]* [Array.String instrument]* [boolean isalbumartist]* [Array.String mood]* [Array.String musicbrainzartistid]* [Audio.Artist.Roles roles]* [Audio.Details.Genres songgenres]* [string sortname]* [Array.Integer sourceid]* [Array.String style]* [string type]* [Array.String yearsactive]

==== Audio.Details.Base ====Extends:* Media.Details.BaseProperties:

* [Media.Artwork art]* [string dateadded]* [Array.String genre]

==== Audio.Details.Genres ====Type: array

==== Audio.Details.Media ====Extends:* Audio.Details.BaseProperties:

* [Array.String artist]* [Array.Integer artistid]* [string displayartist]* [Array.String musicbrainzalbumartistid]* [string originaldate]* [number rating]* [string releasedate]* [string sortartist]* [string title]* [integer userrating]* [integer votes]* [integer year]

==== Audio.Details.Role ====Extends:* Item.Details.BaseProperties:

* Library.Id roleid* [string title]

==== Audio.Details.Song ====Extends:* Audio.Details.MediaProperties:

* [string album]* [Array.String albumartist]* [Array.Integer albumartistid]* [Library.Id albumid = -1]* [Audio.Album.ReleaseType albumreleasetype = album]* [any bitrate]* [any bpm]* [any channels]* [string comment]* [Audio.Contributors contributors]* [integer disc]* [string disctitle]* [string displaycomposer]* [string displayconductor]* [string displaylyricist]* [string displayorchestra]* [integer duration]* [string file]* [Array.Integer genreid]* [string lastplayed]* [string lyrics]* [string mood]* [Array.String musicbrainzartistid]* [string musicbrainztrackid]* [integer playcount]* [any samplerate]* Library.Id songid* [Array.Integer sourceid]* [integer track]

==== Audio.Fields.Album ====Extends:* Item.Fields.Base

==== Audio.Fields.Artist ====Extends:* Item.Fields.Base

==== Audio.Fields.Role ====Extends:* Item.Fields.Base

==== Audio.Fields.Song ====Extends:* Item.Fields.Base

==== Audio.Property.Name ====Type: string

==== Audio.Property.Value ====Type: object
Properties:

* [string librarylastupdated]* [Library.Id missingartistid = -1]

=== Configuration ======= Configuration ====Type: object
Properties:

* Configuration.Notifications notifications

==== Configuration.Notifications ====Type: object
Properties:

* boolean application* boolean audiolibrary* boolean gui* boolean input* boolean other* boolean player* boolean playlist* boolean pvr* boolean system* boolean videolibrary

=== Favourite ======= Favourite.Details.Favourite ====Type: object
Properties:

* [string path]* [string thumbnail]* string title* Favourite.Type type* [string window]* [string windowparameter]

==== Favourite.Fields.Favourite ====Extends:* Item.Fields.Base

==== Favourite.Type ====Type: string

=== Files ======= Files.Media ====Type: string

=== GUI ======= GUI.Property.Name ====Type: string

==== GUI.Property.Value ====Type: object
Properties:

* [object currentcontrol]* [object currentwindow]* [boolean fullscreen]* [object skin]* [GUI.Stereoscopy.Mode stereoscopicmode]

==== GUI.Stereoscopy.Mode ====Type: object
Properties:

* string label* string mode

==== GUI.Window ====Type: string

=== Global ======= Global.IncrementDecrement ====Type: string

==== Global.String.NotEmpty ====Type: string

==== Global.Time ====Type: object
Properties:

* integer hours* integer milliseconds* integer minutes* integer seconds

==== Global.Toggle ====Type: mixed

==== Global.Weekday ====Type: string

=== Input ======= Input.Action ====Type: string

=== Item ======= Item.Details.Base ====Type: object
Properties:

* string label

==== Item.Fields.Base ====Type: array

=== Library ======= Library.Details.Genre ====Extends:* Item.Details.BaseProperties:

* Library.Id genreid* [Array.Integer sourceid]* [string thumbnail]* [string title]

==== Library.Details.Source ====Extends:* Item.Details.BaseProperties:

* string file* [Array.String paths]* Library.Id sourceid

==== Library.Details.Tag ====Extends:* Item.Details.BaseProperties:

* Library.Id tagid* [string title]

==== Library.Fields.Genre ====Extends:* Item.Fields.Base

==== Library.Fields.Source ====Extends:* Item.Fields.Base

==== Library.Fields.Tag ====Extends:* Item.Fields.Base

==== Library.Id ====Type: integer

=== List ======= List.Amount ====Type: integer

==== List.Fields.All ====Extends:* Item.Fields.Base

==== List.Fields.Files ====Extends:* Item.Fields.Base

==== List.Filter.Albums ====Type: mixed

==== List.Filter.Artists ====Type: mixed

==== List.Filter.Episodes ====Type: mixed

==== List.Filter.Fields.Albums ====Type: string

==== List.Filter.Fields.Artists ====Type: string

==== List.Filter.Fields.Episodes ====Type: string

==== List.Filter.Fields.Movies ====Type: string

==== List.Filter.Fields.MusicVideos ====Type: string

==== List.Filter.Fields.Songs ====Type: string

==== List.Filter.Fields.TVShows ====Type: string

==== List.Filter.Fields.Textures ====Type: string

==== List.Filter.Movies ====Type: mixed

==== List.Filter.MusicVideos ====Type: mixed

==== List.Filter.Operators ====Type: string

==== List.Filter.Rule ====Type: object
Properties:

* List.Filter.Operators operator* mixed: string|array value

==== List.Filter.Rule.Albums ====Extends:* List.Filter.RuleProperties:

* List.Filter.Fields.Albums field

==== List.Filter.Rule.Artists ====Extends:* List.Filter.RuleProperties:

* List.Filter.Fields.Artists field

==== List.Filter.Rule.Episodes ====Extends:* List.Filter.RuleProperties:

* List.Filter.Fields.Episodes field

==== List.Filter.Rule.Movies ====Extends:* List.Filter.RuleProperties:

* List.Filter.Fields.Movies field

==== List.Filter.Rule.MusicVideos ====Extends:* List.Filter.RuleProperties:

* List.Filter.Fields.MusicVideos field

==== List.Filter.Rule.Songs ====Extends:* List.Filter.RuleProperties:

* List.Filter.Fields.Songs field

==== List.Filter.Rule.TVShows ====Extends:* List.Filter.RuleProperties:

* List.Filter.Fields.TVShows field

==== List.Filter.Rule.Textures ====Extends:* List.Filter.RuleProperties:

* List.Filter.Fields.Textures field

==== List.Filter.Songs ====Type: mixed

==== List.Filter.TVShows ====Type: mixed

==== List.Filter.Textures ====Type: mixed

==== List.Item.All ====Extends:* List.Item.BaseProperties:

* [string channel]* [integer channelnumber]* [PVR.Channel.Type channeltype = tv]* [string endtime]* [boolean hidden]* [boolean locked]* [string starttime]

==== List.Item.Base ====Extends:* Video.Details.File* Audio.Details.MediaProperties:

* [string album]* [Array.String albumartist]* [Array.Integer albumartistid]* [Library.Id albumid = -1]* [string albumlabel]* [Audio.Album.ReleaseType albumreleasetype = album]* [integer bitrate]* [integer bpm]* [Video.Cast cast]* [integer channels]* [string comment]* [boolean compilation]* [Audio.Contributors contributors]* [Array.String country]* [string description]* [integer disc]* [string disctitle]* [string displaycomposer]* [string displayconductor]* [string displaylyricist]* [string displayorchestra]* [integer duration]* [string dynpath]* [integer episode]* [string episodeguide]* [string firstaired]* [Library.Id id = -1]* [string imdbnumber]* [boolean isboxset]* [string lyrics]* [string mediapath]* [Array.String mood]* [string mpaa]* [Array.String musicbrainzartistid]* [string musicbrainztrackid]* [string originaldate]* [string originaltitle]* [string plotoutline]* [string premiered]* [string productioncode]* [string releasedate]* [Audio.Album.ReleaseType releasetype = album]* [integer samplerate]* [integer season]* [string set]* [Library.Id setid = -1]* [Array.String showlink]* [string showtitle]* [string sorttitle]* [integer specialsortepisode]* [integer specialsortseason]* [Array.String studio]* [Array.String style]* [Array.String tag]* [string tagline]* [Array.String theme]* [integer top250]* [integer totaldiscs]* [integer track]* [string trailer]* [Library.Id tvshowid = -1]* [string type = unknown]* [Media.UniqueID uniqueid]* [string votes]* [integer watchedepisodes]* [Array.String writer]

==== List.Item.File ====Extends:* List.Item.BaseProperties:

* string file* string filetype* [string lastmodified]* [string mimetype]* [integer size]

==== List.Items.Sources ====Type: array

==== List.Limits ====Type: object
Properties:

* [List.Amount end = -1]* [integer start]

==== List.LimitsReturned ====Type: object
Properties:

* [List.Amount end = -1]* [integer start]* integer total

==== List.Sort ====Type: object
Properties:

* [boolean ignorearticle]* [string method = none]* [string order = ascending]* [boolean useartistsortname]

=== Media ======= Media.Artwork ====Type: object
Properties:

* [Global.String.NotEmpty banner]* [Global.String.NotEmpty fanart]* [Global.String.NotEmpty poster]* [Global.String.NotEmpty thumb]

==== Media.Artwork.Set ====Type: object
Properties:

* [mixed: null|Global.String.NotEmpty banner]* [mixed: null|Global.String.NotEmpty fanart]* [mixed: null|Global.String.NotEmpty poster]* [mixed: null|Global.String.NotEmpty thumb]

==== Media.Details.Base ====Extends:* Item.Details.BaseProperties:

* [string fanart]* [string thumbnail]

==== Media.UniqueID ====Type: object

==== Media.UniqueID.Set ====Type: object

=== Notifications ======= Notifications.Item ====Type: mixed

==== Notifications.Item.Type ====Type: string

=== Optional ======= Optional.Boolean ====Type: mixed

==== Optional.Integer ====Type: mixed

==== Optional.Number ====Type: mixed

==== Optional.String ====Type: mixed

=== PVR ======= PVR.Channel.Type ====Type: string

==== PVR.ChannelGroup.Id ====Type: mixed

==== PVR.Details.Broadcast ====Extends:* Item.Details.BaseProperties:

* Library.Id broadcastid* [string cast]* [string director]* [string endtime]* [string episodename]* [integer episodenum]* [integer episodepart]* [string firstaired]* [string genre]* [boolean hasrecording]* [boolean hastimer]* [boolean hastimerrule]* [integer imdbnumber]* [boolean isactive]* [boolean isplayable]* [boolean isseries]* [string originaltitle]* [integer parentalrating]* [string plot]* [string plotoutline]* [integer progress]* [number progresspercentage]* [integer rating]* [string recording]* [integer runtime]* [string starttime]* [string thumbnail]* [string title]* [boolean wasactive]* [string writer]* [integer year]

==== PVR.Details.Channel ====Extends:* Item.Details.BaseProperties:

* [PVR.Details.Broadcast broadcastnext]* [PVR.Details.Broadcast broadcastnow]* [string channel]* Library.Id channelid* [integer channelnumber]* [PVR.Channel.Type channeltype = tv]* [boolean hasarchive]* [boolean hidden]* [string icon]* [boolean isrecording]* [string lastplayed]* [boolean locked]* [integer subchannelnumber]* [string thumbnail]* integer uniqueid

==== PVR.Details.ChannelGroup ====Extends:* Item.Details.BaseProperties:

* Library.Id channelgroupid* PVR.Channel.Type channeltype

==== PVR.Details.ChannelGroup.Extended ====Extends:* PVR.Details.ChannelGroupProperties:

* [array channels]* List.LimitsReturned limits

==== PVR.Details.Recording ====Extends:* Item.Details.BaseProperties:

* [Media.Artwork art]* [string channel]* [integer channeluid]* [string directory]* [string endtime]* [integer epgeventid]* [integer episode]* [string file]* [string genre]* [string icon]* [boolean isdeleted]* [integer lifetime]* [integer playcount]* [string plot]* [string plotoutline]* [boolean radio]* Library.Id recordingid* [Video.Resume resume]* [integer runtime]* [integer season]* [string showtitle]* [string starttime]* [string streamurl]* [string title]

==== PVR.Details.Timer ====Extends:* Item.Details.BaseProperties:

* [Library.Id channelid = -1]* [string directory]* [boolean endanytime]* [integer endmargin]* [string endtime]* [string epgsearchstring]* [integer epguid]* [string file]* [string firstday]* [boolean fulltextepgsearch]* [boolean ismanual]* [boolean isradio]* [boolean isreadonly]* [boolean istimerrule]* [integer lifetime]* [integer maxrecordings]* [integer preventduplicateepisodes]* [integer priority]* [integer recordinggroup]* [integer runtime]* [boolean startanytime]* [integer startmargin]* [string starttime]* [PVR.TimerState state = unknown]* [string summary]* Library.Id timerid* [string title]* [array weekdays]

==== PVR.Fields.Broadcast ====Extends:* Item.Fields.Base

==== PVR.Fields.Channel ====Extends:* Item.Fields.Base

==== PVR.Fields.Recording ====Extends:* Item.Fields.Base

==== PVR.Fields.Timer ====Extends:* Item.Fields.Base

==== PVR.Property.Name ====Type: string

==== PVR.Property.Value ====Type: object
Properties:

* [boolean available]* [boolean recording]* [boolean scanning]

==== PVR.TimerState ====Type: string

=== Player ======= Player.Audio.Stream ====Type: object
Properties:

* integer bitrate* integer channels* string codec* integer index* boolean isdefault* boolean isimpaired* boolean isoriginal* string language* string name* integer samplerate

==== Player.CustomViewMode ====Type: object
Properties:

* [mixed: string|Optional.Boolean nonlinearstretch]* [mixed: string|Optional.Number pixelratio]* [mixed: string|Optional.Number verticalshift]* [mixed: string|Optional.Number zoom]

==== Player.Id ====Type: integer

==== Player.Notifications.Data ====Type: object
Properties:

* Notifications.Item item* Player.Notifications.Player player

==== Player.Notifications.Player ====Type: object
Properties:

* Player.Id playerid* [integer speed]

==== Player.Notifications.Player.Seek ====Extends:* Player.Notifications.PlayerProperties:

* [Global.Time seekoffset]* [Global.Time time]

==== Player.Position.Percentage ====Type: number

==== Player.Position.Time ====Type: object
Properties:

* [integer hours]* [integer milliseconds]* [integer minutes]* [integer seconds]

==== Player.Property.Name ====Type: string

==== Player.Property.Value ====Type: object
Properties:

* [array audiostreams]* [boolean canchangespeed]* [boolean canmove]* [boolean canrepeat]* [boolean canrotate]* [boolean canseek]* [boolean canshuffle]* [boolean canzoom]* [Player.Audio.Stream currentaudiostream]* [Player.Subtitle currentsubtitle]* [Player.Video.Stream currentvideostream]* [boolean live]* [boolean partymode]* [Player.Position.Percentage percentage]* [Playlist.Id playlistid = -1]* [Playlist.Position position = -1]* [Player.Repeat repeat = off]* [boolean shuffled]* [integer speed]* [boolean subtitleenabled]* [array subtitles]* [Global.Time time]* [Global.Time totaltime]* [Player.Type type = video]* [array videostreams]

==== Player.Repeat ====Type: string

==== Player.Speed ====Type: object
Properties:

* [integer speed]

==== Player.Subtitle ====Type: object
Properties:

* integer index* boolean isdefault* boolean isforced* boolean isimpaired* string language* string name

==== Player.Type ====Type: string

==== Player.Video.Stream ====Type: object
Properties:

* string codec* integer height* integer index* string language* string name* integer width

==== Player.ViewMode ====Type: string

=== Playlist ======= Playlist.Id ====Type: integer

==== Playlist.Item ====Type: mixed

==== Playlist.Position ====Type: integer

==== Playlist.Property.Name ====Type: string

==== Playlist.Property.Value ====Type: object
Properties:

* [integer size]* [Playlist.Type type = unknown]

==== Playlist.Type ====Type: string

=== Profiles ======= Profiles.Details.Profile ====Extends:* Item.Details.BaseProperties:

* [integer lockmode]* [string thumbnail]

==== Profiles.Fields.Profile ====Extends:* Item.Fields.Base

==== Profiles.Password ====Type: object
Properties:

* [string encryption = md5]* string value

=== Setting ======= Setting.Details.Base ====Type: object
Properties:

* [string help]* string id* string label

==== Setting.Details.Category ====Extends:* Setting.Details.BaseProperties:

* [array groups]

==== Setting.Details.Control ====Type: mixed

==== Setting.Details.ControlBase ====Type: object
Properties:

* boolean delayed* string format* string type

==== Setting.Details.ControlButton ====Extends:* Setting.Details.ControlHeadingProperties:

* string type

==== Setting.Details.ControlCheckmark ====Extends:* Setting.Details.ControlBaseProperties:

* string format* string type

==== Setting.Details.ControlEdit ====Extends:* Setting.Details.ControlHeadingProperties:

* boolean hidden* string type* boolean verifynewvalue

==== Setting.Details.ControlHeading ====Extends:* Setting.Details.ControlBaseProperties:

* [string heading]

==== Setting.Details.ControlLabel ====Extends:* Setting.Details.ControlBaseProperties:

* string format* string type

==== Setting.Details.ControlList ====Extends:* Setting.Details.ControlHeadingProperties:

* boolean multiselect* string type

==== Setting.Details.ControlRange ====Extends:* Setting.Details.ControlBaseProperties:

* string formatlabel* string formatvalue* string type

==== Setting.Details.ControlSlider ====Extends:* Setting.Details.ControlHeadingProperties:

* string formatlabel* boolean popup* string type

==== Setting.Details.ControlSpinner ====Extends:* Setting.Details.ControlBaseProperties:

* [string formatlabel]* [string minimumlabel]* string type

==== Setting.Details.Group ====Type: object
Properties:

* string id* [array settings]

==== Setting.Details.Section ====Extends:* Setting.Details.BaseProperties:

* [array categories]

==== Setting.Details.Setting ====Type: mixed

==== Setting.Details.SettingAction ====Extends:* Setting.Details.SettingBaseProperties:

* string data

==== Setting.Details.SettingAddon ====Extends:* Setting.Details.SettingStringProperties:

* Addon.Types addontype

==== Setting.Details.SettingBase ====Extends:* Setting.Details.BaseProperties:

* [Setting.Details.Control control]* boolean enabled* Setting.Level level* [string parent]* Setting.Type type

==== Setting.Details.SettingBool ====Extends:* Setting.Details.SettingBaseProperties:

* boolean default* boolean value

==== Setting.Details.SettingDate ====Extends:* Setting.Details.SettingString

==== Setting.Details.SettingInt ====Extends:* Setting.Details.SettingBaseProperties:

* integer default* [integer maximum]* [integer minimum]* [array options]* [integer step]* integer value

==== Setting.Details.SettingList ====Extends:* Setting.Details.SettingBaseProperties:

* Setting.Value.List default* Setting.Details.Setting definition* string delimiter* Setting.Type elementtype* [integer maximumitems]* [integer minimumitems]* Setting.Value.List value

==== Setting.Details.SettingNumber ====Extends:* Setting.Details.SettingBaseProperties:

* number default* number maximum* number minimum* number step* number value

==== Setting.Details.SettingPath ====Extends:* Setting.Details.SettingStringProperties:

* [array sources]* boolean writable

==== Setting.Details.SettingString ====Extends:* Setting.Details.SettingBaseProperties:

* boolean allowempty* string default* [array options]* string value

==== Setting.Details.SettingTime ====Extends:* Setting.Details.SettingString

==== Setting.Level ====Type: string

==== Setting.Type ====Type: string

==== Setting.Value ====Type: mixed

==== Setting.Value.Extended ====Type: mixed

==== Setting.Value.List ====Type: array

=== System ======= System.Property.Name ====Type: string

==== System.Property.Value ====Type: object
Properties:

* [boolean canhibernate]* [boolean canreboot]* [boolean canshutdown]* [boolean cansuspend]

=== Textures ======= Textures.Details.Size ====Type: object
Properties:

* [integer height]* [string lastused]* [integer size]* [integer usecount]* [integer width]

==== Textures.Details.Texture ====Type: object
Properties:

* [string cachedurl]* [string imagehash]* [string lasthashcheck]* [array sizes]* [Library.Id textureid = -1]* [string url]

==== Textures.Fields.Texture ====Extends:* Item.Fields.Base

=== Video ======= Video.Cast ====Type: array

==== Video.Details.Base ====Extends:* Media.Details.BaseProperties:

* [Media.Artwork art]* [integer playcount]

==== Video.Details.Episode ====Extends:* Video.Details.FileProperties:

* [Video.Cast cast]* [integer episode]* Library.Id episodeid* [string firstaired]* [string originaltitle]* [string productioncode]* [number rating]* [any ratings]* [integer season]* [Library.Id seasonid = -1]* [string showtitle]* [integer specialsortepisode]* [integer specialsortseason]* [Library.Id tvshowid = -1]* [Media.UniqueID uniqueid]* [integer userrating]* [string votes]* [Array.String writer]

==== Video.Details.File ====Extends:* Video.Details.ItemProperties:

* [Array.String director]* [Video.Resume resume]* [integer runtime]* [Video.Streams streamdetails]

==== Video.Details.Item ====Extends:* Video.Details.MediaProperties:

* [string dateadded]* [string file]* [string lastplayed]* [string plot]

==== Video.Details.Media ====Extends:* Video.Details.BaseProperties:

* [string title]

==== Video.Details.Movie ====Extends:* Video.Details.FileProperties:

* [Video.Cast cast]* [Array.String country]* [Array.String genre]* [string imdbnumber]* Library.Id movieid* [string mpaa]* [string originaltitle]* [string plotoutline]* [string premiered]* [number rating]* [any ratings]* [string set]* [Library.Id setid = -1]* [Array.String showlink]* [string sorttitle]* [Array.String studio]* [Array.String tag]* [string tagline]* [integer top250]* [string trailer]* [Media.UniqueID uniqueid]* [integer userrating]* [string votes]* [Array.String writer]* [integer year]

==== Video.Details.MovieSet ====Extends:* Video.Details.MediaProperties:

* [string plot]* Library.Id setid

==== Video.Details.MovieSet.Extended ====Extends:* Video.Details.MovieSetProperties:

* List.LimitsReturned limits* [array movies]

==== Video.Details.MusicVideo ====Extends:* Video.Details.FileProperties:

* [string album]* [Array.String artist]* [Array.String genre]* Library.Id musicvideoid* [string premiered]* [number rating]* [Array.String studio]* [Array.String tag]* [integer track]* [integer userrating]* [integer year]

==== Video.Details.Season ====Extends:* Video.Details.BaseProperties:

* [integer episode]* integer season* Library.Id seasonid* [string showtitle]* [string title]* [Library.Id tvshowid = -1]* [integer userrating]* [integer watchedepisodes]

==== Video.Details.TVShow ====Extends:* Video.Details.ItemProperties:

* [Video.Cast cast]* [integer episode]* [string episodeguide]* [Array.String genre]* [string imdbnumber]* [string mpaa]* [string originaltitle]* [string premiered]* [number rating]* [any ratings]* [integer runtime]* [integer season]* [string sorttitle]* [string status]* [Array.String studio]* [Array.String tag]* Library.Id tvshowid* [Media.UniqueID uniqueid]* [integer userrating]* [string votes]* [integer watchedepisodes]* [integer year]

==== Video.Fields.Episode ====Extends:* Item.Fields.Base

==== Video.Fields.Movie ====Extends:* Item.Fields.Base

==== Video.Fields.MovieSet ====Extends:* Item.Fields.Base

==== Video.Fields.MusicVideo ====Extends:* Item.Fields.Base

==== Video.Fields.Season ====Extends:* Item.Fields.Base

==== Video.Fields.TVShow ====Extends:* Item.Fields.Base

==== Video.Rating ====Type: object
Properties:

* [boolean default]* number rating* [integer votes]

==== Video.Ratings ====Type: object

==== Video.Ratings.Set ====Type: object

==== Video.Resume ====Type: object
Properties:

* [number position]* [number total]

==== Video.Streams ====Type: object
Properties:

* [array audio]* [array subtitle]* [array video]

== Notifications ===== Application ======= Application.OnVolumeChanged ====The volume of the application has changed.
Parameters:

# string sender# object data:#* boolean muted#* integer volume

=== AudioLibrary ======= AudioLibrary.OnCleanFinished ====The audio library has been cleaned.
Parameters:

# string sender# string data

==== AudioLibrary.OnCleanStarted ====An audio library clean operation has started.
Parameters:

# string sender# string data

==== AudioLibrary.OnExport ====An audio library export has finished.
Parameters:

# string sender# [object data]:#* [integer failcount = 0]#* [string file = ""]

==== AudioLibrary.OnRemove ====An audio item has been removed.
Parameters:

# string sender# object data:#* Library.Id id#* Optional.Boolean transaction#* Notifications.Library.Audio.Type type

==== AudioLibrary.OnScanFinished ====Scanning the audio library has been finished.
Parameters:

# string sender# string data

==== AudioLibrary.OnScanStarted ====An audio library scan has started.
Parameters:

# string sender# string data

==== AudioLibrary.OnUpdate ====An audio item has been updated.
Parameters:

# string sender# object data:#* Optional.Boolean added#* Library.Id id#* Optional.Boolean transaction#* string type

=== GUI ======= GUI.OnDPMSActivated ====Energy saving/DPMS has been activated.
Parameters:

# string sender# string data

==== GUI.OnDPMSDeactivated ====Energy saving/DPMS has been deactivated.
Parameters:

# string sender# string data

==== GUI.OnScreensaverActivated ====The screensaver has been activated.
Parameters:

# string sender# string data

==== GUI.OnScreensaverDeactivated ====The screensaver has been deactivated.
Parameters:

# string sender# object data:#* boolean shuttingdown

=== Input ======= Input.OnInputFinished ====The user has provided the requested input.
Parameters:

# string sender# string data

==== Input.OnInputRequested ====The user is requested to provide some information.
Parameters:

# string sender# object data:#* string title#* string type#* string value

=== Player ======= Player.OnAVChange ====Audio- or videostream has changed. If there is no ID available extra information will be provided.
Parameters:

# string sender# Player.Notifications.Data data

==== Player.OnAVStart ====Playback of a media item has been started and first frame is available. If there is no ID available extra information will be provided.
Parameters:

# string sender# Player.Notifications.Data data

==== Player.OnPause ====Playback of a media item has been paused. If there is no ID available extra information will be provided.
Parameters:

# string sender# Player.Notifications.Data data

==== Player.OnPlay ====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.
Parameters:

# string sender# Player.Notifications.Data data

==== Player.OnPropertyChanged ====A property of the playing items has changed.
Parameters:

# string sender# object data:#* Player.Notifications.Player player#* Player.Property.Value property

==== Player.OnResume ====Playback of a media item has been resumed. If there is no ID available extra information will be provided.
Parameters:

# string sender# Player.Notifications.Data data

==== Player.OnSeek ====The playback position has been changed. If there is no ID available extra information will be provided.
Parameters:

# string sender# object data:#* Notifications.Item item#* Player.Notifications.Player.Seek player

==== Player.OnSpeedChanged ====Speed of the playback of a media item has been changed. If there is no ID available extra information will be provided.
Parameters:

# string sender# Player.Notifications.Data data

==== Player.OnStop ====Playback of a media item has been stopped. If there is no ID available extra information will be provided.
Parameters:

# string sender# object data:#* boolean end#* Notifications.Item item

=== Playlist ======= Playlist.OnAdd ====A playlist item has been added.
Parameters:

# string sender# object data:#* Notifications.Item item#* Playlist.Id playlistid#* Playlist.Position position

==== Playlist.OnClear ====A playlist item has been cleared.
Parameters:

# string sender# object data:#* Playlist.Id playlistid

==== Playlist.OnRemove ====A playlist item has been removed.
Parameters:

# string sender# object data:#* Playlist.Id playlistid#* Playlist.Position position

=== System ======= System.OnLowBattery ====The system is on low battery.
Parameters:

# string sender# string data

==== System.OnQuit ====Kodi will be closed.
Parameters:

# string sender# object data:#* integer exitcode

==== System.OnRestart ====The system will be restarted.
Parameters:

# string sender# string data

==== System.OnSleep ====The system will be suspended.
Parameters:

# string sender# string data

==== System.OnWake ====The system woke up from suspension.
Parameters:

# string sender# string data

=== VideoLibrary ======= VideoLibrary.OnCleanFinished ====The video library has been cleaned.
Parameters:

# string sender# string data

==== VideoLibrary.OnCleanStarted ====A video library clean operation has started.
Parameters:

# string sender# string data

==== VideoLibrary.OnExport ====A video library export has finished.
Parameters:

# string sender# [object data]:#* [integer failcount = 0]#* [string file = ""]#* [string root = ""]

==== VideoLibrary.OnRefresh ====The video library has been refreshed and a home screen reload might be necessary.
Parameters:

# string sender# string data

==== VideoLibrary.OnRemove ====A video item has been removed.
Parameters:

# string sender# object data:#* Library.Id id#* Optional.Boolean transaction#* Notifications.Library.Video.Type type

==== VideoLibrary.OnScanFinished ====Scanning the video library has been finished.
Parameters:

# string sender# string data

==== VideoLibrary.OnScanStarted ====A video library scan has started.
Parameters:

# string sender# string data

==== VideoLibrary.OnUpdate ====A video item has been updated.
Parameters:

# string sender# object data:#* Optional.Boolean added#* Library.Id id#* integer playcount = -1#* Optional.Boolean transaction#* string type

See also

External links