User:Ronie: Difference between revisions

From Official Kodi Wiki
Jump to navigation Jump to search
No edit summary
No edit summary
 
(21 intermediate revisions by the same user not shown)
Line 1: Line 1:
{{mininav|[[Development]]|[[JSON-RPC API]]}}
[[File:ronie.jpg]]
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.
 
 
 
JSON-RPC 2.0 compatibility
{| class="prettytable" style="margin-right: 0;"
!style="padding-left: 5px; width: 7em; text-align: left;"|Version
!style="padding-left: 10px; padding-right: 10px;"|Method calls
!style="padding-left: 10px; padding-right: 10px;"|Notifications<br />(server-side)
!style="padding-left: 10px; padding-right: 10px;"|Notifications<br />(client-side)
!style="padding-left: 10px; padding-right: 10px;"|Parameters<br />by-name
!style="padding-left: 10px; padding-right: 10px;"|Parameters<br />by-position
!style="padding-left: 10px; padding-right: 10px;"|Batch requests
|-
|style="padding-left: 5px;"|Version 6
|{{yes}}
|{{yes}}
|{{yes}}
|{{yes}}
|{{yes}}
|{{yes}}
|-
|}
 
Documentation (JSON Schema)
Supported features of JSON Schema
<div style="float:left; margin-right:2em">
{| class="prettytable" style="margin-right: 0;"
!style="width: 10em; text-align: left;"|Schema
!style="padding-left: 10px; padding-right: 10px;"|IETF Draft 03
|-
|[http://tools.ietf.org/html/draft-zyp-json-schema-03#section-5.1 type]
|{{yes}}
|-
|[http://tools.ietf.org/html/draft-zyp-json-schema-03#section-5.2 properties]
|{{yes}}
|-
|[http://tools.ietf.org/html/draft-zyp-json-schema-03#section-5.3 patternProperties]
|{{no}}
|-
|[http://tools.ietf.org/html/draft-zyp-json-schema-03#section-5.4 additionalProperties]
|{{yes}}
|-
|[http://tools.ietf.org/html/draft-zyp-json-schema-03#section-5.5 items]
|{{yes}}
|-
|[http://tools.ietf.org/html/draft-zyp-json-schema-03#section-5.6 additionalItems]
|{{yes}}
|-
|[http://tools.ietf.org/html/draft-zyp-json-schema-03#section-5.7 required]
|{{yes}}
|-
|[http://tools.ietf.org/html/draft-zyp-json-schema-03#section-5.8 dependencies]
|{{no}}
|-
|[http://tools.ietf.org/html/draft-zyp-json-schema-03#section-5.9 minimum]
|{{yes}}
|-
|[http://tools.ietf.org/html/draft-zyp-json-schema-03#section-5.10 maximum]
|{{yes}}
|-
|}
</div>
 
<div style="float:left; margin-right:2em">
{| class="prettytable" style="margin-right: 0;"
!style="width: 10em; text-align: left;"|Schema
 
!style="padding-left: 10px; padding-right: 10px;"|IETF Draft 03
 
|-
|[http://tools.ietf.org/html/draft-zyp-json-schema-03#section-5.11 exclusiveMinimum]
|{{yes}}
|-
|[http://tools.ietf.org/html/draft-zyp-json-schema-03#section-5.12 exclusiveMaximum]
|{{yes}}
|-
|[http://tools.ietf.org/html/draft-zyp-json-schema-03#section-5.13 minItems]
|{{yes}}
|-
|[http://tools.ietf.org/html/draft-zyp-json-schema-03#section-5.14 maxItems]
|{{yes}}
|-
|[http://tools.ietf.org/html/draft-zyp-json-schema-03#section-5.15 uniqueItems]
|{{yes}}
|-
|[http://tools.ietf.org/html/draft-zyp-json-schema-03#section-5.16 pattern]
|{{no}}
|-
|[http://tools.ietf.org/html/draft-zyp-json-schema-03#section-5.17 minLength]
|{{yes}}
|-
|[http://tools.ietf.org/html/draft-zyp-json-schema-03#section-5.18 maxLength]
|{{yes}}
|-
|[http://tools.ietf.org/html/draft-zyp-json-schema-03#section-5.19 enum]
|{{yes}}
|-
|[http://tools.ietf.org/html/draft-zyp-json-schema-03#section-5.20 default]
|{{yes}}
|-
|}
</div>
 
<div style="float:left;">
{| class="prettytable" style="margin-right: 0;"
!style="width: 10em; text-align: left;"|Schema
 
!style="padding-left: 10px; padding-right: 10px;"|IETF Draft 03
|-
|[http://tools.ietf.org/html/draft-zyp-json-schema-03#section-5.21 title]
|{{no}}
|-
|[http://tools.ietf.org/html/draft-zyp-json-schema-03#section-5.22 description]
|{{yes}}
|-
|[http://tools.ietf.org/html/draft-zyp-json-schema-03#section-5.23 format]
|{{no}}
|-
|[http://tools.ietf.org/html/draft-zyp-json-schema-03#section-5.24 divisibleBy]
|{{yes}}
|-
|[http://tools.ietf.org/html/draft-zyp-json-schema-03#section-5.25 disallow]
|{{no}}
|-
|[http://tools.ietf.org/html/draft-zyp-json-schema-03#section-5.26 extends]
|{{yes}}
|-
|[http://tools.ietf.org/html/draft-zyp-json-schema-03#section-5.27 id]
|{{yes}}
|-
|[http://tools.ietf.org/html/draft-zyp-json-schema-03#section-5.28 $ref]
|{{yes}}
|-
|[http://tools.ietf.org/html/draft-zyp-json-schema-03#section-5.29 $schema]
|{{no}}
|-
|[http://tools.ietf.org/html/draft-zyp-json-schema-03#section-6 Hyper Schema]
|{{no}}
|-
|}
</div>
<div style="clear:left;"></div>
 
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
{|
|
<syntaxhighlight lang=json enclose="div">
{
  "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" }
          }
        }
      }
    }
  }
}
</syntaxhighlight>
|}
 
Namespaces
The Kodi JSON-RPC API is split up into namespaces, which contain methods that can be called. These namespaces are:
{|
|
<pre>
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
</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 lang="javascript" enclose="div">
{
  "type": "method",
  "description": "Executes the given addon with the given parameters (if possible)",
  "transport": "Response",
  "permission": "ExecuteAddon",
  "params": [
    {
      "name": "addonid",
      "type": "string",
      "required": true
    },
    {
      "name": "params",
      "type": [
        {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        {
          "type": "string",
          "description": "URL path (must start with / or ?"
        }
      ],
      "default": ""
    },
    {
      "name": "wait",
      "type": "boolean",
      "default": false
    }
  ],
  "returns": "string"
}
</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:'''
# ''[[#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 lang="javascript" enclose="div">
{
  "type": "method",
  "description": "Gets the details of a specific addon",
  "transport": "Response",
  "permission": "ReadData",
  "params": [
    {
      "name": "addonid",
      "type": "string",
      "required": true
    },
    {
      "name": "properties",
      "$ref": "Addon.Fields"
    }
  ],
  "returns": {
    "type": "object",
    "properties": {
      "limits": {
        "$ref": "List.LimitsReturned",
        "required": true
      },
      "addon": {
        "$ref": "Addon.Details",
        "required": true
      }
    }
  }
}
</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]<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 lang="javascript" enclose="div">
{
  "type": "method",
  "description": "Gets all available addons",
  "transport": "Response",
  "permission": "ReadData",
  "params": [
    {
      "name": "type",
      "$ref": "Addon.Types"
    },
    {
      "name": "content",
      "$ref": "Addon.Content",
      "description": "Content provided by the addon. Only considered for plugins and scripts."
    },
    {
      "name": "enabled",
      "type": [
        {
          "type": "boolean"
        },
        {
          "type": "string",
          "enum": [
            "all"
          ]
        }
      ],
      "default": "all"
    },
    {
      "name": "properties",
      "$ref": "Addon.Fields"
    },
    {
      "name": "limits",
      "$ref": "List.Limits"
    },
    {
      "name": "installed",
      "type": [
        {
          "type": "boolean"
        },
        {
          "type": "string",
          "enum": [
            "all"
          ]
        }
      ],
      "default": true
    }
  ],
  "returns": {
    "type": "object",
    "properties": {
      "limits": {
        "$ref": "List.LimitsReturned",
        "required": true
      },
      "addons": {
        "type": "array",
        "items": {
          "$ref": "Addon.Details"
        }
      }
    }
  }
}
</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 lang="javascript" enclose="div">
{
  "type": "method",
  "description": "Enables/Disables a specific addon",
  "transport": "Response",
  "permission": "ManageAddon",
  "params": [
    {
      "name": "addonid",
      "type": "string",
      "required": true
    },
    {
      "name": "enabled",
      "$ref": "Global.Toggle",
      "required": true
    }
  ],
  "returns": "string"
}
</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 lang="javascript" enclose="div">
{
  "type": "method",
  "description": "Retrieves the values of the given properties",
  "transport": "Response",
  "permission": "ReadData",
  "params": [
    {
      "name": "properties",
      "type": "array",
      "uniqueItems": true,
      "required": true,
      "items": {
        "$ref": "Application.Property.Name"
      }
    }
  ],
  "returns": {
    "$ref": "Application.Property.Value",
    "required": true
  }
}
</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 lang="javascript" enclose="div">
{
  "type": "method",
  "description": "Quit application",
  "transport": "Response",
  "permission": "ControlPower",
  "params": [],
  "returns": "string"
}
</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 lang="javascript" enclose="div">
{
  "type": "method",
  "description": "Toggle mute/unmute",
  "transport": "Response",
  "permission": "ControlPlayback",
  "params": [
    {
      "name": "mute",
      "required": true,
      "$ref": "Global.Toggle"
    }
  ],
  "returns": {
    "type": "boolean",
    "description": "Mute state"
  }
}
</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 lang="javascript" enclose="div">
{
  "type": "method",
  "description": "Set the current volume",
  "transport": "Response",
  "permission": "ControlPlayback",
  "params": [
    {
      "name": "volume",
      "type": [
        {
          "type": "integer",
          "minimum": 0,
          "maximum": 100,
          "required": true
        },
        {
          "$ref": "Global.IncrementDecrement",
          "required": true
        }
      ],
      "required": true
    }
  ],
  "returns": "integer"
}
</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 lang="javascript" enclose="div">
{
  "type": "method",
  "description": "Cleans the audio library from non-existent items",
  "transport": "Response",
  "permission": "RemoveData",
  "params": [
    {
      "name": "showdialogs",
      "type": "boolean",
      "default": true,
      "description": "Whether or not to show the progress bar or any other GUI dialog"
    }
  ],
  "returns": "string"
}
</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 lang="javascript" enclose="div">
{
  "type": "method",
  "description": "Exports all items from the audio library",
  "transport": "Response",
  "permission": "WriteFile",
  "params": [
    {
      "name": "options",
      "type": [
        {
          "type": "object",
          "required": true,
          "additionalProperties": false,
          "properties": {
            "path": {
              "type": "string",
              "required": true,
              "minLength": 1,
              "description": "Path to the directory to where the data should be exported"
            }
          }
        },
        {
          "type": "object",
          "required": true,
          "additionalProperties": false,
          "properties": {
            "overwrite": {
              "type": "boolean",
              "default": false,
              "description": "Whether to overwrite existing exported files"
            },
            "images": {
              "type": "boolean",
              "default": false,
              "description": "Whether to export thumbnails and fanart images"
            }
          }
        }
      ]
    }
  ],
  "returns": "string"
}
</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 lang="javascript" enclose="div">
{
  "type": "method",
  "description": "Retrieve details about a specific album",
  "transport": "Response",
  "permission": "ReadData",
  "params": [
    {
      "name": "albumid",
      "$ref": "Library.Id",
      "required": true
    },
    {
      "name": "properties",
      "$ref": "Audio.Fields.Album"
    }
  ],
  "returns": {
    "type": "object",
    "properties": {
      "albumdetails": {
        "$ref": "Audio.Details.Album"
      }
    }
  }
}
</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:'''
# ''[[#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 lang="javascript" enclose="div">
{
  "type": "method",
  "description": "Retrieve all albums from specified artist (and role) or that has songs of the specified genre",
  "transport": "Response",
  "permission": "ReadData",
  "params": [
    {
      "name": "properties",
      "$ref": "Audio.Fields.Album"
    },
    {
      "name": "limits",
      "$ref": "List.Limits"
    },
    {
      "name": "sort",
      "$ref": "List.Sort"
    },
    {
      "name": "filter",
      "type": [
        {
          "type": "object",
          "properties": {
            "genreid": {
              "$ref": "Library.Id",
              "required": true,
              "description": "Song genre. Filter for existence of songs with this genre"
            }
          },
          "additionalProperties": false
        },
        {
          "type": "object",
          "properties": {
            "genre": {
              "type": "string",
              "minLength": 1,
              "required": true,
              "description": "Song genre. Filter for existence of songs with this genre"
            }
          },
          "additionalProperties": false
        },
        {
          "type": "object",
          "properties": {
            "artistid": {
              "$ref": "Library.Id",
              "required": true
            }
          },
          "additionalProperties": false
        },
        {
          "type": "object",
          "properties": {
            "artistid": {
              "$ref": "Library.Id",
              "required": true
            },
            "roleid": {
              "$ref": "Library.Id",
              "required": true
            }
          },
          "additionalProperties": false
        },
        {
          "type": "object",
          "properties": {
            "artistid": {
              "$ref": "Library.Id",
              "required": true
            },
            "role": {
              "type": "string",
              "minLength": 1,
              "required": true
            }
          },
          "additionalProperties": false
        },
        {
          "type": "object",
          "properties": {
            "artist": {
              "type": "string",
              "minLength": 1,
              "required": true
            }
          },
          "additionalProperties": false
        },
        {
          "type": "object",
          "properties": {
            "artist": {
              "type": "string",
              "minLength": 1,
              "required": true
            },
            "roleid": {
              "$ref": "Library.Id",
              "required": true
            }
          },
          "additionalProperties": false
        },
        {
          "type": "object",
          "properties": {
            "artist": {
              "type": "string",
              "minLength": 1,
              "required": true
            },
            "role": {
              "type": "string",
              "minLength": 1,
              "required": true
            }
          },
          "additionalProperties": false
        },
        {
          "$ref": "List.Filter.Albums"
        }
      ]
    },
    {
      "name": "includesingles",
      "type": "boolean",
      "default": false
    },
    {
      "name": "allroles",
      "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."
    }
  ],
  "returns": {
    "type": "object",
    "properties": {
      "limits": {
        "$ref": "List.LimitsReturned",
        "required": true
      },
      "albums": {
        "type": "array",
        "items": {
          "$ref": "Audio.Details.Album"
        }
      }
    }
  }
}
</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 lang="javascript" enclose="div">
{
  "type": "method",
  "description": "Retrieve details about a specific artist",
  "transport": "Response",
  "permission": "ReadData",
  "params": [
    {
      "name": "artistid",
      "$ref": "Library.Id",
      "required": true
    },
    {
      "name": "properties",
      "$ref": "Audio.Fields.Artist"
    }
  ],
  "returns": {
    "type": "object",
    "properties": {
      "artistdetails": {
        "$ref": "Audio.Details.Artist"
      }
    }
  }
}
</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] (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 lang="javascript" 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",
  "transport": "Response",
  "permission": "ReadData",
  "params": [
    {
      "name": "albumartistsonly",
      "$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"
    },
    {
      "name": "properties",
      "$ref": "Audio.Fields.Artist"
    },
    {
      "name": "limits",
      "$ref": "List.Limits"
    },
    {
      "name": "sort",
      "$ref": "List.Sort"
    },
    {
      "name": "filter",
      "type": [
        {
          "type": "object",
          "properties": {
            "genreid": {
              "$ref": "Library.Id",
              "required": true,
              "description": "Deprecated, use songgenreid. Filter for existence of songs with this genre"
            }
          },
          "additionalProperties": false
        },
        {
          "type": "object",
          "properties": {
            "songgenreid": {
              "$ref": "Library.Id",
              "required": true,
              "description": "Song genreid. Filter for existence of songs with this genre"
            }
          },
          "additionalProperties": false
        },
        {
          "type": "object",
          "properties": {
            "songgenreid": {
              "$ref": "Library.Id",
              "required": true
            },
            "roleid": {
              "$ref": "Library.Id",
              "required": true
            }
          },
          "additionalProperties": false
        },
        {
          "type": "object",
          "properties": {
            "songgenreid": {
              "$ref": "Library.Id",
              "required": true
            },
            "role": {
              "type": "string",
              "minLength": 1,
              "required": true
            }
          },
          "additionalProperties": false
        },
        {
          "type": "object",
          "properties": {
            "genre": {
              "type": "string",
              "minLength": 1,
              "required": true,
              "description": "Deprecated, use songgenre. Filter for existence of songs with this genre"
            }
          },
          "additionalProperties": false
        },
        {
          "type": "object",
          "properties": {
            "songgenre": {
              "type": "string",
              "minLength": 1,
              "required": true,
              "description": "Song genre. Filter for existence of songs with this genre"
            }
          },
          "additionalProperties": false
        },
        {
          "type": "object",
          "properties": {
            "songgenre": {
              "type": "string",
              "minLength": 1,
              "required": true
            },
            "roleid": {
              "$ref": "Library.Id",
              "required": true
            }
          },
          "additionalProperties": false
        },
        {
          "type": "object",
          "properties": {
            "songgenre": {
              "type": "string",
              "minLength": 1,
              "required": true
            },
            "role": {
              "type": "string",
              "minLength": 1,
              "required": true
            }
          },
          "additionalProperties": false
        },
        {
          "type": "object",
          "properties": {
            "albumid": {
              "$ref": "Library.Id",
              "required": true
            }
          },
          "additionalProperties": false
        },
        {
          "type": "object",
          "properties": {
            "album": {
              "type": "string",
              "minLength": 1,
              "required": true
            }
          },
          "additionalProperties": false
        },
        {
          "type": "object",
          "properties": {
            "songid": {
              "$ref": "Library.Id",
              "required": true
            }
          },
          "additionalProperties": false
        },
        {
          "type": "object",
          "properties": {
            "songid": {
              "$ref": "Library.Id",
              "required": true
            },
            "roleid": {
              "$ref": "Library.Id",
              "required": true
            }
          },
          "additionalProperties": false
        },
        {
          "type": "object",
          "properties": {
            "songid": {
              "$ref": "Library.Id",
              "required": true
            },
            "role": {
              "type": "string",
              "minLength": 1,
              "required": true
            }
          },
          "additionalProperties": false
        },
        {
          "type": "object",
          "properties": {
            "roleid": {
              "$ref": "Library.Id",
              "required": true,
              "description": "Role contributed by artist. Overridden by allroles parameter"
            }
          },
          "additionalProperties": false
        },
        {
          "type": "object",
          "properties": {
            "role": {
              "type": "string",
              "minLength": 1,
              "required": true,
              "description": "Role contributed by artist. Overridden by allroles parameter"
            }
          },
          "additionalProperties": false
        },
        {
          "$ref": "List.Filter.Artists"
        }
      ]
    },
    {
      "name": "allroles",
      "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."
    }
  ],
  "returns": {
    "type": "object",
    "properties": {
      "limits": {
        "$ref": "List.LimitsReturned",
        "required": true
      },
      "artists": {
        "type": "array",
        "items": {
          "$ref": "Audio.Details.Artist"
        }
      }
    }
  }
}
</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:'''
# ''[[#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 lang="javascript" enclose="div">
{
  "type": "method",
  "description": "Retrieve all genres",
  "transport": "Response",
  "permission": "ReadData",
  "params": [
    {
      "name": "properties",
      "$ref": "Library.Fields.Genre"
    },
    {
      "name": "limits",
      "$ref": "List.Limits"
    },
    {
      "name": "sort",
      "$ref": "List.Sort"
    }
  ],
  "returns": {
    "type": "object",
    "properties": {
      "limits": {
        "$ref": "List.LimitsReturned",
        "required": true
      },
      "genres": {
        "type": "array",
        "required": true,
        "items": {
          "$ref": "Library.Details.Genre"
        }
      }
    }
  }
}
</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 lang="javascript" enclose="div">
{
  "type": "method",
  "description": "Retrieves the values of the music library properties",
  "transport": "Response",
  "permission": "ReadData",
  "params": [
    {
      "name": "properties",
      "type": "array",
      "uniqueItems": true,
      "required": true,
      "items": {
        "$ref": "Audio.Property.Name"
      }
    }
  ],
  "returns": {
    "$ref": "Audio.Property.Value",
    "required": true
  }
}
</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 lang="javascript" enclose="div">
{
  "type": "method",
  "description": "Retrieve recently added albums",
  "transport": "Response",
  "permission": "ReadData",
  "params": [
    {
      "name": "properties",
      "$ref": "Audio.Fields.Album"
    },
    {
      "name": "limits",
      "$ref": "List.Limits"
    },
    {
      "name": "sort",
      "$ref": "List.Sort"
    }
  ],
  "returns": {
    "type": "object",
    "properties": {
      "limits": {
        "$ref": "List.LimitsReturned",
        "required": true
      },
      "albums": {
        "type": "array",
        "items": {
          "$ref": "Audio.Details.Album"
        }
      }
    }
  }
}
</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] (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 lang="javascript" enclose="div">
{
  "type": "method",
  "description": "Retrieve recently added songs",
  "transport": "Response",
  "permission": "ReadData",
  "params": [
    {
      "name": "albumlimit",
      "$ref": "List.Amount",
      "description": "The amount of recently added albums from which to return the songs"
    },
    {
      "name": "properties",
      "$ref": "Audio.Fields.Song"
    },
    {
      "name": "limits",
      "$ref": "List.Limits"
    },
    {
      "name": "sort",
      "$ref": "List.Sort"
    }
  ],
  "returns": {
    "type": "object",
    "properties": {
      "limits": {
        "$ref": "List.LimitsReturned",
        "required": true
      },
      "songs": {
        "type": "array",
        "items": {
          "$ref": "Audio.Details.Song"
        }
      }
    }
  }
}
</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:'''
# ''[[#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 lang="javascript" enclose="div">
{
  "type": "method",
  "description": "Retrieve recently played albums",
  "transport": "Response",
  "permission": "ReadData",
  "params": [
    {
      "name": "properties",
      "$ref": "Audio.Fields.Album"
    },
    {
      "name": "limits",
      "$ref": "List.Limits"
    },
    {
      "name": "sort",
      "$ref": "List.Sort"
    }
  ],
  "returns": {
    "type": "object",
    "properties": {
      "limits": {
        "$ref": "List.LimitsReturned",
        "required": true
      },
      "albums": {
        "type": "array",
        "items": {
          "$ref": "Audio.Details.Album"
        }
      }
    }
  }
}
</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 lang="javascript" enclose="div">
{
  "type": "method",
  "description": "Retrieve recently played songs",
  "transport": "Response",
  "permission": "ReadData",
  "params": [
    {
      "name": "properties",
      "$ref": "Audio.Fields.Song"
    },
    {
      "name": "limits",
      "$ref": "List.Limits"
    },
    {
      "name": "sort",
      "$ref": "List.Sort"
    }
  ],
  "returns": {
    "type": "object",
    "properties": {
      "limits": {
        "$ref": "List.LimitsReturned",
        "required": true
      },
      "songs": {
        "type": "array",
        "items": {
          "$ref": "Audio.Details.Song"
        }
      }
    }
  }
}
</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 lang="javascript" enclose="div">
{
  "type": "method",
  "description": "Retrieve all contributor roles",
  "transport": "Response",
  "permission": "ReadData",
  "params": [
    {
      "name": "properties",
      "$ref": "Audio.Fields.Role"
    },
    {
      "name": "limits",
      "$ref": "List.Limits"
    },
    {
      "name": "sort",
      "$ref": "List.Sort"
    }
  ],
  "returns": {
    "type": "object",
    "properties": {
      "limits": {
        "$ref": "List.LimitsReturned",
        "required": true
      },
      "roles": {
        "type": "array",
        "required": true,
        "items": {
          "$ref": "Audio.Details.Role"
        }
      }
    }
  }
}
</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 lang="javascript" enclose="div">
{
  "type": "method",
  "description": "Retrieve details about a specific song",
  "transport": "Response",
  "permission": "ReadData",
  "params": [
    {
      "name": "songid",
      "$ref": "Library.Id",
      "required": true
    },
    {
      "name": "properties",
      "$ref": "Audio.Fields.Song"
    }
  ],
  "returns": {
    "type": "object",
    "properties": {
      "songdetails": {
        "$ref": "Audio.Details.Song"
      }
    }
  }
}
</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 lang="javascript" enclose="div">
{
  "type": "method",
  "description": "Retrieve all songs from specified album, artist or genre",
  "transport": "Response",
  "permission": "ReadData",
  "params": [
    {
      "name": "properties",
      "$ref": "Audio.Fields.Song"
    },
    {
      "name": "limits",
      "$ref": "List.Limits"
    },
    {
      "name": "sort",
      "$ref": "List.Sort"
    },
    {
      "name": "filter",
      "type": [
        {
          "type": "object",
          "properties": {
            "genreid": {
              "$ref": "Library.Id",
              "required": true,
              "description": "Song genre. Filter for existence of songs with this genre"
            }
          },
          "additionalProperties": false
        },
        {
          "type": "object",
          "properties": {
            "genre": {
              "type": "string",
              "minLength": 1,
              "required": true,
              "description": "Song genre. Filter for existence of songs with this genre"
            }
          },
          "additionalProperties": false
        },
        {
          "type": "object",
          "properties": {
            "artistid": {
              "$ref": "Library.Id",
              "required": true
            }
          },
          "additionalProperties": false
        },
        {
          "type": "object",
          "properties": {
            "artistid": {
              "$ref": "Library.Id",
              "required": true
            },
            "roleid": {
              "$ref": "Library.Id",
              "required": true
            }
          },
          "additionalProperties": false
        },
        {
          "type": "object",
          "properties": {
            "artistid": {
              "$ref": "Library.Id",
              "required": true
            },
            "role": {
              "type": "string",
              "minLength": 1,
              "required": true
            }
          },
          "additionalProperties": false
        },
        {
          "type": "object",
          "properties": {
            "artist": {
              "type": "string",
              "minLength": 1,
              "required": true
            }
          },
          "additionalProperties": false
        },
        {
          "type": "object",
          "properties": {
            "artist": {
              "type": "string",
              "minLength": 1,
              "required": true
            },
            "roleid": {
              "$ref": "Library.Id",
              "required": true
            }
          },
          "additionalProperties": false
        },
        {
          "type": "object",
          "properties": {
            "artist": {
              "type": "string",
              "minLength": 1,
              "required": true
            },
            "role": {
              "type": "string",
              "minLength": 1,
              "required": true
            }
          },
          "additionalProperties": false
        },
        {
          "type": "object",
          "properties": {
            "albumid": {
              "$ref": "Library.Id",
              "required": true
            }
          },
          "additionalProperties": false
        },
        {
          "type": "object",
          "properties": {
            "album": {
              "type": "string",
              "minLength": 1,
              "required": true
            }
          },
          "additionalProperties": false
        },
        {
          "$ref": "List.Filter.Songs"
        }
      ]
    },
    {
      "name": "includesingles",
      "type": "boolean",
      "default": true,
      "description": "Only songs from albums are returned when false, but overidden when singlesonly parameter is true"
    },
    {
      "name": "allroles",
      "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."
    },
    {
      "name": "singlesonly",
      "type": "boolean",
      "default": false,
      "description": "Only singles are returned when true, and overides includesingles parameter"
    }
  ],
  "returns": {
    "type": "object",
    "properties": {
      "limits": {
        "$ref": "List.LimitsReturned",
        "required": true
      },
      "songs": {
        "type": "array",
        "items": {
          "$ref": "Audio.Details.Song"
        }
      }
    }
  }
}
</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 lang="javascript" enclose="div">
{
  "type": "method",
  "description": "Get all music sources, including unique ID",
  "transport": "Response",
  "permission": "ReadData",
  "params": [
    {
      "name": "properties",
      "$ref": "Library.Fields.Source"
    },
    {
      "name": "limits",
      "$ref": "List.Limits"
    },
    {
      "name": "sort",
      "$ref": "List.Sort"
    }
  ],
  "returns": {
    "type": "object",
    "properties": {
      "limits": {
        "$ref": "List.LimitsReturned",
        "required": true
      },
      "sources": {
        "type": "array",
        "required": true,
        "items": {
          "$ref": "Library.Details.Source"
        }
      }
    }
  }
}
</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 lang="javascript" enclose="div">
{
  "type": "method",
  "description": "Scans the audio sources for new library items",
  "transport": "Response",
  "permission": "UpdateData",
  "params": [
    {
      "name": "directory",
      "type": "string",
      "default": ""
    },
    {
      "name": "showdialogs",
      "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 lang="javascript" enclose="div">
{
  "type": "method",
  "description": "Update the given album with the given details",
  "transport": "Response",
  "permission": "UpdateData",
  "params": [
    {
      "name": "albumid",
      "$ref": "Library.Id",
      "required": true
    },
    {
      "name": "title",
      "$ref": "Optional.String"
    },
    {
      "name": "artist",
      "type": [
        "null",
        {
          "$ref": "Array.String",
          "required": true
        }
      ],
      "default": null
    },
    {
      "name": "description",
      "$ref": "Optional.String"
    },
    {
      "name": "genre",
      "type": [
        "null",
        {
          "$ref": "Array.String",
          "required": true
        }
      ],
      "default": null
    },
    {
      "name": "theme",
      "type": [
        "null",
        {
          "$ref": "Array.String",
          "required": true
        }
      ],
      "default": null
    },
    {
      "name": "mood",
      "type": [
        "null",
        {
          "$ref": "Array.String",
          "required": true
        }
      ],
      "default": null
    },
    {
      "name": "style",
      "type": [
        "null",
        {
          "$ref": "Array.String",
          "required": true
        }
      ],
      "default": null
    },
    {
      "name": "type",
      "$ref": "Optional.String"
    },
    {
      "name": "albumlabel",
      "$ref": "Optional.String"
    },
    {
      "name": "rating",
      "$ref": "Optional.Number"
    },
    {
      "name": "year",
      "$ref": "Optional.Integer"
    },
    {
      "name": "userrating",
      "$ref": "Optional.Integer"
    },
    {
      "name": "votes",
      "$ref": "Optional.Integer"
    },
    {
      "name": "musicbrainzalbumid",
      "$ref": "Optional.String"
    },
    {
      "name": "musicbrainzreleasegroupid",
      "$ref": "Optional.String"
    },
    {
      "name": "sortartist",
      "$ref": "Optional.String"
    },
    {
      "name": "displayartist",
      "$ref": "Optional.String"
    },
    {
      "name": "musicbrainzalbumartistid",
      "type": [
        "null",
        {
          "$ref": "Array.String",
          "required": true
        }
      ],
      "default": null
    },
    {
      "name": "art",
      "type": [
        "null",
        {
          "$ref": "Media.Artwork.Set",
          "required": true
        }
      ],
      "default": null
    },
    {
      "name": "isboxset",
      "$ref": "Optional.Boolean"
    },
    {
      "name": "releasedate",
      "$ref": "Optional.String"
    },
    {
      "name": "originaldate",
      "$ref": "Optional.String"
    }
  ],
  "returns": "string"
}
</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]<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 lang="javascript" enclose="div">
{
  "type": "method",
  "description": "Update the given artist with the given details",
  "transport": "Response",
  "permission": "UpdateData",
  "params": [
    {
      "name": "artistid",
      "$ref": "Library.Id",
      "required": true
    },
    {
      "name": "artist",
      "$ref": "Optional.String"
    },
    {
      "name": "instrument",
      "type": [
        "null",
        {
          "$ref": "Array.String",
          "required": true
        }
      ],
      "default": null
    },
    {
      "name": "style",
      "type": [
        "null",
        {
          "$ref": "Array.String",
          "required": true
        }
      ],
      "default": null
    },
    {
      "name": "mood",
      "type": [
        "null",
        {
          "$ref": "Array.String",
          "required": true
        }
      ],
      "default": null
    },
    {
      "name": "born",
      "$ref": "Optional.String"
    },
    {
      "name": "formed",
      "$ref": "Optional.String"
    },
    {
      "name": "description",
      "$ref": "Optional.String"
    },
    {
      "name": "genre",
      "type": [
        "null",
        {
          "$ref": "Array.String",
          "required": true
        }
      ],
      "default": null
    },
    {
      "name": "died",
      "$ref": "Optional.String"
    },
    {
      "name": "disbanded",
      "$ref": "Optional.String"
    },
    {
      "name": "yearsactive",
      "type": [
        "null",
        {
          "$ref": "Array.String",
          "required": true
        }
      ],
      "default": null
    },
    {
      "name": "musicbrainzartistid",
      "$ref": "Optional.String"
    },
    {
      "name": "sortname",
      "$ref": "Optional.String"
    },
    {
      "name": "type",
      "$ref": "Optional.String"
    },
    {
      "name": "gender",
      "$ref": "Optional.String"
    },
    {
      "name": "disambiguation",
      "$ref": "Optional.String"
    },
    {
      "name": "art",
      "type": [
        "null",
        {
          "$ref": "Media.Artwork.Set",
          "required": true
        }
      ],
      "default": null
    }
  ],
  "returns": "string"
}
</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]<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 lang="javascript" enclose="div">
{
  "type": "method",
  "description": "Update the given song with the given details",
  "transport": "Response",
  "permission": "UpdateData",
  "params": [
    {
      "name": "songid",
      "$ref": "Library.Id",
      "required": true
    },
    {
      "name": "title",
      "$ref": "Optional.String"
    },
    {
      "name": "artist",
      "type": [
        "null",
        {
          "$ref": "Array.String",
          "required": true
        }
      ],
      "default": null
    },
    {
      "name": "genre",
      "type": [
        "null",
        {
          "$ref": "Array.String",
          "required": true
        }
      ],
      "default": null
    },
    {
      "name": "year",
      "$ref": "Optional.Integer"
    },
    {
      "name": "rating",
      "$ref": "Optional.Number"
    },
    {
      "name": "track",
      "$ref": "Optional.Integer"
    },
    {
      "name": "disc",
      "$ref": "Optional.Integer"
    },
    {
      "name": "duration",
      "$ref": "Optional.Integer"
    },
    {
      "name": "comment",
      "$ref": "Optional.String"
    },
    {
      "name": "musicbrainztrackid",
      "$ref": "Optional.String"
    },
    {
      "name": "musicbrainzartistid",
      "$ref": "Optional.String"
    },
    {
      "name": "playcount",
      "$ref": "Optional.Integer"
    },
    {
      "name": "lastplayed",
      "$ref": "Optional.String"
    },
    {
      "name": "userrating",
      "$ref": "Optional.Integer"
    },
    {
      "name": "votes",
      "$ref": "Optional.Integer"
    },
    {
      "name": "displayartist",
      "$ref": "Optional.String"
    },
    {
      "name": "sortartist",
      "$ref": "Optional.String"
    },
    {
      "name": "mood",
      "$ref": "Optional.String"
    },
    {
      "name": "art",
      "type": [
        "null",
        {
          "$ref": "Media.Artwork.Set",
          "required": true
        }
      ],
      "default": null
    },
    {
      "name": "disctitle",
      "$ref": "Optional.String"
    },
    {
      "name": "releasedate",
      "$ref": "Optional.String"
    },
    {
      "name": "originaldate",
      "$ref": "Optional.String"
    },
    {
      "name": "bpm",
      "$ref": "Optional.Integer"
    }
  ],
  "returns": "string"
}
</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] (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 lang="javascript" enclose="div">
{
  "type": "method",
  "description": "Add a favourite with the given details",
  "transport": "Response",
  "permission": "UpdateData",
  "params": [
    {
      "name": "title",
      "type": "string",
      "required": true
    },
    {
      "name": "type",
      "$ref": "Favourite.Type",
      "required": true
    },
    {
      "name": "path",
      "$ref": "Optional.String",
      "description": "Required for media, script and androidapp favourites types"
    },
    {
      "name": "window",
      "$ref": "Optional.String",
      "description": "Required for window favourite type"
    },
    {
      "name": "windowparameter",
      "$ref": "Optional.String"
    },
    {
      "name": "thumbnail",
      "$ref": "Optional.String"
    }
  ],
  "returns": "string"
}
</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: [[#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 lang="javascript" enclose="div">
{
  "type": "method",
  "description": "Retrieve all favourites",
  "transport": "Response",
  "permission": "ReadData",
  "params": [
    {
      "name": "type",
      "type": [
        "null",
        {
          "$ref": "Favourite.Type"
        }
      ],
      "default": null
    },
    {
      "name": "properties",
      "$ref": "Favourite.Fields.Favourite"
    }
  ],
  "returns": {
    "type": "object",
    "properties": {
      "limits": {
        "$ref": "List.LimitsReturned",
        "required": true
      },
      "favourites": {
        "type": "array",
        "items": {
          "$ref": "Favourite.Details.Favourite"
        }
      }
    }
  }
}
</syntaxhighlight>}}
Files
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 lang="javascript" 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 lang="javascript" enclose="div">
{
  "type": "method",
  "description": "Get the directories and files in the given directory",
  "transport": "Response",
  "permission": "ReadData",
  "params": [
    {
      "name": "directory",
      "type": "string",
      "required": true
    },
    {
      "name": "media",
      "$ref": "Files.Media",
      "default": "files"
    },
    {
      "name": "properties",
      "$ref": "List.Fields.Files"
    },
    {
      "name": "sort",
      "$ref": "List.Sort"
    },
    {
      "name": "limits",
      "$ref": "List.Limits",
      "description": "Limits are applied after getting the directory content thus retrieval is not faster when they are applied."
    }
  ],
  "returns": {
    "type": "object",
    "properties": {
      "limits": {
        "$ref": "List.LimitsReturned",
        "required": true
      },
      "files": {
        "type": "array",
        "items": {
          "$ref": "List.Item.File"
        },
        "required": true
      }
    }
  }
}
</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 lang="javascript" enclose="div">
{
  "type": "method",
  "description": "Get details for a specific file",
  "transport": "Response",
  "permission": "ReadData",
  "params": [
    {
      "name": "file",
      "type": "string",
      "required": true,
      "description": "Full path to the file"
    },
    {
      "name": "media",
      "$ref": "Files.Media",
      "default": "files"
    },
    {
      "name": "properties",
      "$ref": "List.Fields.Files"
    }
  ],
  "returns": {
    "type": "object",
    "properties": {
      "filedetails": {
        "$ref": "List.Item.File",
        "required": true
      }
    }
  }
}
</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 lang="javascript" enclose="div">
{
  "type": "method",
  "description": "Get the sources of the media windows",
  "transport": "Response",
  "permission": "ReadData",
  "params": [
    {
      "name": "media",
      "$ref": "Files.Media",
      "required": true
    },
    {
      "name": "limits",
      "$ref": "List.Limits"
    },
    {
      "name": "sort",
      "$ref": "List.Sort"
    }
  ],
  "returns": {
    "type": "object",
    "properties": {
      "limits": {
        "$ref": "List.LimitsReturned",
        "required": true
      },
      "sources": {
        "$ref": "List.Items.Sources",
        "required": true
      }
    }
  }
}
</syntaxhighlight>}}
Files.PrepareDownload
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 lang="javascript" 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 lang="javascript" enclose="div">
{
  "type": "method",
  "description": "Update the given specific file with the given details",
  "transport": "Response",
  "permission": "UpdateData",
  "params": [
    {
      "name": "file",
      "type": "string",
      "required": true,
      "description": "Full path to the file"
    },
    {
      "name": "media",
      "$ref": "Files.Media",
      "required": true,
      "description": "File type to update correct database. Currently only \"video\" is supported."
    },
    {
      "name": "playcount",
      "$ref": "Optional.Integer"
    },
    {
      "name": "lastplayed",
      "$ref": "Optional.String",
      "description": "Setting a valid lastplayed without a playcount will force playcount to 1."
    },
    {
      "name": "resume",
      "type": [
        "null",
        {
          "$ref": "Video.Resume",
          "required": true
        }
      ],
      "default": null
    }
  ],
  "returns": "string"
}
</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 lang="javascript" enclose="div">
{
  "type": "method",
  "description": "Activates the given window",
  "transport": "Response",
  "permission": "ControlGUI",
  "params": [
    {
      "name": "window",
      "$ref": "GUI.Window",
      "required": true
    },
    {
      "name": "parameters",
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 1,
        "required": true
      },
      "minItems": 1
    }
  ],
  "returns": "string"
}
</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 lang="javascript" enclose="div">
{
  "type": "method",
  "description": "Retrieves the values of the given properties",
  "transport": "Response",
  "permission": "ReadData",
  "params": [
    {
      "name": "properties",
      "type": "array",
      "uniqueItems": true,
      "required": true,
      "items": {
        "$ref": "GUI.Property.Name"
      }
    }
  ],
  "returns": {
    "$ref": "GUI.Property.Value",
    "required": true
  }
}
</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 lang="javascript" enclose="div">
{
  "type": "method",
  "description": "Returns the supported stereoscopic modes of the GUI",
  "transport": "Response",
  "permission": "ReadData",
  "params": [],
  "returns": {
    "type": "object",
    "properties": {
      "stereoscopicmodes": {
        "type": "array",
        "uniqueItems": true,
        "items": {
          "$ref": "GUI.Stereoscopy.Mode"
        }
      }
    }
  }
}
</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 lang="javascript" enclose="div">
{
  "type": "method",
  "description": "Toggle fullscreen/GUI",
  "transport": "Response",
  "permission": "ControlGUI",
  "params": [
    {
      "name": "fullscreen",
      "required": true,
      "$ref": "Global.Toggle"
    }
  ],
  "returns": {
    "type": "boolean",
    "description": "Fullscreen state"
  }
}
</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 lang="javascript" enclose="div">
{
  "type": "method",
  "description": "Sets the stereoscopic mode of the GUI to the given mode",
  "transport": "Response",
  "permission": "ControlGUI",
  "params": [
    {
      "name": "mode",
      "type": "string",
      "enum": [
        "toggle",
        "tomono",
        "next",
        "previous",
        "select",
        "off",
        "split_vertical",
        "split_horizontal",
        "row_interleaved",
        "hardware_based",
        "anaglyph_cyan_red",
        "anaglyph_green_magenta",
        "monoscopic"
      ],
      "required": true
    }
  ],
  "returns": "string"
}
</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 lang="javascript" enclose="div">
{
  "type": "method",
  "description": "Shows a GUI notification",
  "transport": "Response",
  "permission": "ControlGUI",
  "params": [
    {
      "name": "title",
      "type": "string",
      "required": true
    },
    {
      "name": "message",
      "type": "string",
      "required": true
    },
    {
      "name": "image",
      "type": [
        {
          "type": "string",
          "required": true,
          "enum": [
            "info",
            "warning",
            "error"
          ]
        },
        {
          "type": "string",
          "required": true
        }
      ],
      "default": ""
    },
    {
      "name": "displaytime",
      "type": "integer",
      "minimum": 1500,
      "default": 5000,
      "description": "The time in milliseconds the notification will be visible"
    }
  ],
  "returns": "string"
}
</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 lang="javascript" enclose="div">
{
  "type": "method",
  "description": "Goes back in GUI",
  "transport": "Response",
  "permission": "Navigate",
  "params": [],
  "returns": "string"
}
</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 lang="javascript" enclose="div">
{
  "type": "method",
  "description": "Send a button press event",
  "transport": "Response",
  "permission": "Navigate",
  "params": [
    {
      "name": "button",
      "type": "string",
      "required": true,
      "description": "Button name"
    },
    {
      "name": "keymap",
      "type": "string",
      "required": true,
      "description": "Keymap name (KB, XG, R1, or R2)",
      "enum": [
        "KB",
        "XG",
        "R1",
        "R2"
      ]
    },
    {
      "name": "holdtime",
      "type": "integer",
      "required": false,
      "minimum": 0,
      "default": 0,
      "description": "Number of milliseconds to simulate button hold."
    }
  ],
  "returns": "string"
}
</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 lang="javascript" enclose="div">
{
  "type": "method",
  "description": "Shows the context menu",
  "transport": "Response",
  "permission": "Navigate",
  "params": [],
  "returns": "string"
}
</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 lang="javascript" enclose="div">
{
  "type": "method",
  "description": "Navigate down in GUI",
  "transport": "Response",
  "permission": "Navigate",
  "params": [],
  "returns": "string"
}
</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 lang="javascript" enclose="div">
{
  "type": "method",
  "description": "Execute a specific action",
  "transport": "Response",
  "permission": "Navigate",
  "params": [
    {
      "name": "action",
      "$ref": "Input.Action",
      "required": true
    }
  ],
  "returns": "string"
}
</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 lang="javascript" enclose="div">
{
  "type": "method",
  "description": "Goes to home window in GUI",
  "transport": "Response",
  "permission": "Navigate",
  "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 lang="javascript" enclose="div">
{
  "type": "method",
  "description": "Shows the information dialog",
  "transport": "Response",
  "permission": "Navigate",
  "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 lang="javascript" enclose="div">
{
  "type": "method",
  "description": "Navigate left in GUI",
  "transport": "Response",
  "permission": "Navigate",
  "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 lang="javascript" enclose="div">
{
  "type": "method",
  "description": "Navigate right in GUI",
  "transport": "Response",
  "permission": "Navigate",
  "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 lang="javascript" enclose="div">
{
  "type": "method",
  "description": "Select current item in GUI",
  "transport": "Response",
  "permission": "Navigate",
  "params": [],
  "returns": "string"
}
</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 lang="javascript" enclose="div">
{
  "type": "method",
  "description": "Send a generic (unicode) text",
  "transport": "Response",
  "permission": "Navigate",
  "params": [
    {
      "name": "text",
      "type": "string",
      "required": true,
      "description": "Unicode text"
    },
    {
      "name": "done",
      "type": "boolean",
      "default": true,
      "description": "Whether this is the whole input or not (closes an open input dialog if true)."
    }
  ],
  "returns": "string"
}
</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 lang="javascript" enclose="div">
{
  "type": "method",
  "description": "Show codec information of the playing item",
  "transport": "Response",
  "permission": "Navigate",
  "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 lang="javascript" enclose="div">
{
  "type": "method",
  "description": "Show the on-screen display for the current player",
  "transport": "Response",
  "permission": "Navigate",
  "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 lang="javascript" 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",
  "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 lang="javascript" enclose="div">
{
  "type": "method",
  "description": "Navigate up in GUI",
  "transport": "Response",
  "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 lang="javascript" enclose="div">
{
  "type": "method",
  "description": "Get client-specific configurations",
  "transport": "Announcing",
  "permission": "ReadData",
  "params": [],
  "returns": {
    "$ref": "Configuration"
  }
}
</syntaxhighlight>}}
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 lang="javascript" enclose="div">
{
  "type": "method",
  "description": "Enumerates all actions and descriptions",
  "transport": "Response",
  "permission": "ReadData",
  "params": [
    {
      "name": "getdescriptions",
      "type": "boolean",
      "default": true
    },
    {
      "name": "getmetadata",
      "type": "boolean",
      "default": false
    },
    {
      "name": "filterbytransport",
      "type": "boolean",
      "default": true
    },
    {
      "name": "filter",
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "required": true,
          "description": "Name of a namespace, method or type"
        },
        "type": {
          "type": "string",
          "required": true,
          "enum": [
            "method",
            "namespace",
            "type",
            "notification"
          ],
          "description": "Type of the given name"
        },
        "getreferences": {
          "type": "boolean",
          "default": true,
          "description": "Whether or not to print the schema for referenced types"
        }
      }
    }
  ],
  "returns": "object"
}
</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 lang="javascript" enclose="div">
{
  "type": "method",
  "description": "Notify all other connected clients",
  "transport": "Response",
  "permission": "ReadData",
  "params": [
    {
      "name": "sender",
      "type": "string",
      "required": true
    },
    {
      "name": "message",
      "type": "string",
      "required": true
    },
    {
      "name": "data",
      "type": "any",
      "default": null
    }
  ],
  "returns": "any"
}
</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'' 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 lang="javascript" enclose="div">
{
  "type": "method",
  "description": "Retrieve the clients permissions",
  "transport": "Response",
  "permission": "ReadData",
  "params": [],
  "returns": {
    "type": "object",
    "properties": {
      "ReadData": {
        "type": "boolean",
        "required": true
      },
      "ControlPlayback": {
        "type": "boolean",
        "required": true
      },
      "ControlNotify": {
        "type": "boolean",
        "required": true
      },
      "ControlPower": {
        "type": "boolean",
        "required": true
      },
      "UpdateData": {
        "type": "boolean",
        "required": true
      },
      "RemoveData": {
        "type": "boolean",
        "required": true
      },
      "Navigate": {
        "type": "boolean",
        "required": true
      },
      "WriteFile": {
        "type": "boolean",
        "required": true
      },
      "ControlSystem": {
        "type": "boolean",
        "required": true
      },
      "ControlGUI": {
        "type": "boolean",
        "required": true
      },
      "ManageAddon": {
        "type": "boolean",
        "required": true
      },
      "ExecuteAddon": {
        "type": "boolean",
        "required": true
      },
      "ControlPVR": {
        "type": "boolean",
        "required": true
      }
    }
  }
}
</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 lang="javascript" enclose="div">
{
  "type": "method",
  "description": "Ping responder",
  "transport": "Response",
  "permission": "ReadData",
  "params": [],
  "returns": "string"
}
</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 lang="javascript" 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 lang="javascript" enclose="div">
{
  "type": "method",
  "description": "Retrieve the JSON-RPC protocol version.",
  "transport": "Response",
  "permission": "ReadData",
  "params": [],
  "returns": {
    "type": "object",
    "properties": {
      "version": {
        "type": "object",
        "required": true,
        "properties": {
          "major": {
            "type": "integer",
            "minimum": 0,
            "required": true,
            "description": "Bumped on backwards incompatible changes to the API definition"
          },
          "minor": {
            "type": "integer",
            "minimum": 0,
            "required": true,
            "description": "Bumped on backwards compatible additions/changes to the API definition"
          },
          "patch": {
            "type": "integer",
            "minimum": 0,
            "required": true,
            "description": "Bumped on any changes to the internal implementation but not to the API definition"
          }
        }
      }
    }
  }
}
</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 lang="javascript" 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",
  "transport": "Response",
  "permission": "ControlPVR",
  "params": [
    {
      "name": "broadcastid",
      "$ref": "Library.Id",
      "required": true,
      "description": "the broadcast id of the item to record"
    },
    {
      "name": "timerrule",
      "type": "boolean",
      "default": false,
      "description": "controls whether to create a timer rule or a onetime timer"
    }
  ],
  "returns": "string"
}
</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 lang="javascript" enclose="div">
{
  "type": "method",
  "description": "Deletes a onetime timer or a timer rule",
  "transport": "Response",
  "permission": "ControlPVR",
  "params": [
    {
      "name": "timerid",
      "$ref": "Library.Id",
      "required": true,
      "description": "the id of the onetime timer or timer rule to delete"
    }
  ],
  "returns": "string"
}
</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 lang="javascript" enclose="div">
{
  "type": "method",
  "description": "Retrieves the details of a specific broadcast",
  "transport": "Response",
  "permission": "ReadData",
  "params": [
    {
      "name": "broadcastid",
      "$ref": "Library.Id",
      "required": true
    },
    {
      "name": "properties",
      "$ref": "PVR.Fields.Broadcast"
    }
  ],
  "returns": {
    "type": "object",
    "properties": {
      "broadcastdetails": {
        "$ref": "PVR.Details.Broadcast"
      }
    }
  }
}
</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:'''
# ''[[#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 lang="javascript" enclose="div">
{
  "type": "method",
  "description": "Retrieves the program of a specific channel",
  "transport": "Response",
  "permission": "ReadData",
  "params": [
    {
      "name": "channelid",
      "$ref": "Library.Id",
      "required": true
    },
    {
      "name": "properties",
      "$ref": "PVR.Fields.Broadcast"
    },
    {
      "name": "limits",
      "$ref": "List.Limits"
    }
  ],
  "returns": {
    "type": "object",
    "properties": {
      "limits": {
        "$ref": "List.LimitsReturned",
        "required": true
      },
      "broadcasts": {
        "type": "array",
        "required": true,
        "items": {
          "$ref": "PVR.Details.Broadcast"
        }
      }
    }
  }
}
</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 lang="javascript" enclose="div">
{
  "type": "method",
  "description": "Retrieves the details of a specific channel",
  "transport": "Response",
  "permission": "ReadData",
  "params": [
    {
      "name": "channelid",
      "$ref": "Library.Id",
      "required": true
    },
    {
      "name": "properties",
      "$ref": "PVR.Fields.Channel"
    }
  ],
  "returns": {
    "type": "object",
    "properties": {
      "channeldetails": {
        "$ref": "PVR.Details.Channel"
      }
    }
  }
}
</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 lang="javascript" enclose="div">
{
  "type": "method",
  "description": "Retrieves the details of a specific channel group",
  "transport": "Response",
  "permission": "ReadData",
  "params": [
    {
      "name": "channelgroupid",
      "$ref": "PVR.ChannelGroup.Id",
      "required": true
    },
    {
      "name": "channels",
      "type": "object",
      "properties": {
        "properties": {
          "$ref": "PVR.Fields.Channel"
        },
        "limits": {
          "$ref": "List.Limits"
        }
      }
    }
  ],
  "returns": {
    "type": "object",
    "properties": {
      "channelgroupdetails": {
        "$ref": "PVR.Details.ChannelGroup.Extended"
      }
    }
  }
}
</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:'''
# ''[[#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 lang="javascript" enclose="div">
{
  "type": "method",
  "description": "Retrieves the channel groups for the specified type",
  "transport": "Response",
  "permission": "ReadData",
  "params": [
    {
      "name": "channeltype",
      "$ref": "PVR.Channel.Type",
      "required": true
    },
    {
      "name": "limits",
      "$ref": "List.Limits"
    }
  ],
  "returns": {
    "type": "object",
    "properties": {
      "limits": {
        "$ref": "List.LimitsReturned",
        "required": true
      },
      "channelgroups": {
        "type": "array",
        "required": true,
        "items": {
          "$ref": "PVR.Details.ChannelGroup"
        }
      }
    }
  }
}
</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:'''
# ''[[#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 lang="javascript" enclose="div">
{
  "type": "method",
  "description": "Retrieves the channel list",
  "transport": "Response",
  "permission": "ReadData",
  "params": [
    {
      "name": "channelgroupid",
      "$ref": "PVR.ChannelGroup.Id",
      "required": true
    },
    {
      "name": "properties",
      "$ref": "PVR.Fields.Channel"
    },
    {
      "name": "limits",
      "$ref": "List.Limits"
    }
  ],
  "returns": {
    "type": "object",
    "properties": {
      "limits": {
        "$ref": "List.LimitsReturned",
        "required": true
      },
      "channels": {
        "type": "array",
        "required": true,
        "items": {
          "$ref": "PVR.Details.Channel"
        }
      }
    }
  }
}
</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 lang="javascript" enclose="div">
{
  "type": "method",
  "description": "Retrieves the values of the given properties",
  "transport": "Response",
  "permission": "ReadData",
  "params": [
    {
      "name": "properties",
      "type": "array",
      "uniqueItems": true,
      "required": true,
      "items": {
        "$ref": "PVR.Property.Name"
      }
    }
  ],
  "returns": {
    "$ref": "PVR.Property.Value",
    "required": true
  }
}
</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 lang="javascript" enclose="div">
{
  "type": "method",
  "description": "Retrieves the details of a specific recording",
  "transport": "Response",
  "permission": "ReadData",
  "params": [
    {
      "name": "recordingid",
      "$ref": "Library.Id",
      "required": true
    },
    {
      "name": "properties",
      "$ref": "PVR.Fields.Recording"
    }
  ],
  "returns": {
    "type": "object",
    "properties": {
      "recordingdetails": {
        "$ref": "PVR.Details.Recording"
      }
    }
  }
}
</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 lang="javascript" enclose="div">
{
  "type": "method",
  "description": "Retrieves the recordings",
  "transport": "Response",
  "permission": "ReadData",
  "params": [
    {
      "name": "properties",
      "$ref": "PVR.Fields.Recording"
    },
    {
      "name": "limits",
      "$ref": "List.Limits"
    }
  ],
  "returns": {
    "type": "object",
    "properties": {
      "limits": {
        "$ref": "List.LimitsReturned",
        "required": true
      },
      "recordings": {
        "type": "array",
        "required": true,
        "items": {
          "$ref": "PVR.Details.Recording"
        }
      }
    }
  }
}
</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 lang="javascript" enclose="div">
{
  "type": "method",
  "description": "Retrieves the details of a specific timer",
  "transport": "Response",
  "permission": "ReadData",
  "params": [
    {
      "name": "timerid",
      "$ref": "Library.Id",
      "required": true
    },
    {
      "name": "properties",
      "$ref": "PVR.Fields.Timer"
    }
  ],
  "returns": {
    "type": "object",
    "properties": {
      "timerdetails": {
        "$ref": "PVR.Details.Timer"
      }
    }
  }
}
</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 lang="javascript" enclose="div">
{
  "type": "method",
  "description": "Retrieves the timers",
  "transport": "Response",
  "permission": "ReadData",
  "params": [
    {
      "name": "properties",
      "$ref": "PVR.Fields.Timer"
    },
    {
      "name": "limits",
      "$ref": "List.Limits"
    }
  ],
  "returns": {
    "type": "object",
    "properties": {
      "limits": {
        "$ref": "List.LimitsReturned",
        "required": true
      },
      "timers": {
        "type": "array",
        "required": true,
        "items": {
          "$ref": "PVR.Details.Timer"
        }
      }
    }
  }
}
</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 lang="javascript" enclose="div">
{
  "type": "method",
  "description": "Toggle recording of a channel",
  "transport": "Response",
  "permission": "ControlPVR",
  "params": [
    {
      "name": "record",
      "$ref": "Global.Toggle",
      "default": "toggle"
    },
    {
      "name": "channel",
      "type": [
        {
          "type": "string",
          "enum": [
            "current"
          ],
          "required": true
        },
        {
          "$ref": "Library.Id",
          "required": true
        }
      ],
      "default": "current"
    }
  ],
  "returns": "string"
}
</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 lang="javascript" enclose="div">
{
  "type": "method",
  "description": "Starts a channel scan",
  "transport": "Response",
  "permission": "ControlPVR",
  "params": [],
  "returns": "string"
}
</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 lang="javascript" 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",
  "transport": "Response",
  "permission": "ControlPVR",
  "params": [
    {
      "name": "broadcastid",
      "$ref": "Library.Id",
      "required": true,
      "description": "the broadcast id of the item to toggle a onetime timer or time rule for"
    },
    {
      "name": "timerrule",
      "type": "boolean",
      "default": false,
      "description": "controls whether to create / delete a timer rule or a onetime timer"
    }
  ],
  "returns": "string"
}
</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 lang="javascript" enclose="div">
{
  "type": "method",
  "description": "Returns all active players",
  "transport": "Response",
  "permission": "ReadData",
  "params": [],
  "returns": {
    "type": "array",
    "uniqueItems": true,
    "items": {
      "type": "object",
      "properties": {
        "playerid": {
          "$ref": "Player.Id",
          "required": true
        },
        "type": {
          "$ref": "Player.Type",
          "required": true
        },
        "playertype": {
          "type": "string",
          "enum": [
            "internal",
            "external",
            "remote"
          ],
          "required": true
        }
      }
    }
  }
}
</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 lang="javascript" enclose="div">
{
  "type": "method",
  "description": "Retrieves the currently played item",
  "transport": "Response",
  "permission": "ReadData",
  "params": [
    {
      "name": "playerid",
      "$ref": "Player.Id",
      "required": true
    },
    {
      "name": "properties",
      "$ref": "List.Fields.All"
    }
  ],
  "returns": {
    "type": "object",
    "properties": {
      "item": {
        "$ref": "List.Item.All",
        "required": true
      }
    }
  }
}
</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 lang="javascript" enclose="div">
{
  "type": "method",
  "description": "Get a list of available players",
  "transport": "Response",
  "permission": "ReadData",
  "params": [
    {
      "name": "media",
      "type": "string",
      "enum": [
        "all",
        "video",
        "audio"
      ],
      "default": "all"
    }
  ],
  "returns": {
    "type": "array",
    "uniqueItems": true,
    "items": {
      "type": "object",
      "properties": {
        "name": {
          "$ref": "Global.String.NotEmpty",
          "required": true
        },
        "type": {
          "type": "string",
          "enum": [
            "internal",
            "external",
            "remote"
          ],
          "required": true
        },
        "playsvideo": {
          "type": "boolean",
          "required": true
        },
        "playsaudio": {
          "type": "boolean",
          "required": true
        }
      }
    }
  }
}
</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 lang="javascript" enclose="div">
{
  "type": "method",
  "description": "Retrieves the values of the given properties",
  "transport": "Response",
  "permission": "ReadData",
  "params": [
    {
      "name": "playerid",
      "$ref": "Player.Id",
      "required": true
    },
    {
      "name": "properties",
      "type": "array",
      "uniqueItems": true,
      "required": true,
      "items": {
        "$ref": "Player.Property.Name"
      }
    }
  ],
  "returns": {
    "$ref": "Player.Property.Value",
    "required": true
  }
}
</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 lang="javascript" enclose="div">
{
  "type": "method",
  "description": "Get view mode of video player",
  "transport": "Response",
  "permission": "ReadData",
  "params": [],
  "returns": {
    "type": "object",
    "properties": {
      "viewmode": {
        "$ref": "Player.ViewMode",
        "required": true
      },
      "zoom": {
        "type": "number",
        "required": true
      },
      "pixelratio": {
        "type": "number",
        "required": true
      },
      "verticalshift": {
        "type": "number",
        "required": true
      },
      "nonlinearstretch": {
        "type": "boolean",
        "required": true
      }
    }
  }
}
</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 lang="javascript" enclose="div">
{
  "type": "method",
  "description": "Go to previous/next/specific item in the playlist",
  "transport": "Response",
  "permission": "ControlPlayback",
  "params": [
    {
      "name": "playerid",
      "$ref": "Player.Id",
      "required": true
    },
    {
      "name": "to",
      "type": [
        {
          "type": "string",
          "enum": [
            "previous",
            "next"
          ],
          "required": true
        },
        {
          "$ref": "Playlist.Position",
          "description": "position in playlist",
          "required": true
        }
      ],
      "required": true
    }
  ],
  "returns": "string"
}
</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 lang="javascript" enclose="div">
{
  "type": "method",
  "description": "If picture is zoomed move viewport left/right/up/down otherwise skip previous/next",
  "transport": "Response",
  "permission": "ControlPlayback",
  "params": [
    {
      "name": "playerid",
      "$ref": "Player.Id",
      "required": true
    },
    {
      "name": "direction",
      "type": "string",
      "enum": [
        "left",
        "right",
        "up",
        "down"
      ],
      "required": true
    }
  ],
  "returns": "string"
}
</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 lang="javascript" 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.",
  "transport": "Response",
  "permission": "ControlPlayback",
  "params": [
    {
      "name": "item",
      "type": [
        {
          "type": "object",
          "required": true,
          "additionalProperties": false,
          "properties": {
            "playlistid": {
              "$ref": "Playlist.Id",
              "required": true
            },
            "position": {
              "$ref": "Playlist.Position",
              "default": 0
            }
          }
        },
        {
          "$ref": "Playlist.Item",
          "required": true
        },
        {
          "type": "object",
          "required": true,
          "additionalProperties": false,
          "properties": {
            "path": {
              "type": "string",
              "required": true
            },
            "random": {
              "type": "boolean",
              "default": true,
              "description": "Deprecated, use the shuffled property of the options parameter instead"
            },
            "recursive": {
              "type": "boolean",
              "default": true
            }
          }
        },
        {
          "type": "object",
          "required": true,
          "additionalProperties": false,
          "properties": {
            "partymode": {
              "type": [
                {
                  "type": "string",
                  "required": true,
                  "enum": [
                    "music",
                    "video"
                  ]
                },
                {
                  "type": "string",
                  "required": true,
                  "minLength": 5,
                  "description": "Path to a smartplaylist (*.xsp) file"
                }
              ]
            }
          }
        },
        {
          "type": "object",
          "required": true,
          "additionalProperties": false,
          "properties": {
            "channelid": {
              "$ref": "Library.Id",
              "required": true
            }
          }
        },
        {
          "type": "object",
          "required": true,
          "additionalProperties": false,
          "properties": {
            "recordingid": {
              "$ref": "Library.Id",
              "required": true
            }
          }
        }
      ]
    },
    {
      "name": "options",
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "playername": {
          "type": [
            "null",
            {
              "type": "string",
              "enum": [
                "default"
              ],
              "required": true
            },
            {
              "type": "string",
              "minLength": 1,
              "required": true,
              "description": "name of player"
            }
          ],
          "default": null
        },
        "shuffled": {
          "$ref": "Optional.Boolean"
        },
        "repeat": {
          "type": [
            "null",
            {
              "$ref": "Player.Repeat",
              "required": true
            }
          ],
          "default": null
        },
        "resume": {
          "type": [
            {
              "type": "boolean",
              "required": true,
              "description": "Whether to resume from the resume point or not"
            },
            {
              "$ref": "Player.Position.Percentage",
              "required": true,
              "description": "Percentage value to start from"
            },
            {
              "$ref": "Player.Position.Time",
              "required": true,
              "description": "Time to start from"
            }
          ],
          "default": false
        }
      }
    }
  ],
  "returns": "string"
}
</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 lang="javascript" enclose="div">
{
  "type": "method",
  "description": "Pauses or unpause playback and returns the new state",
  "transport": "Response",
  "permission": "ControlPlayback",
  "params": [
    {
      "name": "playerid",
      "$ref": "Player.Id",
      "required": true
    },
    {
      "name": "play",
      "$ref": "Global.Toggle",
      "default": "toggle"
    }
  ],
  "returns": {
    "$ref": "Player.Speed"
  }
}
</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 lang="javascript" enclose="div">
{
  "type": "method",
  "description": "Rotates current picture",
  "transport": "Response",
  "permission": "ControlPlayback",
  "params": [
    {
      "name": "playerid",
      "$ref": "Player.Id",
      "required": true
    },
    {
      "name": "value",
      "type": "string",
      "enum": [
        "clockwise",
        "counterclockwise"
      ],
      "default": "clockwise"
    }
  ],
  "returns": "string"
}
</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 lang="javascript" enclose="div">
{
  "type": "method",
  "description": "Seek through the playing item",
  "transport": "Response",
  "permission": "ControlPlayback",
  "params": [
    {
      "name": "playerid",
      "$ref": "Player.Id",
      "required": true
    },
    {
      "name": "value",
      "required": true,
      "type": [
        {
          "type": "object",
          "properties": {
            "percentage": {
              "$ref": "Player.Position.Percentage",
              "required": true,
              "description": "Percentage value to seek to"
            }
          },
          "additionalProperties": false,
          "required": true
        },
        {
          "type": "object",
          "properties": {
            "time": {
              "$ref": "Player.Position.Time",
              "required": true,
              "description": "Time to seek to"
            }
          },
          "additionalProperties": false,
          "required": true
        },
        {
          "type": "object",
          "properties": {
            "step": {
              "type": "string",
              "enum": [
                "smallforward",
                "smallbackward",
                "bigforward",
                "bigbackward"
              ],
              "required": true,
              "description": "Seek by predefined jumps"
            }
          },
          "additionalProperties": false,
          "required": true
        },
        {
          "type": "object",
          "properties": {
            "seconds": {
              "type": "integer",
              "required": true,
              "description": "Seek by the given number of seconds"
            }
          },
          "additionalProperties": false,
          "required": true
        }
      ]
    }
  ],
  "returns": {
    "type": "object",
    "properties": {
      "percentage": {
        "$ref": "Player.Position.Percentage"
      },
      "time": {
        "$ref": "Global.Time"
      },
      "totaltime": {
        "$ref": "Global.Time"
      }
    }
  }
}
</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 lang="javascript" enclose="div">
{
  "type": "method",
  "description": "Set the audio stream played by the player",
  "transport": "Response",
  "permission": "ControlPlayback",
  "params": [
    {
      "name": "playerid",
      "$ref": "Player.Id",
      "required": true
    },
    {
      "name": "stream",
      "required": true,
      "type": [
        {
          "type": "string",
          "enum": [
            "previous",
            "next"
          ]
        },
        {
          "type": "integer",
          "minimum": 0,
          "description": "Index of the audio stream to play"
        }
      ]
    }
  ],
  "returns": "string"
}
</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 lang="javascript" enclose="div">
{
  "type": "method",
  "description": "Turn partymode on or off",
  "transport": "Response",
  "permission": "ControlPlayback",
  "params": [
    {
      "name": "playerid",
      "$ref": "Player.Id",
      "required": true
    },
    {
      "name": "partymode",
      "$ref": "Global.Toggle",
      "required": true
    }
  ],
  "returns": "string"
}
</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 lang="javascript" enclose="div">
{
  "type": "method",
  "description": "Set the repeat mode of the player",
  "transport": "Response",
  "permission": "ControlPlayback",
  "params": [
    {
      "name": "playerid",
      "$ref": "Player.Id",
      "required": true
    },
    {
      "name": "repeat",
      "type": [
        {
          "$ref": "Player.Repeat",
          "required": true
        },
        {
          "type": "string",
          "enum": [
            "cycle"
          ],
          "required": true
        }
      ],
      "required": true
    }
  ],
  "returns": "string"
}
</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 lang="javascript" enclose="div">
{
  "type": "method",
  "description": "Shuffle/Unshuffle items in the player",
  "transport": "Response",
  "permission": "ControlPlayback",
  "params": [
    {
      "name": "playerid",
      "$ref": "Player.Id",
      "required": true
    },
    {
      "name": "shuffle",
      "$ref": "Global.Toggle",
      "required": true
    }
  ],
  "returns": "string"
}
</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 lang="javascript" enclose="div">
{
  "type": "method",
  "description": "Set the speed of the current playback",
  "transport": "Response",
  "permission": "ControlPlayback",
  "params": [
    {
      "name": "playerid",
      "$ref": "Player.Id",
      "required": true
    },
    {
      "name": "speed",
      "type": [
        {
          "type": "integer",
          "required": true,
          "enum": [
            -32,
            -16,
            -8,
            -4,
            -2,
            -1,
            0,
            1,
            2,
            4,
            8,
            16,
            32
          ]
        },
        {
          "$ref": "Global.IncrementDecrement",
          "required": true
        }
      ],
      "required": true
    }
  ],
  "returns": {
    "$ref": "Player.Speed"
  }
}
</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 lang="javascript" enclose="div">
{
  "type": "method",
  "description": "Set the subtitle displayed by the player",
  "transport": "Response",
  "permission": "ControlPlayback",
  "params": [
    {
      "name": "playerid",
      "$ref": "Player.Id",
      "required": true
    },
    {
      "name": "subtitle",
      "required": true,
      "type": [
        {
          "type": "string",
          "enum": [
            "previous",
            "next",
            "off",
            "on"
          ]
        },
        {
          "type": "integer",
          "minimum": 0,
          "description": "Index of the subtitle to display"
        }
      ]
    },
    {
      "name": "enable",
      "type": "boolean",
      "default": false,
      "description": "Whether to enable subtitles to be displayed after setting the new subtitle"
    }
  ],
  "returns": "string"
}
</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 lang="javascript" enclose="div">
{
  "type": "method",
  "description": "Set the video stream played by the player",
  "transport": "Response",
  "permission": "ControlPlayback",
  "params": [
    {
      "name": "playerid",
      "$ref": "Player.Id",
      "required": true
    },
    {
      "name": "stream",
      "required": true,
      "type": [
        {
          "type": "string",
          "enum": [
            "previous",
            "next"
          ]
        },
        {
          "type": "integer",
          "minimum": 0,
          "description": "Index of the video stream to play"
        }
      ]
    }
  ],
  "returns": "string"
}
</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 lang="javascript" enclose="div">
{
  "type": "method",
  "description": "Set view mode of video player",
  "transport": "Response",
  "permission": "ControlPlayback",
  "params": [
    {
      "name": "viewmode",
      "type": [
        {
          "$ref": "Player.CustomViewMode",
          "description": "Custom view mode",
          "required": true
        },
        {
          "name": "value",
          "$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 lang="javascript" enclose="div">
{
  "type": "method",
  "description": "Stops playback",
  "transport": "Response",
  "permission": "ControlPlayback",
  "params": [
    {
      "name": "playerid",
      "$ref": "Player.Id",
      "required": true
    }
  ],
  "returns": "string"
}
</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 lang="javascript" enclose="div">
{
  "type": "method",
  "description": "Zoom current picture",
  "transport": "Response",
  "permission": "ControlPlayback",
  "params": [
    {
      "name": "playerid",
      "$ref": "Player.Id",
      "required": true
    },
    {
      "name": "zoom",
      "type": [
        {
          "type": "string",
          "enum": [
            "in",
            "out"
          ],
          "required": true
        },
        {
          "type": "integer",
          "minimum": 1,
          "maximum": 10,
          "description": "zoom level",
          "required": true
        }
      ],
      "required": true
    }
  ],
  "returns": "string"
}
</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 lang="javascript" enclose="div">
{
  "type": "method",
  "description": "Add item(s) to playlist",
  "transport": "Response",
  "permission": "ControlPlayback",
  "params": [
    {
      "name": "playlistid",
      "$ref": "Playlist.Id",
      "required": true
    },
    {
      "name": "item",
      "type": [
        {
          "$ref": "Playlist.Item",
          "required": true
        },
        {
          "type": "array",
          "items": {
            "$ref": "Playlist.Item"
          },
          "required": true
        }
      ],
      "required": true
    }
  ],
  "returns": "string"
}
</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 lang="javascript" enclose="div">
{
  "type": "method",
  "description": "Clear playlist",
  "transport": "Response",
  "permission": "ControlPlayback",
  "params": [
    {
      "name": "playlistid",
      "$ref": "Playlist.Id",
      "required": true
    }
  ],
  "returns": "string"
}
</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:'''
# ''[[#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 lang="javascript" enclose="div">
{
  "type": "method",
  "description": "Get all items from playlist",
  "transport": "Response",
  "permission": "ReadData",
  "params": [
    {
      "name": "playlistid",
      "$ref": "Playlist.Id",
      "required": true
    },
    {
      "name": "properties",
      "$ref": "List.Fields.All"
    },
    {
      "name": "limits",
      "$ref": "List.Limits"
    },
    {
      "name": "sort",
      "$ref": "List.Sort"
    }
  ],
  "returns": {
    "type": "object",
    "properties": {
      "limits": {
        "$ref": "List.LimitsReturned",
        "required": true
      },
      "items": {
        "type": "array",
        "items": {
          "$ref": "List.Item.All"
        },
        "required": true
      }
    }
  }
}
</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 lang="javascript" enclose="div">
{
  "type": "method",
  "description": "Returns all existing playlists",
  "transport": "Response",
  "permission": "ReadData",
  "params": [],
  "returns": {
    "type": "array",
    "uniqueItems": true,
    "items": {
      "type": "object",
      "properties": {
        "playlistid": {
          "$ref": "Playlist.Id",
          "required": true
        },
        "type": {
          "$ref": "Playlist.Type",
          "required": true
        }
      }
    }
  }
}
</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 lang="javascript" enclose="div">
{
  "type": "method",
  "description": "Retrieves the values of the given properties",
  "transport": "Response",
  "permission": "ReadData",
  "params": [
    {
      "name": "playlistid",
      "$ref": "Playlist.Id",
      "required": true
    },
    {
      "name": "properties",
      "type": "array",
      "uniqueItems": true,
      "required": true,
      "items": {
        "$ref": "Playlist.Property.Name"
      }
    }
  ],
  "returns": {
    "$ref": "Playlist.Property.Value",
    "required": true
  }
}
</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 lang="javascript" enclose="div">
{
  "type": "method",
  "description": "Insert item(s) into playlist. Does not work for picture playlists (aka slideshows).",
  "transport": "Response",
  "permission": "ControlPlayback",
  "params": [
    {
      "name": "playlistid",
      "$ref": "Playlist.Id",
      "required": true
    },
    {
      "name": "position",
      "$ref": "Playlist.Position",
      "required": true
    },
    {
      "name": "item",
      "type": [
        {
          "$ref": "Playlist.Item",
          "required": true
        },
        {
          "type": "array",
          "items": {
            "$ref": "Playlist.Item"
          },
          "required": true
        }
      ],
      "required": true
    }
  ],
  "returns": "string"
}
</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 lang="javascript" enclose="div">
{
  "type": "method",
  "description": "Remove item from playlist. Does not work for picture playlists (aka slideshows).",
  "transport": "Response",
  "permission": "ControlPlayback",
  "params": [
    {
      "name": "playlistid",
      "$ref": "Playlist.Id",
      "required": true
    },
    {
      "name": "position",
      "$ref": "Playlist.Position",
      "required": true
    }
  ],
  "returns": "string"
}
</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 lang="javascript" enclose="div">
{
  "type": "method",
  "description": "Swap items in the playlist. Does not work for picture playlists (aka slideshows).",
  "transport": "Response",
  "permission": "ControlPlayback",
  "params": [
    {
      "name": "playlistid",
      "$ref": "Playlist.Id",
      "required": true
    },
    {
      "name": "position1",
      "$ref": "Playlist.Position",
      "required": true
    },
    {
      "name": "position2",
      "$ref": "Playlist.Position",
      "required": true
    }
  ],
  "returns": "string"
}
</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 lang="javascript" enclose="div">
{
  "type": "method",
  "description": "Retrieve the current profile",
  "transport": "Response",
  "permission": "ReadData",
  "params": [
    {
      "name": "properties",
      "$ref": "Profiles.Fields.Profile"
    }
  ],
  "returns": {
    "$ref": "Profiles.Details.Profile",
    "required": true
  }
}
</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 lang="javascript" enclose="div">
{
  "type": "method",
  "description": "Retrieve all profiles",
  "transport": "Response",
  "permission": "ReadData",
  "params": [
    {
      "name": "properties",
      "$ref": "Profiles.Fields.Profile"
    },
    {
      "name": "limits",
      "$ref": "List.Limits"
    },
    {
      "name": "sort",
      "$ref": "List.Sort"
    }
  ],
  "returns": {
    "type": "object",
    "properties": {
      "limits": {
        "$ref": "List.LimitsReturned",
        "required": true
      },
      "profiles": {
        "type": "array",
        "required": true,
        "items": {
          "$ref": "Profiles.Details.Profile"
        }
      }
    }
  }
}
</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] (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 lang="javascript" enclose="div">
{
  "type": "method",
  "description": "Load the specified profile",
  "transport": "Response",
  "permission": "Navigate",
  "params": [
    {
      "name": "profile",
      "type": "string",
      "required": true,
      "description": "Profile name"
    },
    {
      "name": "prompt",
      "type": "boolean",
      "description": "Prompt for password"
    },
    {
      "name": "password",
      "$ref": "Profiles.Password"
    }
  ],
  "returns": "string"
}
</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 lang="javascript" enclose="div">
{
  "type": "method",
  "description": "Retrieves all setting categories",
  "transport": "Response",
  "permission": "ReadData",
  "params": [
    {
      "name": "level",
      "$ref": "Setting.Level",
      "default": "standard"
    },
    {
      "name": "section",
      "type": "string",
      "default": ""
    },
    {
      "name": "properties",
      "extends": "Item.Fields.Base",
      "items": {
        "type": "string",
        "enum": [
          "settings"
        ]
      }
    }
  ],
  "returns": {
    "type": "object",
    "properties": {
      "categories": {
        "type": "array",
        "items": {
          "$ref": "Setting.Details.Category"
        }
      }
    }
  }
}
</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 lang="javascript" enclose="div">
{
  "type": "method",
  "description": "Retrieves all setting sections",
  "transport": "Response",
  "permission": "ReadData",
  "params": [
    {
      "name": "level",
      "$ref": "Setting.Level",
      "default": "standard"
    },
    {
      "name": "properties",
      "extends": "Item.Fields.Base",
      "items": {
        "type": "string",
        "enum": [
          "categories"
        ]
      }
    }
  ],
  "returns": {
    "type": "object",
    "properties": {
      "sections": {
        "type": "array",
        "items": {
          "$ref": "Setting.Details.Section"
        }
      }
    }
  }
}
</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 lang="javascript" enclose="div">
{
  "type": "method",
  "description": "Retrieves the value of a setting",
  "transport": "Response",
  "permission": "ReadData",
  "params": [
    {
      "name": "setting",
      "type": "string",
      "required": true,
      "minLength": 1
    }
  ],
  "returns": {
    "type": "object",
    "properties": {
      "value": {
        "$ref": "Setting.Value.Extended",
        "required": true
      }
    }
  }
}
</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 = 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 lang="javascript" enclose="div">
{
  "type": "method",
  "description": "Retrieves all settings",
  "transport": "Response",
  "permission": "ReadData",
  "params": [
    {
      "name": "level",
      "$ref": "Setting.Level",
      "default": "standard"
    },
    {
      "name": "filter",
      "type": [
        {
          "type": "object",
          "properties": {
            "section": {
              "type": "string",
              "required": true,
              "minLength": 1
            },
            "category": {
              "type": "string",
              "required": true,
              "minLength": 1
            }
          },
          "additionalProperties": false,
          "required": true
        }
      ],
      "default": null
    }
  ],
  "returns": {
    "type": "object",
    "properties": {
      "settings": {
        "type": "array",
        "items": {
          "$ref": "Setting.Details.Setting"
        }
      }
    }
  }
}
</syntaxhighlight>}}
Settings.ResetSettingValue
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 lang="javascript" enclose="div">
{
  "type": "method",
  "description": "Resets the value of a setting",
  "transport": "Response",
  "permission": "WriteSetting",
  "params": [
    {
      "name": "setting",
      "type": "string",
      "required": true,
      "minLength": 1
    }
  ],
  "returns": "string"
}
</syntaxhighlight>}}
Settings.SetSettingValue
Changes 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 />
# ''[[#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 lang="javascript" enclose="div">
{
  "type": "method",
  "description": "Changes the value of a setting",
  "transport": "Response",
  "permission": "WriteSetting",
  "params": [
    {
      "name": "setting",
      "type": "string",
      "required": true,
      "minLength": 1
    },
    {
      "name": "value",
      "$ref": "Setting.Value.Extended",
      "required": true
    }
  ],
  "returns": "boolean"
}
</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 lang="javascript" enclose="div">
{
  "type": "method",
  "description": "Ejects or closes the optical disc drive (if available)",
  "transport": "Response",
  "permission": "ControlSystem",
  "params": [],
  "returns": "string"
}
</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 lang="javascript" enclose="div">
{
  "type": "method",
  "description": "Retrieves the values of the given properties",
  "transport": "Response",
  "permission": "ReadData",
  "params": [
    {
      "name": "properties",
      "type": "array",
      "uniqueItems": true,
      "required": true,
      "items": {
        "$ref": "System.Property.Name"
      }
    }
  ],
  "returns": {
    "$ref": "System.Property.Value",
    "required": true
  }
}
</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 lang="javascript" enclose="div">
{
  "type": "method",
  "description": "Puts the system running Kodi into hibernate mode",
  "transport": "Response",
  "permission": "ControlPower",
  "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 lang="javascript" enclose="div">
{
  "type": "method",
  "description": "Reboots the system running Kodi",
  "transport": "Response",
  "permission": "ControlPower",
  "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 lang="javascript" enclose="div">
{
  "type": "method",
  "description": "Shuts the system running Kodi down",
  "transport": "Response",
  "permission": "ControlPower",
  "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 lang="javascript" enclose="div">
{
  "type": "method",
  "description": "Suspends the system running Kodi",
  "transport": "Response",
  "permission": "ControlPower",
  "params": [],
  "returns": "string"
}
</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 lang="javascript" enclose="div">
{
  "type": "method",
  "description": "Retrieve all textures",
  "transport": "Response",
  "permission": "ReadData",
  "params": [
    {
      "name": "properties",
      "$ref": "Textures.Fields.Texture"
    },
    {
      "name": "filter",
      "$ref": "List.Filter.Textures"
    }
  ],
  "returns": {
    "type": "object",
    "properties": {
      "textures": {
        "type": "array",
        "required": true,
        "items": {
          "$ref": "Textures.Details.Texture"
        }
      }
    }
  }
}
</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 lang="javascript" enclose="div">
{
  "type": "method",
  "description": "Remove the specified texture",
  "transport": "Response",
  "permission": "RemoveData",
  "params": [
    {
      "name": "textureid",
      "$ref": "Library.Id",
      "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 lang="javascript" enclose="div">
{
  "type": "method",
  "description": "Cleans the video library for non-existent items",
  "transport": "Response",
  "permission": "RemoveData",
  "params": [
    {
      "name": "showdialogs",
      "type": "boolean",
      "default": true,
      "description": "Whether or not to show the progress bar or any other GUI dialog"
    },
    {
      "name": "content",
      "type": "string",
      "default": "video",
      "enum": [
        "video",
        "movies",
        "tvshows",
        "musicvideos"
      ],
      "description": "Content type to clean for"
    }
  ],
  "returns": "string"
}
</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 lang="javascript" enclose="div">
{
  "type": "method",
  "description": "Exports all items from the video library",
  "transport": "Response",
  "permission": "WriteFile",
  "params": [
    {
      "name": "options",
      "type": [
        {
          "type": "object",
          "required": true,
          "additionalProperties": false,
          "properties": {
            "path": {
              "type": "string",
              "required": true,
              "minLength": 1,
              "description": "Path to the directory to where the data should be exported"
            }
          }
        },
        {
          "type": "object",
          "required": true,
          "additionalProperties": false,
          "properties": {
            "overwrite": {
              "type": "boolean",
              "default": false,
              "description": "Whether to overwrite existing exported files"
            },
            "images": {
              "type": "boolean",
              "default": false,
              "description": "Whether to export thumbnails and fanart images"
            },
            "actorthumbs": {
              "type": "boolean",
              "default": false,
              "description": "Whether to export actor thumbnails"
            }
          }
        }
      ]
    }
  ],
  "returns": "string"
}
</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 lang="javascript" enclose="div">
{
  "type": "method",
  "description": "Retrieve details about a specific tv show episode",
  "transport": "Response",
  "permission": "ReadData",
  "params": [
    {
      "name": "episodeid",
      "$ref": "Library.Id",
      "required": true
    },
    {
      "name": "properties",
      "$ref": "Video.Fields.Episode"
    }
  ],
  "returns": {
    "type": "object",
    "properties": {
      "episodedetails": {
        "$ref": "Video.Details.Episode"
      }
    }
  }
}
</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]<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 lang="javascript" enclose="div">
{
  "type": "method",
  "description": "Retrieve all tv show episodes",
  "transport": "Response",
  "permission": "ReadData",
  "params": [
    {
      "name": "tvshowid",
      "$ref": "Library.Id"
    },
    {
      "name": "season",
      "type": "integer",
      "minimum": 0,
      "default": -1
    },
    {
      "name": "properties",
      "$ref": "Video.Fields.Episode"
    },
    {
      "name": "limits",
      "$ref": "List.Limits"
    },
    {
      "name": "sort",
      "$ref": "List.Sort"
    },
    {
      "name": "filter",
      "type": [
        {
          "type": "object",
          "properties": {
            "genreid": {
              "$ref": "Library.Id",
              "required": true,
              "description": "Requires tvshowid to be set"
            }
          },
          "additionalProperties": false
        },
        {
          "type": "object",
          "properties": {
            "genre": {
              "type": "string",
              "minLength": 1,
              "required": true,
              "description": "Requires tvshowid to be set"
            }
          },
          "additionalProperties": false
        },
        {
          "type": "object",
          "properties": {
            "year": {
              "type": "integer",
              "minimum": 0,
              "required": true
            }
          },
          "additionalProperties": false
        },
        {
          "type": "object",
          "properties": {
            "actor": {
              "type": "string",
              "minLength": 1,
              "required": true,
              "description": "Requires tvshowid to be set"
            }
          },
          "additionalProperties": false
        },
        {
          "type": "object",
          "properties": {
            "director": {
              "type": "string",
              "minLength": 1,
              "required": true
            }
          },
          "additionalProperties": false
        },
        {
          "$ref": "List.Filter.Episodes"
        }
      ]
    }
  ],
  "returns": {
    "type": "object",
    "properties": {
      "limits": {
        "$ref": "List.LimitsReturned",
        "required": true
      },
      "episodes": {
        "type": "array",
        "items": {
          "$ref": "Video.Details.Episode"
        }
      }
    }
  }
}
</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:'''
# ''[[#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 lang="javascript" enclose="div">
{
  "type": "method",
  "description": "Retrieve all genres",
  "transport": "Response",
  "permission": "ReadData",
  "params": [
    {
      "name": "type",
      "type": "string",
      "required": true,
      "enum": [
        "movie",
        "tvshow",
        "musicvideo"
      ]
    },
    {
      "name": "properties",
      "$ref": "Library.Fields.Genre"
    },
    {
      "name": "limits",
      "$ref": "List.Limits"
    },
    {
      "name": "sort",
      "$ref": "List.Sort"
    }
  ],
  "returns": {
    "type": "object",
    "properties": {
      "limits": {
        "$ref": "List.LimitsReturned",
        "required": true
      },
      "genres": {
        "type": "array",
        "required": true,
        "items": {
          "$ref": "Library.Details.Genre"
        }
      }
    }
  }
}
</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 lang="javascript" enclose="div">
{
  "type": "method",
  "description": "Retrieve all in progress tvshows",
  "transport": "Response",
  "permission": "ReadData",
  "params": [
    {
      "name": "properties",
      "$ref": "Video.Fields.TVShow"
    },
    {
      "name": "limits",
      "$ref": "List.Limits"
    },
    {
      "name": "sort",
      "$ref": "List.Sort"
    }
  ],
  "returns": {
    "type": "object",
    "properties": {
      "limits": {
        "$ref": "List.LimitsReturned",
        "required": true
      },
      "tvshows": {
        "type": "array",
        "items": {
          "$ref": "Video.Details.TVShow"
        }
      }
    }
  }
}
</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 lang="javascript" enclose="div">
{
  "type": "method",
  "description": "Retrieve details about a specific movie",
  "transport": "Response",
  "permission": "ReadData",
  "params": [
    {
      "name": "movieid",
      "$ref": "Library.Id",
      "required": true
    },
    {
      "name": "properties",
      "$ref": "Video.Fields.Movie"
    }
  ],
  "returns": {
    "type": "object",
    "properties": {
      "moviedetails": {
        "$ref": "Video.Details.Movie"
      }
    }
  }
}
</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 lang="javascript" enclose="div">
{
  "type": "method",
  "description": "Retrieve details about a specific movie set",
  "transport": "Response",
  "permission": "ReadData",
  "params": [
    {
      "name": "setid",
      "$ref": "Library.Id",
      "required": true
    },
    {
      "name": "properties",
      "$ref": "Video.Fields.MovieSet"
    },
    {
      "name": "movies",
      "type": "object",
      "properties": {
        "properties": {
          "$ref": "Video.Fields.Movie"
        },
        "limits": {
          "$ref": "List.Limits"
        },
        "sort": {
          "$ref": "List.Sort"
        }
      }
    }
  ],
  "returns": {
    "type": "object",
    "properties": {
      "setdetails": {
        "$ref": "Video.Details.MovieSet.Extended"
      }
    }
  }
}
</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 lang="javascript" enclose="div">
{
  "type": "method",
  "description": "Retrieve all movie sets",
  "transport": "Response",
  "permission": "ReadData",
  "params": [
    {
      "name": "properties",
      "$ref": "Video.Fields.MovieSet"
    },
    {
      "name": "limits",
      "$ref": "List.Limits"
    },
    {
      "name": "sort",
      "$ref": "List.Sort"
    }
  ],
  "returns": {
    "type": "object",
    "properties": {
      "limits": {
        "$ref": "List.LimitsReturned",
        "required": true
      },
      "sets": {
        "type": "array",
        "items": {
          "$ref": "Video.Details.MovieSet"
        }
      }
    }
  }
}
</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 lang="javascript" enclose="div">
{
  "type": "method",
  "description": "Retrieve all movies",
  "transport": "Response",
  "permission": "ReadData",
  "params": [
    {
      "name": "properties",
      "$ref": "Video.Fields.Movie"
    },
    {
      "name": "limits",
      "$ref": "List.Limits"
    },
    {
      "name": "sort",
      "$ref": "List.Sort"
    },
    {
      "name": "filter",
      "type": [
        {
          "type": "object",
          "properties": {
            "genreid": {
              "$ref": "Library.Id",
              "required": true
            }
          },
          "additionalProperties": false
        },
        {
          "type": "object",
          "properties": {
            "genre": {
              "type": "string",
              "minLength": 1,
              "required": true
            }
          },
          "additionalProperties": false
        },
        {
          "type": "object",
          "properties": {
            "year": {
              "type": "integer",
              "minimum": 0,
              "required": true
            }
          },
          "additionalProperties": false
        },
        {
          "type": "object",
          "properties": {
            "actor": {
              "type": "string",
              "minLength": 1,
              "required": true
            }
          },
          "additionalProperties": false
        },
        {
          "type": "object",
          "properties": {
            "director": {
              "type": "string",
              "minLength": 1,
              "required": true
            }
          },
          "additionalProperties": false
        },
        {
          "type": "object",
          "properties": {
            "studio": {
              "type": "string",
              "minLength": 1,
              "required": true
            }
          },
          "additionalProperties": false
        },
        {
          "type": "object",
          "properties": {
            "country": {
              "type": "string",
              "minLength": 1,
              "required": true
            }
          },
          "additionalProperties": false
        },
        {
          "type": "object",
          "properties": {
            "setid": {
              "$ref": "Library.Id",
              "required": true
            }
          },
          "additionalProperties": false
        },
        {
          "type": "object",
          "properties": {
            "set": {
              "type": "string",
              "minLength": 1,
              "required": true
            }
          },
          "additionalProperties": false
        },
        {
          "type": "object",
          "properties": {
            "tag": {
              "type": "string",
              "minLength": 1,
              "required": true
            }
          },
          "additionalProperties": false
        },
        {
          "$ref": "List.Filter.Movies"
        }
      ]
    }
  ],
  "returns": {
    "type": "object",
    "properties": {
      "limits": {
        "$ref": "List.LimitsReturned",
        "required": true
      },
      "movies": {
        "type": "array",
        "items": {
          "$ref": "Video.Details.Movie"
        }
      }
    }
  }
}
</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 lang="javascript" enclose="div">
{
  "type": "method",
  "description": "Retrieve details about a specific music video",
  "transport": "Response",
  "permission": "ReadData",
  "params": [
    {
      "name": "musicvideoid",
      "$ref": "Library.Id",
      "required": true
    },
    {
      "name": "properties",
      "$ref": "Video.Fields.MusicVideo"
    }
  ],
  "returns": {
    "type": "object",
    "properties": {
      "musicvideodetails": {
        "$ref": "Video.Details.MusicVideo"
      }
    }
  }
}
</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 lang="javascript" enclose="div">
{
  "type": "method",
  "description": "Retrieve all music videos",
  "transport": "Response",
  "permission": "ReadData",
  "params": [
    {
      "name": "properties",
      "$ref": "Video.Fields.MusicVideo"
    },
    {
      "name": "limits",
      "$ref": "List.Limits"
    },
    {
      "name": "sort",
      "$ref": "List.Sort"
    },
    {
      "name": "filter",
      "type": [
        {
          "type": "object",
          "properties": {
            "artist": {
              "type": "string",
              "minLength": 1,
              "required": true
            }
          },
          "additionalProperties": false
        },
        {
          "type": "object",
          "properties": {
            "genreid": {
              "$ref": "Library.Id",
              "required": true
            }
          },
          "additionalProperties": false
        },
        {
          "type": "object",
          "properties": {
            "genre": {
              "type": "string",
              "minLength": 1,
              "required": true
            }
          },
          "additionalProperties": false
        },
        {
          "type": "object",
          "properties": {
            "year": {
              "type": "integer",
              "minimum": 0,
              "required": true
            }
          },
          "additionalProperties": false
        },
        {
          "type": "object",
          "properties": {
            "director": {
              "type": "string",
              "minLength": 1,
              "required": true
            }
          },
          "additionalProperties": false
        },
        {
          "type": "object",
          "properties": {
            "studio": {
              "type": "string",
              "minLength": 1,
              "required": true
            }
          },
          "additionalProperties": false
        },
        {
          "type": "object",
          "properties": {
            "tag": {
              "type": "string",
              "minLength": 1,
              "required": true
            }
          },
          "additionalProperties": false
        },
        {
          "$ref": "List.Filter.MusicVideos"
        }
      ]
    }
  ],
  "returns": {
    "type": "object",
    "properties": {
      "limits": {
        "$ref": "List.LimitsReturned",
        "required": true
      },
      "musicvideos": {
        "type": "array",
        "items": {
          "$ref": "Video.Details.MusicVideo"
        }
      }
    }
  }
}
</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:'''
# ''[[#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 lang="javascript" enclose="div">
{
  "type": "method",
  "description": "Retrieve all recently added tv episodes",
  "transport": "Response",
  "permission": "ReadData",
  "params": [
    {
      "name": "properties",
      "$ref": "Video.Fields.Episode"
    },
    {
      "name": "limits",
      "$ref": "List.Limits"
    },
    {
      "name": "sort",
      "$ref": "List.Sort"
    }
  ],
  "returns": {
    "type": "object",
    "properties": {
      "limits": {
        "$ref": "List.LimitsReturned",
        "required": true
      },
      "episodes": {
        "type": "array",
        "items": {
          "$ref": "Video.Details.Episode"
        }
      }
    }
  }
}
</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 lang="javascript" enclose="div">
{
  "type": "method",
  "description": "Retrieve all recently added movies",
  "transport": "Response",
  "permission": "ReadData",
  "params": [
    {
      "name": "properties",
      "$ref": "Video.Fields.Movie"
    },
    {
      "name": "limits",
      "$ref": "List.Limits"
    },
    {
      "name": "sort",
      "$ref": "List.Sort"
    }
  ],
  "returns": {
    "type": "object",
    "properties": {
      "limits": {
        "$ref": "List.LimitsReturned",
        "required": true
      },
      "movies": {
        "type": "array",
        "items": {
          "$ref": "Video.Details.Movie"
        }
      }
    }
  }
}
</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 lang="javascript" enclose="div">
{
  "type": "method",
  "description": "Retrieve all recently added music videos",
  "transport": "Response",
  "permission": "ReadData",
  "params": [
    {
      "name": "properties",
      "$ref": "Video.Fields.MusicVideo"
    },
    {
      "name": "limits",
      "$ref": "List.Limits"
    },
    {
      "name": "sort",
      "$ref": "List.Sort"
    }
  ],
  "returns": {
    "type": "object",
    "properties": {
      "limits": {
        "$ref": "List.LimitsReturned",
        "required": true
      },
      "musicvideos": {
        "type": "array",
        "items": {
          "$ref": "Video.Details.MusicVideo"
        }
      }
    }
  }
}
</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 lang="javascript" enclose="div">
{
  "type": "method",
  "description": "Retrieve details about a specific tv show season",
  "transport": "Response",
  "permission": "ReadData",
  "params": [
    {
      "name": "seasonid",
      "$ref": "Library.Id",
      "required": true
    },
    {
      "name": "properties",
      "$ref": "Video.Fields.Season"
    }
  ],
  "returns": {
    "type": "object",
    "properties": {
      "seasondetails": {
        "$ref": "Video.Details.Season"
      }
    }
  }
}
</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]<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 lang="javascript" enclose="div">
{
  "type": "method",
  "description": "Retrieve all tv seasons",
  "transport": "Response",
  "permission": "ReadData",
  "params": [
    {
      "name": "tvshowid",
      "$ref": "Library.Id"
    },
    {
      "name": "properties",
      "$ref": "Video.Fields.Season"
    },
    {
      "name": "limits",
      "$ref": "List.Limits"
    },
    {
      "name": "sort",
      "$ref": "List.Sort"
    }
  ],
  "returns": {
    "type": "object",
    "properties": {
      "limits": {
        "$ref": "List.LimitsReturned",
        "required": true
      },
      "seasons": {
        "type": "array",
        "items": {
          "$ref": "Video.Details.Season"
        }
      }
    }
  }
}
</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 lang="javascript" enclose="div">
{
  "type": "method",
  "description": "Retrieve details about a specific tv show",
  "transport": "Response",
  "permission": "ReadData",
  "params": [
    {
      "name": "tvshowid",
      "$ref": "Library.Id",
      "required": true
    },
    {
      "name": "properties",
      "$ref": "Video.Fields.TVShow"
    }
  ],
  "returns": {
    "type": "object",
    "properties": {
      "tvshowdetails": {
        "$ref": "Video.Details.TVShow"
      }
    }
  }
}
</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 lang="javascript" enclose="div">
{
  "type": "method",
  "description": "Retrieve all tv shows",
  "transport": "Response",
  "permission": "ReadData",
  "params": [
    {
      "name": "properties",
      "$ref": "Video.Fields.TVShow"
    },
    {
      "name": "limits",
      "$ref": "List.Limits"
    },
    {
      "name": "sort",
      "$ref": "List.Sort"
    },
    {
      "name": "filter",
      "type": [
        {
          "type": "object",
          "properties": {
            "genreid": {
              "$ref": "Library.Id",
              "required": true
            }
          },
          "additionalProperties": false
        },
        {
          "type": "object",
          "properties": {
            "genre": {
              "type": "string",
              "minLength": 1,
              "required": true
            }
          },
          "additionalProperties": false
        },
        {
          "type": "object",
          "properties": {
            "year": {
              "type": "integer",
              "minimum": 0,
              "required": true
            }
          },
          "additionalProperties": false
        },
        {
          "type": "object",
          "properties": {
            "actor": {
              "type": "string",
              "minLength": 1,
              "required": true
            }
          },
          "additionalProperties": false
        },
        {
          "type": "object",
          "properties": {
            "studio": {
              "type": "string",
              "minLength": 1,
              "required": true
            }
          },
          "additionalProperties": false
        },
        {
          "type": "object",
          "properties": {
            "tag": {
              "type": "string",
              "minLength": 1,
              "required": true
            }
          },
          "additionalProperties": false
        },
        {
          "$ref": "List.Filter.TVShows"
        }
      ]
    }
  ],
  "returns": {
    "type": "object",
    "properties": {
      "limits": {
        "$ref": "List.LimitsReturned",
        "required": true
      },
      "tvshows": {
        "type": "array",
        "items": {
          "$ref": "Video.Details.TVShow"
        }
      }
    }
  }
}
</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 lang="javascript" enclose="div">
{
  "type": "method",
  "description": "Retrieve all tags",
  "transport": "Response",
  "permission": "ReadData",
  "params": [
    {
      "name": "type",
      "type": "string",
      "required": true,
      "enum": [
        "movie",
        "tvshow",
        "musicvideo"
      ]
    },
    {
      "name": "properties",
      "$ref": "Library.Fields.Tag"
    },
    {
      "name": "limits",
      "$ref": "List.Limits"
    },
    {
      "name": "sort",
      "$ref": "List.Sort"
    }
  ],
  "returns": {
    "type": "object",
    "properties": {
      "limits": {
        "$ref": "List.LimitsReturned",
        "required": true
      },
      "tags": {
        "type": "array",
        "required": true,
        "items": {
          "$ref": "Library.Details.Tag"
        }
      }
    }
  }
}
</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 lang="javascript" enclose="div">
{
  "type": "method",
  "description": "Refresh the given episode in the library",
  "transport": "Response",
  "permission": "UpdateData",
  "params": [
    {
      "name": "episodeid",
      "$ref": "Library.Id",
      "required": true
    },
    {
      "name": "ignorenfo",
      "type": "boolean",
      "required": false,
      "default": false,
      "description": "Whether or not to ignore a local NFO if present."
    },
    {
      "name": "title",
      "type": "string",
      "required": "false",
      "default": "",
      "description": "Title to use for searching (instead of determining it from the item's filename/path)."
    }
  ],
  "returns": "string"
}
</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 lang="javascript" enclose="div">
{
  "type": "method",
  "description": "Refresh the given movie in the library",
  "transport": "Response",
  "permission": "UpdateData",
  "params": [
    {
      "name": "movieid",
      "$ref": "Library.Id",
      "required": true
    },
    {
      "name": "ignorenfo",
      "type": "boolean",
      "required": false,
      "default": false,
      "description": "Whether or not to ignore a local NFO if present."
    },
    {
      "name": "title",
      "type": "string",
      "required": "false",
      "default": "",
      "description": "Title to use for searching (instead of determining it from the item's filename/path)."
    }
  ],
  "returns": "string"
}
</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 lang="javascript" enclose="div">
{
  "type": "method",
  "description": "Refresh the given music video in the library",
  "transport": "Response",
  "permission": "UpdateData",
  "params": [
    {
      "name": "musicvideoid",
      "$ref": "Library.Id",
      "required": true
    },
    {
      "name": "ignorenfo",
      "type": "boolean",
      "required": false,
      "default": false,
      "description": "Whether or not to ignore a local NFO if present."
    },
    {
      "name": "title",
      "type": "string",
      "required": "false",
      "default": "",
      "description": "Title to use for searching (instead of determining it from the item's filename/path)."
    }
  ],
  "returns": "string"
}
</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 lang="javascript" enclose="div">
{
  "type": "method",
  "description": "Refresh the given tv show in the library",
  "transport": "Response",
  "permission": "UpdateData",
  "params": [
    {
      "name": "tvshowid",
      "$ref": "Library.Id",
      "required": true
    },
    {
      "name": "ignorenfo",
      "type": "boolean",
      "required": false,
      "default": false,
      "description": "Whether or not to ignore a local NFO if present."
    },
    {
      "name": "refreshepisodes",
      "type": "boolean",
      "required": false,
      "default": false,
      "description": "Whether or not to refresh all episodes belonging to the TV show."
    },
    {
      "name": "title",
      "type": "string",
      "required": "false",
      "default": "",
      "description": "Title to use for searching (instead of determining it from the item's filename/path)."
    }
  ],
  "returns": "string"
}
</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 lang="javascript" enclose="div">
{
  "type": "method",
  "description": "Removes the given episode from the library",
  "transport": "Response",
  "permission": "RemoveData",
  "params": [
    {
      "name": "episodeid",
      "$ref": "Library.Id",
      "required": true
    }
  ],
  "returns": "string"
}
</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 lang="javascript" enclose="div">
{
  "type": "method",
  "description": "Removes the given movie from the library",
  "transport": "Response",
  "permission": "RemoveData",
  "params": [
    {
      "name": "movieid",
      "$ref": "Library.Id",
      "required": true
    }
  ],
  "returns": "string"
}
</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 lang="javascript" enclose="div">
{
  "type": "method",
  "description": "Removes the given music video from the library",
  "transport": "Response",
  "permission": "RemoveData",
  "params": [
    {
      "name": "musicvideoid",
      "$ref": "Library.Id",
      "required": true
    }
  ],
  "returns": "string"
}
</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 lang="javascript" enclose="div">
{
  "type": "method",
  "description": "Removes the given tv show from the library",
  "transport": "Response",
  "permission": "RemoveData",
  "params": [
    {
      "name": "tvshowid",
      "$ref": "Library.Id",
      "required": true
    }
  ],
  "returns": "string"
}
</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 lang="javascript" enclose="div">
{
  "type": "method",
  "description": "Scans the video sources for new library items",
  "transport": "Response",
  "permission": "UpdateData",
  "params": [
    {
      "name": "directory",
      "type": "string",
      "default": ""
    },
    {
      "name": "showdialogs",
      "type": "boolean",
      "default": true,
      "description": "Whether or not to show the progress bar or any other GUI dialog"
    }
  ],
  "returns": "string"
}
</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]<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 lang="javascript" enclose="div">
{
  "type": "method",
  "description": "Update the given episode with the given details",
  "transport": "Response",
  "permission": "UpdateData",
  "params": [
    {
      "name": "episodeid",
      "$ref": "Library.Id",
      "required": true
    },
    {
      "name": "title",
      "$ref": "Optional.String"
    },
    {
      "name": "playcount",
      "$ref": "Optional.Integer"
    },
    {
      "name": "runtime",
      "$ref": "Optional.Integer",
      "description": "Runtime in seconds"
    },
    {
      "name": "director",
      "type": [
        "null",
        {
          "$ref": "Array.String",
          "required": true
        }
      ],
      "default": null
    },
    {
      "name": "plot",
      "$ref": "Optional.String"
    },
    {
      "name": "rating",
      "$ref": "Optional.Number"
    },
    {
      "name": "votes",
      "$ref": "Optional.String"
    },
    {
      "name": "lastplayed",
      "$ref": "Optional.String"
    },
    {
      "name": "writer",
      "type": [
        "null",
        {
          "$ref": "Array.String",
          "required": true
        }
      ],
      "default": null
    },
    {
      "name": "firstaired",
      "$ref": "Optional.String"
    },
    {
      "name": "productioncode",
      "$ref": "Optional.String"
    },
    {
      "name": "season",
      "$ref": "Optional.Integer"
    },
    {
      "name": "episode",
      "$ref": "Optional.Integer"
    },
    {
      "name": "originaltitle",
      "$ref": "Optional.String"
    },
    {
      "name": "thumbnail",
      "$ref": "Optional.String"
    },
    {
      "name": "fanart",
      "$ref": "Optional.String"
    },
    {
      "name": "art",
      "type": [
        "null",
        {
          "$ref": "Media.Artwork.Set",
          "required": true
        }
      ],
      "default": null
    },
    {
      "name": "resume",
      "type": [
        "null",
        {
          "$ref": "Video.Resume",
          "required": true
        }
      ],
      "default": null
    },
    {
      "name": "userrating",
      "$ref": "Optional.Integer"
    },
    {
      "name": "ratings",
      "$ref": "Video.Ratings.Set"
    },
    {
      "name": "dateadded",
      "$ref": "Optional.String"
    },
    {
      "name": "uniqueid",
      "type": [
        "null",
        {
          "$ref": "Media.UniqueID.Set",
          "required": true
        }
      ],
      "default": null
    }
  ],
  "returns": "string"
}
</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]<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 lang="javascript" enclose="div">
{
  "type": "method",
  "description": "Update the given movie with the given details",
  "transport": "Response",
  "permission": "UpdateData",
  "params": [
    {
      "name": "movieid",
      "$ref": "Library.Id",
      "required": true
    },
    {
      "name": "title",
      "$ref": "Optional.String"
    },
    {
      "name": "playcount",
      "$ref": "Optional.Integer"
    },
    {
      "name": "runtime",
      "$ref": "Optional.Integer",
      "description": "Runtime in seconds"
    },
    {
      "name": "director",
      "type": [
        "null",
        {
          "$ref": "Array.String",
          "required": true
        }
      ],
      "default": null
    },
    {
      "name": "studio",
      "type": [
        "null",
        {
          "$ref": "Array.String",
          "required": true
        }
      ],
      "default": null
    },
    {
      "name": "year",
      "$ref": "Optional.Integer",
      "description": "linked with premiered. Overridden by premiered parameter"
    },
    {
      "name": "plot",
      "$ref": "Optional.String"
    },
    {
      "name": "genre",
      "type": [
        "null",
        {
          "$ref": "Array.String",
          "required": true
        }
      ],
      "default": null
    },
    {
      "name": "rating",
      "$ref": "Optional.Number"
    },
    {
      "name": "mpaa",
      "$ref": "Optional.String"
    },
    {
      "name": "imdbnumber",
      "$ref": "Optional.String"
    },
    {
      "name": "votes",
      "$ref": "Optional.String"
    },
    {
      "name": "lastplayed",
      "$ref": "Optional.String"
    },
    {
      "name": "originaltitle",
      "$ref": "Optional.String"
    },
    {
      "name": "trailer",
      "$ref": "Optional.String"
    },
    {
      "name": "tagline",
      "$ref": "Optional.String"
    },
    {
      "name": "plotoutline",
      "$ref": "Optional.String"
    },
    {
      "name": "writer",
      "type": [
        "null",
        {
          "$ref": "Array.String",
          "required": true
        }
      ],
      "default": null
    },
    {
      "name": "country",
      "type": [
        "null",
        {
          "$ref": "Array.String",
          "required": true
        }
      ],
      "default": null
    },
    {
      "name": "top250",
      "$ref": "Optional.Integer"
    },
    {
      "name": "sorttitle",
      "$ref": "Optional.String"
    },
    {
      "name": "set",
      "$ref": "Optional.String"
    },
    {
      "name": "showlink",
      "type": [
        "null",
        {
          "$ref": "Array.String",
          "required": true
        }
      ],
      "default": null
    },
    {
      "name": "thumbnail",
      "$ref": "Optional.String"
    },
    {
      "name": "fanart",
      "$ref": "Optional.String"
    },
    {
      "name": "tag",
      "type": [
        "null",
        {
          "$ref": "Array.String",
          "required": true
        }
      ],
      "default": null
    },
    {
      "name": "art",
      "type": [
        "null",
        {
          "$ref": "Media.Artwork.Set",
          "required": true
        }
      ],
      "default": null
    },
    {
      "name": "resume",
      "type": [
        "null",
        {
          "$ref": "Video.Resume",
          "required": true
        }
      ],
      "default": null
    },
    {
      "name": "userrating",
      "$ref": "Optional.Integer"
    },
    {
      "name": "ratings",
      "$ref": "Video.Ratings.Set"
    },
    {
      "name": "dateadded",
      "$ref": "Optional.String"
    },
    {
      "name": "premiered",
      "$ref": "Optional.String",
      "description": "linked with year. Overrides year"
    },
    {
      "name": "uniqueid",
      "type": [
        "null",
        {
          "$ref": "Media.UniqueID.Set",
          "required": true
        }
      ],
      "default": null
    }
  ],
  "returns": "string"
}
</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]<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 lang="javascript" enclose="div">
{
  "type": "method",
  "description": "Update the given movie set with the given details",
  "transport": "Response",
  "permission": "UpdateData",
  "params": [
    {
      "name": "setid",
      "$ref": "Library.Id",
      "required": true
    },
    {
      "name": "title",
      "$ref": "Optional.String"
    },
    {
      "name": "art",
      "type": [
        "null",
        {
          "$ref": "Media.Artwork.Set",
          "required": true
        }
      ],
      "default": null
    },
    {
      "name": "plot",
      "$ref": "Optional.String"
    }
  ],
  "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 lang="javascript" enclose="div">
{
  "type": "method",
  "description": "Update the given music video with the given details",
  "transport": "Response",
  "permission": "UpdateData",
  "params": [
    {
      "name": "musicvideoid",
      "$ref": "Library.Id",
      "required": true
    },
    {
      "name": "title",
      "$ref": "Optional.String"
    },
    {
      "name": "playcount",
      "$ref": "Optional.Integer"
    },
    {
      "name": "runtime",
      "$ref": "Optional.Integer",
      "description": "Runtime in seconds"
    },
    {
      "name": "director",
      "type": [
        "null",
        {
          "$ref": "Array.String",
          "required": true
        }
      ],
      "default": null
    },
    {
      "name": "studio",
      "type": [
        "null",
        {
          "$ref": "Array.String",
          "required": true
        }
      ],
      "default": null
    },
    {
      "name": "year",
      "$ref": "Optional.Integer",
      "description": "linked with premiered. Overridden by premiered parameter"
    },
    {
      "name": "plot",
      "$ref": "Optional.String"
    },
    {
      "name": "album",
      "$ref": "Optional.String"
    },
    {
      "name": "artist",
      "type": [
        "null",
        {
          "$ref": "Array.String",
          "required": true
        }
      ]
    },
    {
      "name": "genre",
      "type": [
        "null",
        {
          "$ref": "Array.String",
          "required": true
        }
      ],
      "default": null
    },
    {
      "name": "track",
      "$ref": "Optional.Integer"
    },
    {
      "name": "lastplayed",
      "$ref": "Optional.String"
    },
    {
      "name": "thumbnail",
      "$ref": "Optional.String"
    },
    {
      "name": "fanart",
      "$ref": "Optional.String"
    },
    {
      "name": "tag",
      "type": [
        "null",
        {
          "$ref": "Array.String",
          "required": true
        }
      ],
      "default": null
    },
    {
      "name": "art",
      "type": [
        "null",
        {
          "$ref": "Media.Artwork.Set",
          "required": true
        }
      ],
      "default": null
    },
    {
      "name": "resume",
      "type": [
        "null",
        {
          "$ref": "Video.Resume",
          "required": true
        }
      ],
      "default": null
    },
    {
      "name": "rating",
      "$ref": "Optional.Number"
    },
    {
      "name": "userrating",
      "$ref": "Optional.Integer"
    },
    {
      "name": "dateadded",
      "$ref": "Optional.String"
    },
    {
      "name": "premiered",
      "$ref": "Optional.String",
      "description": "linked with year. Overrides year"
    }
  ],
  "returns": "string"
}
</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: [[#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 lang="javascript" enclose="div">
{
  "type": "method",
  "description": "Update the given season with the given details",
  "transport": "Response",
  "permission": "UpdateData",
  "params": [
    {
      "name": "seasonid",
      "$ref": "Library.Id",
      "required": true
    },
    {
      "name": "art",
      "type": [
        "null",
        {
          "$ref": "Media.Artwork.Set",
          "required": true
        }
      ],
      "default": null
    },
    {
      "name": "userrating",
      "$ref": "Optional.Integer"
    },
    {
      "name": "title",
      "$ref": "Optional.String"
    }
  ],
  "returns": "string"
}
</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]<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 lang="javascript" enclose="div">
{
  "type": "method",
  "description": "Update the given tvshow with the given details",
  "transport": "Response",
  "permission": "UpdateData",
  "params": [
    {
      "name": "tvshowid",
      "$ref": "Library.Id",
      "required": true
    },
    {
      "name": "title",
      "$ref": "Optional.String"
    },
    {
      "name": "playcount",
      "$ref": "Optional.Integer"
    },
    {
      "name": "studio",
      "type": [
        "null",
        {
          "$ref": "Array.String",
          "required": true
        }
      ],
      "default": null
    },
    {
      "name": "plot",
      "$ref": "Optional.String"
    },
    {
      "name": "genre",
      "type": [
        "null",
        {
          "$ref": "Array.String",
          "required": true
        }
      ],
      "default": null
    },
    {
      "name": "rating",
      "$ref": "Optional.Number"
    },
    {
      "name": "mpaa",
      "$ref": "Optional.String"
    },
    {
      "name": "imdbnumber",
      "$ref": "Optional.String"
    },
    {
      "name": "premiered",
      "$ref": "Optional.String"
    },
    {
      "name": "votes",
      "$ref": "Optional.String"
    },
    {
      "name": "lastplayed",
      "$ref": "Optional.String"
    },
    {
      "name": "originaltitle",
      "$ref": "Optional.String"
    },
    {
      "name": "sorttitle",
      "$ref": "Optional.String"
    },
    {
      "name": "episodeguide",
      "$ref": "Optional.String"
    },
    {
      "name": "thumbnail",
      "$ref": "Optional.String"
    },
    {
      "name": "fanart",
      "$ref": "Optional.String"
    },
    {
      "name": "tag",
      "type": [
        "null",
        {
          "$ref": "Array.String",
          "required": true
        }
      ],
      "default": null
    },
    {
      "name": "art",
      "type": [
        "null",
        {
          "$ref": "Media.Artwork.Set",
          "required": true
        }
      ],
      "default": null
    },
    {
      "name": "userrating",
      "$ref": "Optional.Integer"
    },
    {
      "name": "ratings",
      "$ref": "Video.Ratings.Set"
    },
    {
      "name": "dateadded",
      "$ref": "Optional.String"
    },
    {
      "name": "runtime",
      "$ref": "Optional.Integer",
      "description": "Runtime in seconds"
    },
    {
      "name": "status",
      "$ref": "Optional.String",
      "description": "Valid values: 'returning series', 'in production', 'planned', 'cancelled', 'ended'"
    },
    {
      "name": "uniqueid",
      "type": [
        "null",
        {
          "$ref": "Media.UniqueID.Set",
          "required": true
        }
      ],
      "default": null
    }
  ],
  "returns": "string"
}
</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 lang="javascript" enclose="div">
{
  "type": "method",
  "description": "Retrieve info booleans about Kodi and the system",
  "transport": "Response",
  "permission": "ReadData",
  "params": [
    {
      "name": "booleans",
      "type": "array",
      "required": true,
      "items": {
        "type": "string"
      },
      "minItems": 1
    }
  ],
  "returns": {
    "type": "object",
    "description": "Object containing key-value pairs of the retrieved info booleans",
    "additionalProperties": {
      "type": "string"
    }
  }
}
</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 lang="javascript" enclose="div">
{
  "type": "method",
  "description": "Retrieve info labels about Kodi and the system",
  "transport": "Response",
  "permission": "ReadData",
  "params": [
    {
      "name": "labels",
      "type": "array",
      "required": true,
      "items": {
        "type": "string"
      },
      "minItems": 1,
      "description": "See http://kodi.wiki/view/InfoLabels for a list of possible info labels"
    }
  ],
  "returns": {
    "type": "object",
    "description": "Object containing key-value pairs of the retrieved info labels",
    "additionalProperties": {
      "type": "string"
    }
  }
}
</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 lang="javascript" enclose="div">
{
  "type": "string",
  "enum": [
    "unknown",
    "video",
    "audio",
    "image",
    "executable"
  ],
  "default": "unknown"
}
</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
* ''[[#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 lang="javascript" enclose="div">
{
  "extends": "Item.Details.Base",
  "properties": {
    "addonid": {
      "type": "string",
      "required": true
    },
    "type": {
      "$ref": "Addon.Types",
      "required": true
    },
    "name": {
      "type": "string"
    },
    "version": {
      "type": "string"
    },
    "summary": {
      "type": "string"
    },
    "description": {
      "type": "string"
    },
    "path": {
      "type": "string"
    },
    "author": {
      "type": "string"
    },
    "thumbnail": {
      "type": "string"
    },
    "disclaimer": {
      "type": "string"
    },
    "fanart": {
      "type": "string"
    },
    "dependencies": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "addonid": {
            "type": "string",
            "required": true
          },
          "version": {
            "type": "string",
            "required": true
          },
          "optional": {
            "type": "boolean",
            "required": true
          }
        }
      }
    },
    "broken": {
      "type": [
        "boolean",
        "string"
      ]
    },
    "extrainfo": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "key": {
            "type": "string",
            "required": true
          },
          "value": {
            "type": "string",
            "required": true
          }
        }
      }
    },
    "rating": {
      "type": "integer"
    },
    "enabled": {
      "type": "boolean"
    },
    "installed": {
      "type": "boolean"
    }
  }
}
</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 lang="javascript" enclose="div">
{
  "extends": "Item.Fields.Base",
  "items": {
    "type": "string",
    "enum": [
      "name",
      "version",
      "summary",
      "description",
      "path",
      "author",
      "thumbnail",
      "disclaimer",
      "fanart",
      "dependencies",
      "broken",
      "extrainfo",
      "rating",
      "enabled",
      "installed"
    ]
  }
}
</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 lang="javascript" enclose="div">
{
  "type": "string",
  "enum": [
    "volume",
    "muted",
    "name",
    "version",
    "volume",
    "sorttokens",
    "language"
  ]
}
</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">
* [''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 lang="javascript" enclose="div">
{
  "type": "object",
  "properties": {
    "volume": {
      "type": "integer",
      "minimum": 0,
      "maximum": 100
    },
    "muted": {
      "type": "boolean"
    },
    "name": {
      "type": "string",
      "minLength": 1
    },
    "version": {
      "type": "object",
      "properties": {
        "major": {
          "type": "integer",
          "minimum": 0,
          "required": true
        },
        "minor": {
          "type": "integer",
          "minimum": 0,
          "required": true
        },
        "revision": {
          "type": [
            "string",
            "integer"
          ]
        },
        "tag": {
          "type": "string",
          "enum": [
            "prealpha",
            "alpha",
            "beta",
            "releasecandidate",
            "stable"
          ],
          "required": true
        },
        "tagversion": {
          "type": "string"
        }
      }
    },
    "sorttokens": {
      "$ref": "Array.String",
      "description": "Articles ignored during sorting when ignorearticle is enabled."
    },
    "language": {
      "type": "string",
      "minLength": 1,
      "description": "Current language code and region e.g. en_GB"
    }
  }
}
</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 lang="javascript" enclose="div">
{
  "type": "array",
  "items": {
    "type": "integer"
  }
}
</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 lang="javascript" enclose="div">
{
  "type": "array",
  "items": {
    "type": "string",
    "minLength": 1
  }
}
</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 lang="javascript" enclose="div">
{
  "type": "string",
  "enum": [
    "album",
    "single"
  ],
  "default": "album"
}
</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 lang="javascript" enclose="div">
{
  "type": "array",
  "items": {
    "type": "object",
    "description": "The various roles contributed by an artist to one or more songs",
    "properties": {
      "roleid": {
        "$ref": "Library.Id",
        "required": true
      },
      "role": {
        "type": "string",
        "required": true
      }
    },
    "additionalProperties": false
  }
}
</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 lang="javascript" enclose="div">
{
  "type": "array",
  "items": {
    "type": "object",
    "description": "The artist and the role they contribute to a song",
    "properties": {
      "name": {
        "type": "string",
        "required": true
      },
      "role": {
        "type": "string",
        "required": true
      },
      "roleid": {
        "$ref": "Library.Id",
        "required": true
      },
      "artistid": {
        "$ref": "Library.Id",
        "required": true
      }
    },
    "additionalProperties": false
  }
}
</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'' 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 lang="javascript" enclose="div">
{
  "extends": "Audio.Details.Media",
  "properties": {
    "albumid": {
      "$ref": "Library.Id",
      "required": true
    },
    "description": {
      "type": "string"
    },
    "theme": {
      "$ref": "Array.String"
    },
    "mood": {
      "$ref": "Array.String"
    },
    "style": {
      "$ref": "Array.String"
    },
    "type": {
      "type": "string"
    },
    "albumlabel": {
      "type": "string"
    },
    "playcount": {
      "type": "integer"
    },
    "compilation": {
      "type": "boolean"
    },
    "releasetype": {
      "$ref": "Audio.Album.ReleaseType"
    },
    "musicbrainzreleasegroupid": {
      "type": "string"
    },
    "musicbrainzalbumid": {
      "type": "string"
    },
    "songgenres": {
      "$ref": "Audio.Details.Genres"
    },
    "lastplayed": {
      "type": "string"
    },
    "sourceid": {
      "$ref": "Array.Integer"
    },
    "isboxset": {
      "type": "boolean"
    },
    "totaldiscs": {
      "type": "integer"
    }
  }
}
</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 lang="javascript" enclose="div">
{
  "extends": "Audio.Details.Base",
  "properties": {
    "artistid": {
      "$ref": "Library.Id",
      "required": true
    },
    "artist": {
      "type": "string",
      "required": true
    },
    "instrument": {
      "$ref": "Array.String"
    },
    "style": {
      "$ref": "Array.String"
    },
    "mood": {
      "$ref": "Array.String"
    },
    "born": {
      "type": "string"
    },
    "formed": {
      "type": "string"
    },
    "description": {
      "type": "string"
    },
    "died": {
      "type": "string"
    },
    "disbanded": {
      "type": "string"
    },
    "yearsactive": {
      "$ref": "Array.String"
    },
    "compilationartist": {
      "type": "boolean"
    },
    "musicbrainzartistid": {
      "$ref": "Array.String"
    },
    "roles": {
      "$ref": "Audio.Artist.Roles"
    },
    "songgenres": {
      "$ref": "Audio.Details.Genres"
    },
    "isalbumartist": {
      "type": "boolean"
    },
    "sortname": {
      "type": "string"
    },
    "type": {
      "type": "string"
    },
    "gender": {
      "type": "string"
    },
    "disambiguation": {
      "type": "string"
    },
    "sourceid": {
      "$ref": "Array.Integer"
    }
  }
}
</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">
* [''[[#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 lang="javascript" enclose="div">
{
  "extends": "Media.Details.Base",
  "properties": {
    "genre": {
      "$ref": "Array.String"
    },
    "dateadded": {
      "type": "string"
    },
    "art": {
      "$ref": "Media.Artwork"
    }
  }
}
</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 lang="javascript" enclose="div">
{
  "type": "array",
  "items": {
    "type": "object",
    "properties": {
      "genreid": {
        "$ref": "Library.Id",
        "required": true
      },
      "title": {
        "type": "string"
      }
    }
  }
}
</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">
* [''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 lang="javascript" enclose="div">
{
  "extends": "Audio.Details.Base",
  "properties": {
    "title": {
      "type": "string"
    },
    "artist": {
      "$ref": "Array.String"
    },
    "year": {
      "type": "integer"
    },
    "rating": {
      "type": "number"
    },
    "musicbrainzalbumartistid": {
      "$ref": "Array.String"
    },
    "artistid": {
      "$ref": "Array.Integer"
    },
    "displayartist": {
      "type": "string"
    },
    "votes": {
      "type": "integer"
    },
    "userrating": {
      "type": "integer"
    },
    "sortartist": {
      "type": "string"
    },
    "releasedate": {
      "type": "string"
    },
    "originaldate": {
      "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 lang="javascript" enclose="div">
{
  "extends": "Item.Details.Base",
  "properties": {
    "roleid": {
      "$ref": "Library.Id",
      "required": true
    },
    "title": {
      "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">
* ''[[#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 lang="javascript" enclose="div">
{
  "extends": "Audio.Details.Media",
  "properties": {
    "songid": {
      "$ref": "Library.Id",
      "required": true
    },
    "file": {
      "type": "string"
    },
    "albumartist": {
      "$ref": "Array.String"
    },
    "album": {
      "type": "string"
    },
    "track": {
      "type": "integer"
    },
    "duration": {
      "type": "integer"
    },
    "comment": {
      "type": "string"
    },
    "lyrics": {
      "type": "string"
    },
    "playcount": {
      "type": "integer"
    },
    "musicbrainztrackid": {
      "type": "string"
    },
    "musicbrainzartistid": {
      "$ref": "Array.String"
    },
    "albumid": {
      "$ref": "Library.Id"
    },
    "lastplayed": {
      "type": "string"
    },
    "disc": {
      "type": "integer"
    },
    "albumartistid": {
      "$ref": "Array.Integer"
    },
    "albumreleasetype": {
      "$ref": "Audio.Album.ReleaseType"
    },
    "mood": {
      "type": "string"
    },
    "contributors": {
      "$ref": "Audio.Contributors"
    },
    "displaycomposer": {
      "type": "string"
    },
    "displayconductor": {
      "type": "string"
    },
    "displayorchestra": {
      "type": "string"
    },
    "displaylyricist": {
      "type": "string"
    },
    "genreid": {
      "$ref": "Array.Integer"
    },
    "sourceid": {
      "$ref": "Array.Integer"
    },
    "disctitle": {
      "type": "string"
    },
    "bpm": {
      "type": "Integer"
    },
    "samplerate": {
      "type": "Integer"
    },
    "bitrate": {
      "type": "Integer"
    },
    "channels": {
      "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 lang="javascript" enclose="div">
{
  "extends": "Item.Fields.Base",
  "items": {
    "type": "string",
    "description": "Requesting the songgenres, artistid and/or sourceid fields will result in increased response times",
    "enum": [
      "title",
      "description",
      "artist",
      "genre",
      "theme",
      "mood",
      "style",
      "type",
      "albumlabel",
      "rating",
      "votes",
      "userrating",
      "year",
      "musicbrainzalbumid",
      "musicbrainzalbumartistid",
      "fanart",
      "thumbnail",
      "playcount",
      "artistid",
      "displayartist",
      "compilation",
      "releasetype",
      "dateadded",
      "sortartist",
      "musicbrainzreleasegroupid",
      "songgenres",
      "art",
      "lastplayed",
      "sourceid",
      "isboxset",
      "totaldiscs",
      "releasedate",
      "originaldate"
    ]
  }
}
</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 lang="javascript" enclose="div">
{
  "extends": "Item.Fields.Base",
  "items": {
    "type": "string",
    "description": "Requesting the (song)genreid/genre, roleid/role or sourceid fields will result in increased response times",
    "enum": [
      "instrument",
      "style",
      "mood",
      "born",
      "formed",
      "description",
      "genre",
      "died",
      "disbanded",
      "yearsactive",
      "musicbrainzartistid",
      "fanart",
      "thumbnail",
      "compilationartist",
      "dateadded",
      "roles",
      "songgenres",
      "isalbumartist",
      "sortname",
      "type",
      "gender",
      "disambiguation",
      "art",
      "sourceid"
    ]
  }
}
</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 lang="javascript" enclose="div">
{
  "extends": "Item.Fields.Base",
  "items": {
    "type": "string",
    "enum": [
      "title"
    ]
  }
}
</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 lang="javascript" enclose="div">
{
  "extends": "Item.Fields.Base",
  "items": {
    "type": "string",
    "description": "Requesting the genreid, artistid, albumartistid and/or sourceid fields will result in increased response times",
    "enum": [
      "title",
      "artist",
      "albumartist",
      "genre",
      "year",
      "rating",
      "album",
      "track",
      "duration",
      "comment",
      "lyrics",
      "musicbrainztrackid",
      "musicbrainzartistid",
      "musicbrainzalbumid",
      "musicbrainzalbumartistid",
      "playcount",
      "fanart",
      "thumbnail",
      "file",
      "albumid",
      "lastplayed",
      "disc",
      "genreid",
      "artistid",
      "displayartist",
      "albumartistid",
      "albumreleasetype",
      "dateadded",
      "votes",
      "userrating",
      "mood",
      "contributors",
      "displaycomposer",
      "displayconductor",
      "displayorchestra",
      "displaylyricist",
      "sortartist",
      "art",
      "sourceid",
      "disctitle",
      "releasedate",
      "originaldate",
      "bpm",
      "samplerate",
      "bitrate",
      "channels"
    ]
  }
}
</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 lang="javascript" enclose="div">
{
  "type": "string",
  "enum": [
    "missingartistid",
    "librarylastupdated"
  ]
}
</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">
* [''[[#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 lang="javascript" enclose="div">
{
  "type": "object",
  "properties": {
    "missingartistid": {
      "$ref": "Library.Id"
    },
    "librarylastupdated": {
      "type": "string"
    }
  }
}
</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 lang="javascript" enclose="div">
{
  "type": "object",
  "required": true,
  "properties": {
    "notifications": {
      "$ref": "Configuration.Notifications",
      "required": true
    }
  }
}
</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'' 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 lang="javascript" enclose="div">
{
  "type": "object",
  "properties": {
    "Player": {
      "type": "boolean",
      "required": true
    },
    "Playlist": {
      "type": "boolean",
      "required": true
    },
    "GUI": {
      "type": "boolean",
      "required": true
    },
    "System": {
      "type": "boolean",
      "required": true
    },
    "VideoLibrary": {
      "type": "boolean",
      "required": true
    },
    "AudioLibrary": {
      "type": "boolean",
      "required": true
    },
    "Application": {
      "type": "boolean",
      "required": true
    },
    "Input": {
      "type": "boolean",
      "required": true
    },
    "PVR": {
      "type": "boolean",
      "required": true
    },
    "Other": {
      "type": "boolean",
      "required": true
    }
  },
  "additionalProperties": false
}
</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'' 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 lang="javascript" enclose="div">
{
  "type": "object",
  "properties": {
    "title": {
      "type": "string",
      "required": true
    },
    "type": {
      "$ref": "Favourite.Type",
      "required": true
    },
    "path": {
      "type": "string"
    },
    "window": {
      "type": "string"
    },
    "windowparameter": {
      "type": "string"
    },
    "thumbnail": {
      "type": "string"
    }
  },
  "additionalProperties": false
}
</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 lang="javascript" enclose="div">
{
  "extends": "Item.Fields.Base",
  "items": {
    "type": "string",
    "enum": [
      "window",
      "windowparameter",
      "thumbnail",
      "path"
    ]
  }
}
</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 lang="javascript" enclose="div">
{
  "type": "string",
  "enum": [
    "media",
    "window",
    "script",
    "androidapp",
    "unknown"
  ]
}
</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 lang="javascript" enclose="div">
{
  "type": "string",
  "enum": [
    "video",
    "music",
    "pictures",
    "files",
    "programs"
  ]
}
</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 lang="javascript" enclose="div">
{
  "type": "string",
  "enum": [
    "currentwindow",
    "currentcontrol",
    "skin",
    "fullscreen",
    "stereoscopicmode"
  ]
}
</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'' 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 lang="javascript" enclose="div">
{
  "type": "object",
  "properties": {
    "currentwindow": {
      "type": "object",
      "properties": {
        "id": {
          "type": "integer",
          "required": true
        },
        "label": {
          "type": "string",
          "required": true
        }
      }
    },
    "currentcontrol": {
      "type": "object",
      "properties": {
        "label": {
          "type": "string",
          "required": true
        }
      }
    },
    "skin": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "required": true,
          "minLength": 1
        },
        "name": {
          "type": "string"
        }
      }
    },
    "fullscreen": {
      "type": "boolean"
    },
    "stereoscopicmode": {
      "$ref": "GUI.Stereoscopy.Mode"
    }
  }
}
</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'' mode
* ''string'' label
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight lang="javascript" enclose="div">
{
  "type": "object",
  "properties": {
    "mode": {
      "type": "string",
      "required": true,
      "enum": [
        "off",
        "split_vertical",
        "split_horizontal",
        "row_interleaved",
        "hardware_based",
        "anaglyph_cyan_red",
        "anaglyph_green_magenta",
        "anaglyph_yellow_blue",
        "monoscopic"
      ]
    },
    "label": {
      "type": "string",
      "required": true
    }
  }
}
</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 lang="javascript" enclose="div">
{
  "type": "string",
  "enum": [
    "increment",
    "decrement"
  ]
}
</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 lang="javascript" enclose="div">
{
  "type": "string",
  "minLength": 1
}
</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 lang="javascript" enclose="div">
{
  "type": "object",
  "properties": {
    "hours": {
      "type": "integer",
      "required": true,
      "minimum": 0,
      "maximum": 23
    },
    "minutes": {
      "type": "integer",
      "required": true,
      "minimum": 0,
      "maximum": 59
    },
    "seconds": {
      "type": "integer",
      "required": true,
      "minimum": 0,
      "maximum": 59
    },
    "milliseconds": {
      "type": "integer",
      "required": true,
      "minimum": 0,
      "maximum": 999
    }
  },
  "additionalProperties": false
}
</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 lang="javascript" enclose="div">
{
  "type": [
    {
      "type": "boolean",
      "required": true
    },
    {
      "type": "string",
      "enum": [
        "toggle"
      ],
      "required": true
    }
  ]
}
</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 lang="javascript" enclose="div">
{
  "type": "string",
  "enum": [
    "monday",
    "tuesday",
    "wednesday",
    "thursday",
    "friday",
    "saturday",
    "sunday"
  ]
}
</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 lang="javascript" enclose="div">
{
  "type": "object",
  "properties": {
    "label": {
      "type": "string",
      "required": true
    }
  }
}
</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 lang="javascript" enclose="div">
{
  "type": "array",
  "uniqueItems": true,
  "items": {
    "type": "string"
  }
}
</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
* [''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 lang="javascript" enclose="div">
{
  "extends": "Item.Details.Base",
  "properties": {
    "genreid": {
      "$ref": "Library.Id",
      "required": true
    },
    "title": {
      "type": "string"
    },
    "thumbnail": {
      "type": "string"
    },
    "sourceid": {
      "$ref": "Array.Integer",
      "description": "The ids of sources with songs of the genre"
    }
  }
}
</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 lang="javascript" enclose="div">
{
  "extends": "Item.Details.Base",
  "properties": {
    "sourceid": {
      "$ref": "Library.Id",
      "required": true
    },
    "file": {
      "type": "string",
      "description": "The url encoded multipath string combining all paths of the source ",
      "required": true
    },
    "paths": {
      "$ref": "Array.String",
      "description": "The individual paths of the media source"
    }
  }
}
</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 lang="javascript" enclose="div">
{
  "extends": "Item.Details.Base",
  "properties": {
    "tagid": {
      "$ref": "Library.Id",
      "required": true
    },
    "title": {
      "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 lang="javascript" enclose="div">
{
  "extends": "Item.Fields.Base",
  "items": {
    "type": "string",
    "enum": [
      "title",
      "thumbnail",
      "sourceid"
    ]
  }
}
</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 lang="javascript" enclose="div">
{
  "extends": "Item.Fields.Base",
  "items": {
    "type": "string",
    "enum": [
      "file",
      "paths"
    ]
  }
}
</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 lang="javascript" enclose="div">
{
  "extends": "Item.Fields.Base",
  "items": {
    "type": "string",
    "enum": [
      "title"
    ]
  }
}
</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 lang="javascript" enclose="div">
{
  "type": "integer",
  "default": -1,
  "minimum": 1
}
</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 lang="javascript" enclose="div">
{
  "type": "integer",
  "default": -1,
  "minimum": 0
}
</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 lang="javascript" enclose="div">
{
  "extends": "Item.Fields.Base",
  "items": {
    "type": "string",
    "enum": [
      "title",
      "artist",
      "albumartist",
      "genre",
      "year",
      "rating",
      "album",
      "track",
      "duration",
      "comment",
      "lyrics",
      "musicbrainztrackid",
      "musicbrainzartistid",
      "musicbrainzalbumid",
      "musicbrainzalbumartistid",
      "playcount",
      "fanart",
      "director",
      "trailer",
      "tagline",
      "plot",
      "plotoutline",
      "originaltitle",
      "lastplayed",
      "writer",
      "studio",
      "mpaa",
      "cast",
      "country",
      "imdbnumber",
      "premiered",
      "productioncode",
      "runtime",
      "set",
      "showlink",
      "streamdetails",
      "top250",
      "votes",
      "firstaired",
      "season",
      "episode",
      "showtitle",
      "thumbnail",
      "file",
      "resume",
      "artistid",
      "albumid",
      "tvshowid",
      "setid",
      "watchedepisodes",
      "disc",
      "tag",
      "art",
      "genreid",
      "displayartist",
      "albumartistid",
      "description",
      "theme",
      "mood",
      "style",
      "albumlabel",
      "sorttitle",
      "episodeguide",
      "uniqueid",
      "dateadded",
      "channel",
      "channeltype",
      "hidden",
      "locked",
      "channelnumber",
      "starttime",
      "endtime",
      "specialsortseason",
      "specialsortepisode",
      "compilation",
      "releasetype",
      "albumreleasetype",
      "contributors",
      "displaycomposer",
      "displayconductor",
      "displayorchestra",
      "displaylyricist",
      "userrating",
      "votes",
      "sortartist",
      "musicbrainzreleasegroupid",
      "mediapath",
      "dynpath",
      "isboxset",
      "totaldiscs",
      "disctitle",
      "releasedate",
      "originaldate",
      "bpm",
      "bitrate",
      "samplerate",
      "channels"
    ]
  }
}
</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 lang="javascript" enclose="div">
{
  "extends": "Item.Fields.Base",
  "items": {
    "type": "string",
    "enum": [
      "title",
      "artist",
      "albumartist",
      "genre",
      "year",
      "rating",
      "album",
      "track",
      "duration",
      "comment",
      "lyrics",
      "musicbrainztrackid",
      "musicbrainzartistid",
      "musicbrainzalbumid",
      "musicbrainzalbumartistid",
      "playcount",
      "fanart",
      "director",
      "trailer",
      "tagline",
      "plot",
      "plotoutline",
      "originaltitle",
      "lastplayed",
      "writer",
      "studio",
      "mpaa",
      "cast",
      "country",
      "imdbnumber",
      "premiered",
      "productioncode",
      "runtime",
      "set",
      "showlink",
      "streamdetails",
      "top250",
      "votes",
      "firstaired",
      "season",
      "episode",
      "showtitle",
      "thumbnail",
      "file",
      "resume",
      "artistid",
      "albumid",
      "tvshowid",
      "setid",
      "watchedepisodes",
      "disc",
      "tag",
      "art",
      "genreid",
      "displayartist",
      "albumartistid",
      "description",
      "theme",
      "mood",
      "style",
      "albumlabel",
      "sorttitle",
      "episodeguide",
      "uniqueid",
      "dateadded",
      "size",
      "lastmodified",
      "mimetype",
      "specialsortseason",
      "specialsortepisode",
      "sortartist",
      "musicbrainzreleasegroupid",
      "isboxset",
      "totaldiscs",
      "disctitle",
      "releasedate",
      "originaldate",
      "bpm",
      "bitrate",
      "samplerate",
      "channels"
    ]
  }
}
</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 lang="javascript" enclose="div">
{
  "type": [
    {
      "type": "object",
      "properties": {
        "and": {
          "type": "array",
          "items": {
            "$ref": "List.Filter.Albums"
          },
          "minItems": 1,
          "required": true
        }
      }
    },
    {
      "type": "object",
      "properties": {
        "or": {
          "type": "array",
          "items": {
            "$ref": "List.Filter.Albums"
          },
          "minItems": 1,
          "required": true
        }
      }
    },
    {
      "$ref": "List.Filter.Rule.Albums"
    }
  ]
}
</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 lang="javascript" enclose="div">
{
  "type": [
    {
      "type": "object",
      "properties": {
        "and": {
          "type": "array",
          "items": {
            "$ref": "List.Filter.Artists"
          },
          "minItems": 1,
          "required": true
        }
      }
    },
    {
      "type": "object",
      "properties": {
        "or": {
          "type": "array",
          "items": {
            "$ref": "List.Filter.Artists"
          },
          "minItems": 1,
          "required": true
        }
      }
    },
    {
      "$ref": "List.Filter.Rule.Artists"
    }
  ]
}
</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 lang="javascript" enclose="div">
{
  "type": [
    {
      "type": "object",
      "properties": {
        "and": {
          "type": "array",
          "items": {
            "$ref": "List.Filter.Episodes"
          },
          "minItems": 1,
          "required": true
        }
      }
    },
    {
      "type": "object",
      "properties": {
        "or": {
          "type": "array",
          "items": {
            "$ref": "List.Filter.Episodes"
          },
          "minItems": 1,
          "required": true
        }
      }
    },
    {
      "$ref": "List.Filter.Rule.Episodes"
    }
  ]
}
</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 lang="javascript" enclose="div">
{
  "type": [
    {
      "type": "object",
      "properties": {
        "and": {
          "type": "array",
          "items": {
            "$ref": "List.Filter.Movies"
          },
          "minItems": 1,
          "required": true
        }
      }
    },
    {
      "type": "object",
      "properties": {
        "or": {
          "type": "array",
          "items": {
            "$ref": "List.Filter.Movies"
          },
          "minItems": 1,
          "required": true
        }
      }
    },
    {
      "$ref": "List.Filter.Rule.Movies"
    }
  ]
}
</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 lang="javascript" enclose="div">
{
  "type": [
    {
      "type": "object",
      "properties": {
        "and": {
          "type": "array",
          "items": {
            "$ref": "List.Filter.MusicVideos"
          },
          "minItems": 1,
          "required": true
        }
      }
    },
    {
      "type": "object",
      "properties": {
        "or": {
          "type": "array",
          "items": {
            "$ref": "List.Filter.MusicVideos"
          },
          "minItems": 1,
          "required": true
        }
      }
    },
    {
      "$ref": "List.Filter.Rule.MusicVideos"
    }
  ]
}
</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 lang="javascript" enclose="div">
{
  "type": "object",
  "properties": {
    "operator": {
      "$ref": "List.Filter.Operators",
      "required": true
    },
    "value": {
      "type": [
        {
          "type": "string",
          "required": true
        },
        {
          "type": "array",
          "items": {
            "type": "string"
          },
          "required": true
        }
      ],
      "required": true
    }
  }
}
</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 lang="javascript" enclose="div">
{
  "extends": "List.Filter.Rule",
  "properties": {
    "field": {
      "$ref": "List.Filter.Fields.Albums",
      "required": true
    }
  }
}
</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 lang="javascript" enclose="div">
{
  "extends": "List.Filter.Rule",
  "properties": {
    "field": {
      "$ref": "List.Filter.Fields.Artists",
      "required": true
    }
  }
}
</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 lang="javascript" enclose="div">
{
  "extends": "List.Filter.Rule",
  "properties": {
    "field": {
      "$ref": "List.Filter.Fields.Episodes",
      "required": true
    }
  }
}
</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 lang="javascript" enclose="div">
{
  "extends": "List.Filter.Rule",
  "properties": {
    "field": {
      "$ref": "List.Filter.Fields.Movies",
      "required": true
    }
  }
}
</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 lang="javascript" enclose="div">
{
  "extends": "List.Filter.Rule",
  "properties": {
    "field": {
      "$ref": "List.Filter.Fields.MusicVideos",
      "required": true
    }
  }
}
</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 lang="javascript" enclose="div">
{
  "extends": "List.Filter.Rule",
  "properties": {
    "field": {
      "$ref": "List.Filter.Fields.Songs",
      "required": true
    }
  }
}
</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 lang="javascript" enclose="div">
{
  "extends": "List.Filter.Rule",
  "properties": {
    "field": {
      "$ref": "List.Filter.Fields.TVShows",
      "required": true
    }
  }
}
</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 lang="javascript" enclose="div">
{
  "extends": "List.Filter.Rule",
  "properties": {
    "field": {
      "$ref": "List.Filter.Fields.Textures",
      "required": true
    }
  }
}
</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 lang="javascript" enclose="div">
{
  "type": [
    {
      "type": "object",
      "properties": {
        "and": {
          "type": "array",
          "items": {
            "$ref": "List.Filter.Songs"
          },
          "minItems": 1,
          "required": true
        }
      }
    },
    {
      "type": "object",
      "properties": {
        "or": {
          "type": "array",
          "items": {
            "$ref": "List.Filter.Songs"
          },
          "minItems": 1,
          "required": true
        }
      }
    },
    {
      "$ref": "List.Filter.Rule.Songs"
    }
  ]
}
</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 lang="javascript" enclose="div">
{
  "type": [
    {
      "type": "object",
      "properties": {
        "and": {
          "type": "array",
          "items": {
            "$ref": "List.Filter.TVShows"
          },
          "minItems": 1,
          "required": true
        }
      }
    },
    {
      "type": "object",
      "properties": {
        "or": {
          "type": "array",
          "items": {
            "$ref": "List.Filter.TVShows"
          },
          "minItems": 1,
          "required": true
        }
      }
    },
    {
      "$ref": "List.Filter.Rule.TVShows"
    }
  ]
}
</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 lang="javascript" enclose="div">
{
  "type": [
    {
      "type": "object",
      "properties": {
        "and": {
          "type": "array",
          "items": {
            "$ref": "List.Filter.Textures"
          },
          "minItems": 1,
          "required": true
        }
      }
    },
    {
      "type": "object",
      "properties": {
        "or": {
          "type": "array",
          "items": {
            "$ref": "List.Filter.Textures"
          },
          "minItems": 1,
          "required": true
        }
      }
    },
    {
      "$ref": "List.Filter.Rule.Textures"
    }
  ]
}
</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 lang="javascript" enclose="div">
{
  "extends": "List.Item.Base",
  "properties": {
    "channel": {
      "type": "string"
    },
    "channeltype": {
      "$ref": "PVR.Channel.Type"
    },
    "hidden": {
      "type": "boolean"
    },
    "locked": {
      "type": "boolean"
    },
    "channelnumber": {
      "type": "integer"
    },
    "starttime": {
      "type": "string"
    },
    "endtime": {
      "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">
* [''[[#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 lang="javascript" enclose="div">
{
  "extends": [
    "Video.Details.File",
    "Audio.Details.Media"
  ],
  "properties": {
    "id": {
      "$ref": "Library.Id"
    },
    "type": {
      "type": "string",
      "enum": [
        "unknown",
        "movie",
        "episode",
        "musicvideo",
        "song",
        "picture",
        "channel"
      ]
    },
    "albumartist": {
      "$ref": "Array.String"
    },
    "album": {
      "type": "string"
    },
    "track": {
      "type": "integer"
    },
    "duration": {
      "type": "integer"
    },
    "comment": {
      "type": "string"
    },
    "lyrics": {
      "type": "string"
    },
    "musicbrainztrackid": {
      "type": "string"
    },
    "musicbrainzartistid": {
      "$ref": "Array.String"
    },
    "trailer": {
      "type": "string"
    },
    "tagline": {
      "type": "string"
    },
    "plotoutline": {
      "type": "string"
    },
    "originaltitle": {
      "type": "string"
    },
    "writer": {
      "$ref": "Array.String"
    },
    "studio": {
      "$ref": "Array.String"
    },
    "mpaa": {
      "type": "string"
    },
    "cast": {
      "$ref": "Video.Cast"
    },
    "country": {
      "$ref": "Array.String"
    },
    "imdbnumber": {
      "type": "string"
    },
    "premiered": {
      "type": "string"
    },
    "productioncode": {
      "type": "string"
    },
    "set": {
      "type": "string"
    },
    "showlink": {
      "$ref": "Array.String"
    },
    "top250": {
      "type": "integer"
    },
    "votes": {
      "type": "string"
    },
    "firstaired": {
      "type": "string"
    },
    "season": {
      "type": "integer"
    },
    "episode": {
      "type": "integer"
    },
    "showtitle": {
      "type": "string"
    },
    "albumid": {
      "$ref": "Library.Id"
    },
    "setid": {
      "$ref": "Library.Id"
    },
    "tvshowid": {
      "$ref": "Library.Id"
    },
    "watchedepisodes": {
      "type": "integer"
    },
    "disc": {
      "type": "integer"
    },
    "tag": {
      "$ref": "Array.String"
    },
    "albumartistid": {
      "$ref": "Array.Integer"
    },
    "uniqueid": {
      "$ref": "Media.UniqueID"
    },
    "episodeguide": {
      "type": "string"
    },
    "sorttitle": {
      "type": "string"
    },
    "description": {
      "type": "string"
    },
    "theme": {
      "$ref": "Array.String"
    },
    "mood": {
      "$ref": "Array.String"
    },
    "style": {
      "$ref": "Array.String"
    },
    "albumlabel": {
      "type": "string"
    },
    "specialsortseason": {
      "type": "integer"
    },
    "specialsortepisode": {
      "type": "integer"
    },
    "compilation": {
      "type": "boolean"
    },
    "releasetype": {
      "$ref": "Audio.Album.ReleaseType"
    },
    "albumreleasetype": {
      "$ref": "Audio.Album.ReleaseType"
    },
    "contributors": {
      "$ref": "Audio.Contributors"
    },
    "displaycomposer": {
      "type": "string"
    },
    "displayconductor": {
      "type": "string"
    },
    "displayorchestra": {
      "type": "string"
    },
    "displaylyricist": {
      "type": "string"
    },
    "mediapath": {
      "type": "string",
      "description": "Media source path that identifies the item"
    },
    "dynpath": {
      "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 lang="javascript" enclose="div">
{
  "extends": "List.Item.Base",
  "properties": {
    "file": {
      "type": "string",
      "required": true
    },
    "filetype": {
      "type": "string",
      "enum": [
        "file",
        "directory"
      ],
      "required": true
    },
    "size": {
      "type": "integer",
      "description": "Size of the file in bytes"
    },
    "lastmodified": {
      "type": "string"
    },
    "mimetype": {
      "type": "string"
    }
  }
}
</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 lang="javascript" enclose="div">
{
  "type": "array",
  "items": {
    "extends": "Item.Details.Base",
    "properties": {
      "file": {
        "type": "string",
        "required": true
      }
    }
  }
}
</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">
* [''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 lang="javascript" enclose="div">
{
  "type": "object",
  "properties": {
    "start": {
      "type": "integer",
      "minimum": 0,
      "default": 0,
      "description": "Index of the first item to return"
    },
    "end": {
      "$ref": "List.Amount",
      "description": "Index of the last item to return"
    }
  },
  "additionalProperties": false
}
</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">
* [''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 lang="javascript" enclose="div">
{
  "type": "object",
  "properties": {
    "start": {
      "type": "integer",
      "minimum": 0,
      "default": 0
    },
    "end": {
      "$ref": "List.Amount"
    },
    "total": {
      "type": "integer",
      "minimum": 0,
      "required": true
    }
  },
  "additionalProperties": false
}
</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">
* [''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 lang="javascript" enclose="div">
{
  "type": "object",
  "properties": {
    "method": {
      "type": "string",
      "default": "none",
      "enum": [
        "none",
        "label",
        "date",
        "size",
        "file",
        "path",
        "drivetype",
        "title",
        "track",
        "time",
        "artist",
        "album",
        "albumtype",
        "genre",
        "country",
        "year",
        "rating",
        "userrating",
        "votes",
        "top250",
        "programcount",
        "playlist",
        "episode",
        "season",
        "totalepisodes",
        "watchedepisodes",
        "tvshowstatus",
        "tvshowtitle",
        "sorttitle",
        "productioncode",
        "mpaa",
        "studio",
        "dateadded",
        "lastplayed",
        "playcount",
        "listeners",
        "bitrate",
        "random",
        "totaldiscs",
        "originaldate",
        "bpm"
      ]
    },
    "order": {
      "type": "string",
      "default": "ascending",
      "enum": [
        "ascending",
        "descending"
      ]
    },
    "ignorearticle": {
      "type": "boolean",
      "default": false
    },
    "useartistsortname": {
      "type": "boolean",
      "default": false
    }
  }
}
</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]]'' 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 lang="javascript" enclose="div">
{
  "type": "object",
  "properties": {
    "thumb": {
      "$ref": "Global.String.NotEmpty"
    },
    "poster": {
      "$ref": "Global.String.NotEmpty"
    },
    "banner": {
      "$ref": "Global.String.NotEmpty"
    },
    "fanart": {
      "$ref": "Global.String.NotEmpty"
    }
  },
  "additionalProperties": {
    "$ref": "Global.String.NotEmpty"
  }
}
</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: [[#Global.String.NotEmpty|Global.String.NotEmpty]]'' thumb]
* [''mixed: [[#Global.String.NotEmpty|Global.String.NotEmpty]]'' poster]
* [''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 lang="javascript" enclose="div">
{
  "type": "object",
  "properties": {
    "thumb": {
      "type": [
        "null",
        {
          "$ref": "Global.String.NotEmpty",
          "required": true
        }
      ],
      "default": ""
    },
    "poster": {
      "type": [
        "null",
        {
          "$ref": "Global.String.NotEmpty",
          "required": true
        }
      ],
      "default": ""
    },
    "banner": {
      "type": [
        "null",
        {
          "$ref": "Global.String.NotEmpty",
          "required": true
        }
      ],
      "default": ""
    },
    "fanart": {
      "type": [
        "null",
        {
          "$ref": "Global.String.NotEmpty",
          "required": true
        }
      ],
      "default": ""
    }
  },
  "additionalProperties": {
    "type": [
      "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 lang="javascript" enclose="div">
{
  "extends": "Item.Details.Base",
  "properties": {
    "fanart": {
      "type": "string"
    },
    "thumbnail": {
      "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 lang="javascript" enclose="div">
{
  "type": "object",
  "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 lang="javascript" enclose="div">
{
  "type": "object",
  "additionalProperties": {
    "type": [
      "null",
      {
        "$ref": "Global.String.NotEmpty",
        "required": true
      }
    ]
  }
}
</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 lang="javascript" enclose="div">
{
  "type": [
    {
      "type": "object",
      "description": "An unknown item does not have any additional information.",
      "properties": {
        "type": {
          "$ref": "Notifications.Item.Type",
          "required": true
        }
      }
    },
    {
      "type": "object",
      "description": "An item known to the database has an identification.",
      "properties": {
        "type": {
          "$ref": "Notifications.Item.Type",
          "required": true
        },
        "id": {
          "$ref": "Library.Id",
          "required": true
        }
      }
    },
    {
      "type": "object",
      "description": "A movie item has a title and may have a release year.",
      "properties": {
        "type": {
          "$ref": "Notifications.Item.Type",
          "required": true
        },
        "title": {
          "type": "string",
          "required": true
        },
        "year": {
          "type": "integer"
        }
      }
    },
    {
      "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.",
      "properties": {
        "type": {
          "$ref": "Notifications.Item.Type",
          "required": true
        },
        "title": {
          "type": "string",
          "required": true
        },
        "episode": {
          "type": "integer"
        },
        "season": {
          "type": "integer"
        },
        "showtitle": {
          "type": "string"
        }
      }
    },
    {
      "type": "object",
      "description": "A music video has a title and may have an album and an artist.",
      "properties": {
        "type": {
          "$ref": "Notifications.Item.Type",
          "required": true
        },
        "title": {
          "type": "string",
          "required": true
        },
        "album": {
          "type": "string"
        },
        "artist": {
          "type": "string"
        }
      }
    },
    {
      "type": "object",
      "description": "A song has a title and may have an album, an artist and a track number.",
      "properties": {
        "type": {
          "$ref": "Notifications.Item.Type",
          "required": true
        },
        "title": {
          "type": "string",
          "required": true
        },
        "album": {
          "type": "string"
        },
        "artist": {
          "type": "string"
        },
        "track": {
          "type": "integer"
        }
      }
    },
    {
      "type": "object",
      "description": "A picture has a file path.",
      "properties": {
        "type": {
          "$ref": "Notifications.Item.Type",
          "required": true
        },
        "file": {
          "type": "string",
          "required": true
        }
      }
    },
    {
      "type": "object",
      "description": "A PVR channel is either a radio or tv channel and has a title.",
      "properties": {
        "type": {
          "$ref": "Notifications.Item.Type",
          "required": true
        },
        "id": {
          "$ref": "Library.Id",
          "required": true
        },
        "title": {
          "type": "string",
          "required": true
        },
        "channeltype": {
          "$ref": "PVR.Channel.Type",
          "required": true
        }
      }
    }
  ]
}
</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 lang="javascript" enclose="div">
{
  "type": "string",
  "enum": [
    "unknown",
    "movie",
    "episode",
    "musicvideo",
    "song",
    "picture",
    "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 lang="javascript" enclose="div">
{
  "type": [
    "null",
    "boolean"
  ],
  "default": null
}
</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 lang="javascript" enclose="div">
{
  "type": [
    "null",
    "integer"
  ],
  "default": null
}
</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 lang="javascript" enclose="div">
{
  "type": [
    "null",
    "number"
  ],
  "default": null
}
</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 lang="javascript" enclose="div">
{
  "type": [
    "null",
    "string"
  ],
  "default": null
}
</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 lang="javascript" enclose="div">
{
  "type": "string",
  "enum": [
    "tv",
    "radio"
  ]
}
</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 lang="javascript" enclose="div">
{
  "type": [
    {
      "$ref": "Library.Id",
      "required": true
    },
    {
      "type": "string",
      "enum": [
        "alltv",
        "allradio"
      ],
      "required": true
    }
  ]
}
</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 lang="javascript" enclose="div">
{
  "extends": "Item.Details.Base",
  "properties": {
    "broadcastid": {
      "$ref": "Library.Id",
      "required": true
    },
    "title": {
      "type": "string"
    },
    "plot": {
      "type": "string"
    },
    "plotoutline": {
      "type": "string"
    },
    "starttime": {
      "type": "string"
    },
    "endtime": {
      "type": "string"
    },
    "runtime": {
      "type": "integer"
    },
    "progress": {
      "type": "integer"
    },
    "progresspercentage": {
      "type": "number"
    },
    "genre": {
      "type": "string"
    },
    "episodename": {
      "type": "string"
    },
    "episodenum": {
      "type": "integer"
    },
    "episodepart": {
      "type": "integer"
    },
    "firstaired": {
      "type": "string"
    },
    "hastimer": {
      "type": "boolean"
    },
    "isactive": {
      "type": "boolean"
    },
    "parentalrating": {
      "type": "integer"
    },
    "wasactive": {
      "type": "boolean"
    },
    "thumbnail": {
      "type": "string"
    },
    "rating": {
      "type": "integer"
    },
    "originaltitle": {
      "type": "string"
    },
    "cast": {
      "type": "string"
    },
    "director": {
      "type": "string"
    },
    "writer": {
      "type": "string"
    },
    "year": {
      "type": "integer"
    },
    "imdbnumber": {
      "type": "integer"
    },
    "hastimerrule": {
      "type": "boolean"
    },
    "hasrecording": {
      "type": "boolean"
    },
    "recording": {
      "type": "string"
    },
    "isseries": {
      "type": "boolean"
    },
    "isplayable": {
      "type": "boolean"
    }
  }
}
</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 lang="javascript" enclose="div">
{
  "extends": "Item.Details.Base",
  "properties": {
    "channelid": {
      "$ref": "Library.Id",
      "required": true
    },
    "channel": {
      "type": "string"
    },
    "channeltype": {
      "$ref": "PVR.Channel.Type"
    },
    "hidden": {
      "type": "boolean"
    },
    "locked": {
      "type": "boolean"
    },
    "thumbnail": {
      "type": "string"
    },
    "lastplayed": {
      "type": "string"
    },
    "broadcastnow": {
      "$ref": "PVR.Details.Broadcast"
    },
    "broadcastnext": {
      "$ref": "PVR.Details.Broadcast"
    },
    "uniqueid": {
      "type": "integer",
      "required": true
    },
    "icon": {
      "type": "string"
    },
    "channelnumber": {
      "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 lang="javascript" enclose="div">
{
  "extends": "Item.Details.Base",
  "properties": {
    "channelgroupid": {
      "$ref": "Library.Id",
      "required": true
    },
    "channeltype": {
      "$ref": "PVR.Channel.Type",
      "required": true
    }
  }
}
</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 lang="javascript" enclose="div">
{
  "extends": "PVR.Details.ChannelGroup",
  "properties": {
    "limits": {
      "$ref": "List.LimitsReturned",
      "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">
* ''[[#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 lang="javascript" enclose="div">
{
  "extends": "Item.Details.Base",
  "properties": {
    "recordingid": {
      "$ref": "Library.Id",
      "required": true
    },
    "title": {
      "type": "string"
    },
    "plot": {
      "type": "string"
    },
    "plotoutline": {
      "type": "string"
    },
    "genre": {
      "type": "string"
    },
    "playcount": {
      "type": "integer"
    },
    "resume": {
      "$ref": "Video.Resume"
    },
    "channel": {
      "type": "string"
    },
    "starttime": {
      "type": "string"
    },
    "endtime": {
      "type": "string"
    },
    "runtime": {
      "type": "integer"
    },
    "lifetime": {
      "type": "integer"
    },
    "icon": {
      "type": "string"
    },
    "art": {
      "$ref": "Media.Artwork"
    },
    "streamurl": {
      "type": "string"
    },
    "file": {
      "type": "string"
    },
    "directory": {
      "type": "string"
    },
    "radio": {
      "type": "boolean"
    },
    "isdeleted": {
      "type": "boolean"
    },
    "epgeventid": {
      "type": "integer"
    },
    "channeluid": {
      "type": "integer"
    },
    "season": {
      "type": "integer"
    },
    "episode": {
      "type": "integer"
    },
    "showtitle": {
      "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]]'' 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 lang="javascript" enclose="div">
{
  "extends": "Item.Details.Base",
  "properties": {
    "timerid": {
      "$ref": "Library.Id",
      "required": true
    },
    "title": {
      "type": "string"
    },
    "summary": {
      "type": "string"
    },
    "channelid": {
      "$ref": "Library.Id"
    },
    "isradio": {
      "type": "boolean"
    },
    "istimerrule": {
      "type": "boolean"
    },
    "ismanual": {
      "type": "boolean"
    },
    "starttime": {
      "type": "string"
    },
    "endtime": {
      "type": "string"
    },
    "runtime": {
      "type": "integer"
    },
    "lifetime": {
      "type": "integer"
    },
    "firstday": {
      "type": "string"
    },
    "weekdays": {
      "type": "array",
      "items": {
        "$ref": "Global.Weekday"
      },
      "uniqueItems": true
    },
    "priority": {
      "type": "integer"
    },
    "startmargin": {
      "type": "integer"
    },
    "endmargin": {
      "type": "integer"
    },
    "state": {
      "$ref": "PVR.TimerState"
    },
    "file": {
      "type": "string"
    },
    "directory": {
      "type": "string"
    },
    "preventduplicateepisodes": {
      "type": "integer"
    },
    "startanytime": {
      "type": "boolean"
    },
    "endanytime": {
      "type": "boolean"
    },
    "epgsearchstring": {
      "type": "string"
    },
    "fulltextepgsearch": {
      "type": "boolean"
    },
    "recordinggroup": {
      "type": "integer"
    },
    "maxrecordings": {
      "type": "integer"
    },
    "epguid": {
      "type": "integer"
    },
    "isreadonly": {
      "type": "boolean"
    }
  }
}
</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 lang="javascript" enclose="div">
{
  "extends": "Item.Fields.Base",
  "items": {
    "type": "string",
    "enum": [
      "title",
      "plot",
      "plotoutline",
      "starttime",
      "endtime",
      "runtime",
      "progress",
      "progresspercentage",
      "genre",
      "episodename",
      "episodenum",
      "episodepart",
      "firstaired",
      "hastimer",
      "isactive",
      "parentalrating",
      "wasactive",
      "thumbnail",
      "rating",
      "originaltitle",
      "cast",
      "director",
      "writer",
      "year",
      "imdbnumber",
      "hastimerrule",
      "hasrecording",
      "recording",
      "isseries",
      "isplayable"
    ]
  }
}
</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 lang="javascript" enclose="div">
{
  "extends": "Item.Fields.Base",
  "items": {
    "type": "string",
    "enum": [
      "thumbnail",
      "channeltype",
      "hidden",
      "locked",
      "channel",
      "lastplayed",
      "broadcastnow",
      "broadcastnext",
      "uniqueid",
      "icon",
      "channelnumber",
      "subchannelnumber",
      "isrecording",
      "hasarchive"
    ]
  }
}
</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 lang="javascript" enclose="div">
{
  "extends": "Item.Fields.Base",
  "items": {
    "type": "string",
    "enum": [
      "title",
      "plot",
      "plotoutline",
      "genre",
      "playcount",
      "resume",
      "channel",
      "starttime",
      "endtime",
      "runtime",
      "lifetime",
      "icon",
      "art",
      "streamurl",
      "file",
      "directory",
      "radio",
      "isdeleted",
      "epgeventid",
      "channeluid",
      "season",
      "episode",
      "showtitle"
    ]
  }
}
</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 lang="javascript" enclose="div">
{
  "extends": "Item.Fields.Base",
  "items": {
    "type": "string",
    "enum": [
      "title",
      "summary",
      "channelid",
      "isradio",
      "istimerrule",
      "ismanual",
      "starttime",
      "endtime",
      "runtime",
      "lifetime",
      "firstday",
      "weekdays",
      "priority",
      "startmargin",
      "endmargin",
      "state",
      "file",
      "directory",
      "preventduplicateepisodes",
      "startanytime",
      "endanytime",
      "epgsearchstring",
      "fulltextepgsearch",
      "recordinggroup",
      "maxrecordings",
      "epguid",
      "isreadonly"
    ]
  }
}
</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 lang="javascript" enclose="div">
{
  "type": "string",
  "enum": [
    "available",
    "recording",
    "scanning"
  ]
}
</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 lang="javascript" enclose="div">
{
  "type": "object",
  "properties": {
    "available": {
      "type": "boolean"
    },
    "recording": {
      "type": "boolean"
    },
    "scanning": {
      "type": "boolean"
    }
  }
}
</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 lang="javascript" enclose="div">
{
  "type": "string",
  "enum": [
    "unknown",
    "new",
    "scheduled",
    "recording",
    "completed",
    "aborted",
    "cancelled",
    "conflict_ok",
    "conflict_notok",
    "error",
    "disabled"
  ]
}
</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'' 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 lang="javascript" enclose="div">
{
  "type": "object",
  "properties": {
    "index": {
      "type": "integer",
      "minimum": 0,
      "required": true
    },
    "name": {
      "type": "string",
      "required": true
    },
    "language": {
      "type": "string",
      "required": true
    },
    "codec": {
      "type": "string",
      "required": true
    },
    "bitrate": {
      "type": "integer",
      "required": true
    },
    "channels": {
      "type": "integer",
      "required": true
    },
    "isdefault": {
      "type": "boolean",
      "required": true
    },
    "isoriginal": {
      "type": "boolean",
      "required": true
    },
    "isimpaired": {
      "type": "boolean",
      "required": true
    },
    "samplerate": {
      "type": "integer",
      "required": true
    }
  }
}
</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.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 lang="javascript" enclose="div">
{
  "type": "object",
  "required": true,
  "properties": {
    "zoom": {
      "type": [
        {
          "type": "string",
          "enum": [
            "increase",
            "decrease"
          ],
          "required": true
        },
        {
          "$ref": "Optional.Number",
          "minimum": 0.5,
          "maximum": 2.0,
          "description": "Zoom where 1.0 means 100%",
          "required": true
        }
      ]
    },
    "pixelratio": {
      "type": [
        {
          "type": "string",
          "enum": [
            "increase",
            "decrease"
          ],
          "required": true
        },
        {
          "$ref": "Optional.Number",
          "minimum": 0.5,
          "maximum": 2.0,
          "description": "Pixel aspect ratio where 1.0 means square pixel",
          "required": true
        }
      ]
    },
    "verticalshift": {
      "type": [
        {
          "type": "string",
          "enum": [
            "increase",
            "decrease"
          ],
          "required": true
        },
        {
          "$ref": "Optional.Number",
          "minimum": -2.0,
          "maximum": 2.0,
          "description": "Vertical shift 1.0 means shift to bottom",
          "required": true
        }
      ]
    },
    "nonlinearstretch": {
      "type": [
        {
          "type": "string",
          "enum": [
            "increase",
            "decrease"
          ],
          "required": true
        },
        {
          "$ref": "Optional.Boolean",
          "description": "Flag to enable nonlinear stretch",
          "required": true
        }
      ]
    }
  }
}
</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 lang="javascript" enclose="div">
{
  "type": "integer",
  "minimum": 0,
  "maximum": 2,
  "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 lang="javascript" enclose="div">
{
  "type": "object",
  "properties": {
    "item": {
      "$ref": "Notifications.Item",
      "required": true
    },
    "player": {
      "$ref": "Player.Notifications.Player",
      "required": true
    }
  }
}
</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 lang="javascript" enclose="div">
{
  "type": "object",
  "properties": {
    "playerid": {
      "$ref": "Player.Id",
      "required": true
    },
    "speed": {
      "type": "integer"
    }
  }
}
</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]]'' 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 lang="javascript" enclose="div">
{
  "extends": "Player.Notifications.Player",
  "properties": {
    "time": {
      "$ref": "Global.Time"
    },
    "seekoffset": {
      "$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 lang="javascript" enclose="div">
{
  "type": "number",
  "minimum": 0.0,
  "maximum": 100.0
}
</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 lang="javascript" enclose="div">
{
  "type": "object",
  "additionalProperties": false,
  "properties": {
    "hours": {
      "type": "integer",
      "minimum": 0,
      "maximum": 23,
      "default": 0
    },
    "minutes": {
      "type": "integer",
      "minimum": 0,
      "maximum": 59,
      "default": 0
    },
    "seconds": {
      "type": "integer",
      "minimum": 0,
      "maximum": 59,
      "default": 0
    },
    "milliseconds": {
      "type": "integer",
      "minimum": 0,
      "maximum": 999,
      "default": 0
    }
  }
}
</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 lang="javascript" enclose="div">
{
  "type": "string",
  "enum": [
    "type",
    "partymode",
    "speed",
    "time",
    "percentage",
    "totaltime",
    "playlistid",
    "position",
    "repeat",
    "shuffled",
    "canseek",
    "canchangespeed",
    "canmove",
    "canzoom",
    "canrotate",
    "canshuffle",
    "canrepeat",
    "currentaudiostream",
    "audiostreams",
    "subtitleenabled",
    "currentsubtitle",
    "subtitles",
    "live",
    "currentvideostream",
    "videostreams"
  ]
}
</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">
* [''[[#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 lang="javascript" enclose="div">
{
  "type": "object",
  "properties": {
    "type": {
      "$ref": "Player.Type"
    },
    "partymode": {
      "type": "boolean"
    },
    "speed": {
      "type": "integer"
    },
    "time": {
      "$ref": "Global.Time"
    },
    "percentage": {
      "$ref": "Player.Position.Percentage"
    },
    "totaltime": {
      "$ref": "Global.Time"
    },
    "playlistid": {
      "$ref": "Playlist.Id"
    },
    "position": {
      "$ref": "Playlist.Position"
    },
    "repeat": {
      "$ref": "Player.Repeat"
    },
    "shuffled": {
      "type": "boolean"
    },
    "canseek": {
      "type": "boolean"
    },
    "canchangespeed": {
      "type": "boolean"
    },
    "canmove": {
      "type": "boolean"
    },
    "canzoom": {
      "type": "boolean"
    },
    "canrotate": {
      "type": "boolean"
    },
    "canshuffle": {
      "type": "boolean"
    },
    "canrepeat": {
      "type": "boolean"
    },
    "currentaudiostream": {
      "$ref": "Player.Audio.Stream"
    },
    "audiostreams": {
      "type": "array",
      "items": {
        "$ref": "Player.Audio.Stream"
      }
    },
    "currentvideostream": {
      "$ref": "Player.Video.Stream"
    },
    "videostreams": {
      "type": "array",
      "items": {
        "$ref": "Player.Video.Stream"
      }
    },
    "subtitleenabled": {
      "type": "boolean"
    },
    "currentsubtitle": {
      "$ref": "Player.Subtitle"
    },
    "subtitles": {
      "type": "array",
      "items": {
        "$ref": "Player.Subtitle"
      }
    },
    "live": {
      "type": "boolean"
    }
  }
}
</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 lang="javascript" enclose="div">
{
  "type": "string",
  "enum": [
    "off",
    "one",
    "all"
  ]
}
</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 lang="javascript" enclose="div">
{
  "type": "object",
  "required": true,
  "properties": {
    "speed": {
      "type": "integer"
    }
  }
}
</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
* ''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 lang="javascript" enclose="div">
{
  "type": "object",
  "properties": {
    "index": {
      "type": "integer",
      "minimum": 0,
      "required": true
    },
    "name": {
      "type": "string",
      "required": true
    },
    "language": {
      "type": "string",
      "required": true
    },
    "isdefault": {
      "type": "boolean",
      "required": true
    },
    "isforced": {
      "type": "boolean",
      "required": true
    },
    "isimpaired": {
      "type": "boolean",
      "required": true
    }
  }
}
</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 lang="javascript" enclose="div">
{
  "type": "string",
  "enum": [
    "video",
    "audio",
    "picture"
  ]
}
</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">
* ''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 lang="javascript" enclose="div">
{
  "type": "object",
  "properties": {
    "index": {
      "type": "integer",
      "minimum": 0,
      "required": true
    },
    "name": {
      "type": "string",
      "required": true
    },
    "language": {
      "type": "string",
      "required": true
    },
    "codec": {
      "type": "string",
      "required": true
    },
    "width": {
      "type": "integer",
      "required": true
    },
    "height": {
      "type": "integer",
      "required": true
    }
  }
}
</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 lang="javascript" enclose="div">
{
  "type": "string",
  "enum": [
    "normal",
    "zoom",
    "stretch4x3",
    "widezoom",
    "stretch16x9",
    "original",
    "stretch16x9nonlin",
    "zoom120width",
    "zoom110width"
  ]
}
</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 lang="javascript" enclose="div">
{
  "type": "integer",
  "minimum": 0,
  "maximum": 2,
  "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 lang="javascript" enclose="div">
{
  "type": [
    {
      "type": "object",
      "properties": {
        "file": {
          "type": "string",
          "description": "Path to a file (not a directory) to be added to the playlist",
          "required": true
        }
      },
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "directory": {
          "type": "string",
          "required": true
        },
        "recursive": {
          "type": "boolean",
          "default": false
        },
        "media": {
          "$ref": "Files.Media",
          "default": "files"
        }
      },
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "movieid": {
          "$ref": "Library.Id",
          "required": true
        }
      },
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "episodeid": {
          "$ref": "Library.Id",
          "required": true
        }
      },
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "musicvideoid": {
          "$ref": "Library.Id",
          "required": true
        }
      },
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "artistid": {
          "$ref": "Library.Id",
          "required": true
        }
      },
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "albumid": {
          "$ref": "Library.Id",
          "required": true
        }
      },
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "songid": {
          "$ref": "Library.Id",
          "required": true
        }
      },
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "genreid": {
          "$ref": "Library.Id",
          "required": true,
          "description": "Identification of a genre from the AudioLibrary"
        }
      },
      "additionalProperties": false
    }
  ]
}
</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 lang="javascript" enclose="div">
{
  "type": "integer",
  "minimum": 0,
  "default": -1
}
</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 lang="javascript" enclose="div">
{
  "type": "string",
  "enum": [
    "type",
    "size"
  ]
}
</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">
* [''[[#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 lang="javascript" enclose="div">
{
  "type": "object",
  "properties": {
    "type": {
      "$ref": "Playlist.Type"
    },
    "size": {
      "type": "integer",
      "minimum": 0
    }
  }
}
</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 lang="javascript" enclose="div">
{
  "type": "string",
  "enum": [
    "unknown",
    "video",
    "audio",
    "picture",
    "mixed"
  ]
}
</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">
* [''string'' thumbnail]
* [''integer'' lockmode]
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight lang="javascript" enclose="div">
{
  "extends": "Item.Details.Base",
  "properties": {
    "thumbnail": {
      "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 lang="javascript" enclose="div">
{
  "extends": "Item.Fields.Base",
  "items": {
    "type": "string",
    "enum": [
      "thumbnail",
      "lockmode"
    ]
  }
}
</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'' value
* [''string'' encryption = md5]
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight lang="javascript" enclose="div">
{
  "type": "object",
  "properties": {
    "value": {
      "type": "string",
      "required": true,
      "description": "Password"
    },
    "encryption": {
      "type": "string",
      "description": "Password Encryption",
      "default": "md5",
      "enum": [
        "none",
        "md5"
      ]
    }
  }
}
</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'' 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 lang="javascript" enclose="div">
{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "required": true,
      "minLength": 1
    },
    "label": {
      "type": "string",
      "required": true
    },
    "help": {
      "type": "string"
    }
  }
}
</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 lang="javascript" enclose="div">
{
  "extends": "Setting.Details.Base",
  "properties": {
    "groups": {
      "type": "array",
      "items": {
        "$ref": "Setting.Details.Group"
      },
      "minItems": 1,
      "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 lang="javascript" enclose="div">
{
  "type": [
    {
      "$ref": "Setting.Details.ControlCheckmark",
      "required": true
    },
    {
      "$ref": "Setting.Details.ControlSpinner",
      "required": true
    },
    {
      "$ref": "Setting.Details.ControlEdit",
      "required": true
    },
    {
      "$ref": "Setting.Details.ControlButton",
      "required": true
    },
    {
      "$ref": "Setting.Details.ControlList",
      "required": true
    },
    {
      "$ref": "Setting.Details.ControlSlider",
      "required": true
    },
    {
      "$ref": "Setting.Details.ControlRange",
      "required": true
    },
    {
      "$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">
* ''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 lang="javascript" enclose="div">
{
  "type": "object",
  "properties": {
    "type": {
      "type": "string",
      "required": true
    },
    "format": {
      "type": "string",
      "required": true
    },
    "delayed": {
      "type": "boolean",
      "required": true
    }
  }
}
</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 lang="javascript" enclose="div">
{
  "extends": "Setting.Details.ControlHeading",
  "properties": {
    "type": {
      "type": "string",
      "required": true,
      "enum": [
        "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'' type
* ''string'' format
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight lang="javascript" enclose="div">
{
  "extends": "Setting.Details.ControlBase",
  "properties": {
    "type": {
      "type": "string",
      "required": true,
      "enum": [
        "toggle"
      ]
    },
    "format": {
      "type": "string",
      "required": true,
      "enum": [
        "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">
* ''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 lang="javascript" enclose="div">
{
  "extends": "Setting.Details.ControlHeading",
  "properties": {
    "type": {
      "type": "string",
      "required": true,
      "enum": [
        "edit"
      ]
    },
    "hidden": {
      "type": "boolean",
      "required": true
    },
    "verifynewvalue": {
      "type": "boolean",
      "required": true
    }
  }
}
</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 lang="javascript" enclose="div">
{
  "extends": "Setting.Details.ControlBase",
  "properties": {
    "heading": {
      "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'' type
* ''string'' format
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight lang="javascript" enclose="div">
{
  "extends": "Setting.Details.ControlBase",
  "properties": {
    "type": {
      "type": "string",
      "required": true,
      "enum": [
        "label"
      ]
    },
    "format": {
      "type": "string",
      "required": true,
      "enum": [
        "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">
* ''string'' type
* ''boolean'' multiselect
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight lang="javascript" enclose="div">
{
  "extends": "Setting.Details.ControlHeading",
  "properties": {
    "type": {
      "type": "string",
      "required": true,
      "enum": [
        "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'' 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 lang="javascript" enclose="div">
{
  "extends": "Setting.Details.ControlBase",
  "properties": {
    "type": {
      "type": "string",
      "required": true,
      "enum": [
        "range"
      ]
    },
    "formatlabel": {
      "type": "string",
      "required": true
    },
    "formatvalue": {
      "type": "string",
      "required": true
    }
  }
}
</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 lang="javascript" enclose="div">
{
  "extends": "Setting.Details.ControlHeading",
  "properties": {
    "type": {
      "type": "string",
      "required": true,
      "enum": [
        "slider"
      ]
    },
    "formatlabel": {
      "type": "string",
      "required": true
    },
    "popup": {
      "type": "boolean",
      "required": true
    }
  }
}
</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 lang="javascript" enclose="div">
{
  "extends": "Setting.Details.ControlBase",
  "properties": {
    "type": {
      "type": "string",
      "required": true,
      "enum": [
        "spinner"
      ]
    },
    "formatlabel": {
      "type": "string"
    },
    "minimumlabel": {
      "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 lang="javascript" enclose="div">
{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "required": true,
      "minLength": 1
    },
    "settings": {
      "type": "array",
      "items": {
        "$ref": "Setting.Details.Setting"
      },
      "minItems": 1,
      "uniqueItems": true
    }
  },
  "additionalProperties": false
}
</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 lang="javascript" enclose="div">
{
  "extends": "Setting.Details.Base",
  "properties": {
    "categories": {
      "type": "array",
      "items": {
        "$ref": "Setting.Details.Category"
      },
      "minItems": 1,
      "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 lang="javascript" enclose="div">
{
  "type": [
    {
      "$ref": "Setting.Details.SettingBool",
      "required": true
    },
    {
      "$ref": "Setting.Details.SettingInt",
      "required": true
    },
    {
      "$ref": "Setting.Details.SettingNumber",
      "required": true
    },
    {
      "$ref": "Setting.Details.SettingString",
      "required": true
    },
    {
      "$ref": "Setting.Details.SettingAction",
      "required": true
    },
    {
      "$ref": "Setting.Details.SettingList",
      "required": true
    },
    {
      "$ref": "Setting.Details.SettingPath",
      "required": true
    },
    {
      "$ref": "Setting.Details.SettingAddon",
      "required": true
    },
    {
      "$ref": "Setting.Details.SettingDate",
      "required": true
    },
    {
      "$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 lang="javascript" enclose="div">
{
  "extends": "Setting.Details.SettingBase",
  "properties": {
    "data": {
      "type": "string",
      "required": true
    }
  },
  "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 lang="javascript" enclose="div">
{
  "extends": "Setting.Details.SettingString",
  "properties": {
    "addontype": {
      "$ref": "Addon.Types",
      "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.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 lang="javascript" enclose="div">
{
  "extends": "Setting.Details.Base",
  "properties": {
    "type": {
      "$ref": "Setting.Type",
      "required": true
    },
    "enabled": {
      "type": "boolean",
      "required": true
    },
    "level": {
      "$ref": "Setting.Level",
      "required": true
    },
    "parent": {
      "type": "string"
    },
    "control": {
      "$ref": "Setting.Details.Control"
    }
  },
  "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 lang="javascript" enclose="div">
{
  "extends": "Setting.Details.SettingBase",
  "properties": {
    "value": {
      "type": "boolean",
      "required": true
    },
    "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 lang="javascript" enclose="div">
{
  "extends": "Setting.Details.SettingString",
  "additionalProperties": false
}
</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'' 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 lang="javascript" enclose="div">
{
  "extends": "Setting.Details.SettingBase",
  "properties": {
    "value": {
      "type": "integer",
      "required": true
    },
    "default": {
      "type": "integer",
      "required": true
    },
    "minimum": {
      "type": "integer"
    },
    "step": {
      "type": "integer"
    },
    "maximum": {
      "type": "integer"
    },
    "options": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "label": {
            "type": "string",
            "required": true
          },
          "value": {
            "type": "integer",
            "required": true
          }
        }
      }
    }
  },
  "additionalProperties": false
}
</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]]'' value
* ''[[#Setting.Value.List|Setting.Value.List]]'' default
* ''[[#Setting.Type|Setting.Type]]'' elementtype
* ''[[#Setting.Details.Setting|Setting.Details.Setting]]'' definition
* ''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 lang="javascript" enclose="div">
{
  "extends": "Setting.Details.SettingBase",
  "properties": {
    "value": {
      "$ref": "Setting.Value.List",
      "required": true
    },
    "default": {
      "$ref": "Setting.Value.List",
      "required": true
    },
    "elementtype": {
      "$ref": "Setting.Type",
      "required": true
    },
    "definition": {
      "$ref": "Setting.Details.Setting",
      "required": true
    },
    "delimiter": {
      "type": "string",
      "required": true
    },
    "minimumItems": {
      "type": "integer"
    },
    "maximumItems": {
      "type": "integer"
    }
  },
  "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 lang="javascript" enclose="div">
{
  "extends": "Setting.Details.SettingBase",
  "properties": {
    "value": {
      "type": "number",
      "required": true
    },
    "default": {
      "type": "number",
      "required": true
    },
    "minimum": {
      "type": "number",
      "required": true
    },
    "step": {
      "type": "number",
      "required": true
    },
    "maximum": {
      "type": "number",
      "required": true
    }
  },
  "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 lang="javascript" enclose="div">
{
  "extends": "Setting.Details.SettingString",
  "properties": {
    "writable": {
      "type": "boolean",
      "required": true
    },
    "sources": {
      "type": "array",
      "items": {
        "type": "string"
      }
    }
  },
  "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">
* ''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 lang="javascript" enclose="div">
{
  "extends": "Setting.Details.SettingBase",
  "properties": {
    "value": {
      "type": "string",
      "required": true
    },
    "default": {
      "type": "string",
      "required": true
    },
    "allowempty": {
      "type": "boolean",
      "required": true
    },
    "options": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "label": {
            "type": "string",
            "required": true
          },
          "value": {
            "type": "string",
            "required": true
          }
        }
      }
    }
  }
}
</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 lang="javascript" enclose="div">
{
  "extends": "Setting.Details.SettingString",
  "additionalProperties": false
}
</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 lang="javascript" enclose="div">
{
  "type": "string",
  "enum": [
    "basic",
    "standard",
    "advanced",
    "expert"
  ]
}
</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 lang="javascript" enclose="div">
{
  "type": "string",
  "enum": [
    "boolean",
    "integer",
    "number",
    "string",
    "action",
    "list",
    "path",
    "addon",
    "date",
    "time"
  ]
}
</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 lang="javascript" enclose="div">
{
  "type": [
    {
      "type": "boolean",
      "required": true
    },
    {
      "type": "integer",
      "required": true
    },
    {
      "type": "number",
      "required": true
    },
    {
      "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 lang="javascript" enclose="div">
{
  "type": [
    {
      "type": "boolean",
      "required": true
    },
    {
      "type": "integer",
      "required": true
    },
    {
      "type": "number",
      "required": true
    },
    {
      "type": "string",
      "required": true
    },
    {
      "$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 lang="javascript" enclose="div">
{
  "type": "array",
  "items": {
    "$ref": "Setting.Value"
  }
}
</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 lang="javascript" enclose="div">
{
  "type": "string",
  "enum": [
    "canshutdown",
    "cansuspend",
    "canhibernate",
    "canreboot"
  ]
}
</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'' 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 lang="javascript" enclose="div">
{
  "type": "object",
  "properties": {
    "canshutdown": {
      "type": "boolean"
    },
    "cansuspend": {
      "type": "boolean"
    },
    "canhibernate": {
      "type": "boolean"
    },
    "canreboot": {
      "type": "boolean"
    }
  }
}
</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'' 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 lang="javascript" enclose="div">
{
  "type": "object",
  "properties": {
    "size": {
      "type": "integer",
      "description": "Size of the texture (1  largest)"
    },
    "width": {
      "type": "integer",
      "description": "Width of texture"
    },
    "height": {
      "type": "integer",
      "description": "Height of texture"
    },
    "usecount": {
      "type": "integer",
      "description": "Number of uses"
    },
    "lastused": {
      "type": "string",
      "description": "Date of last use"
    }
  }
}
</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">
* ''[[#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 lang="javascript" enclose="div">
{
  "type": "object",
  "properties": {
    "textureid": {
      "$ref": "Library.Id",
      "required": "true"
    },
    "url": {
      "type": "string",
      "description": "Original source URL"
    },
    "cachedurl": {
      "type": "string",
      "description": "Cached URL on disk"
    },
    "lasthashcheck": {
      "type": "string",
      "description": "Last time source was checked for changes"
    },
    "imagehash": {
      "type": "string",
      "description": "Hash of image"
    },
    "sizes": {
      "type": "array",
      "items": {
        "$ref": "Textures.Details.Size"
      }
    }
  }
}
</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 lang="javascript" enclose="div">
{
  "extends": "Item.Fields.Base",
  "items": {
    "type": "string",
    "enum": [
      "url",
      "cachedurl",
      "lasthashcheck",
      "imagehash",
      "sizes"
    ]
  }
}
</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 lang="javascript" enclose="div">
{
  "type": "array",
  "items": {
    "type": "object",
    "properties": {
      "name": {
        "type": "string",
        "required": true
      },
      "role": {
        "type": "string",
        "required": true
      },
      "order": {
        "type": "integer",
        "required": true
      },
      "thumbnail": {
        "type": "string"
      }
    },
    "additionalProperties": false
  }
}
</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">
* [''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 lang="javascript" enclose="div">
{
  "extends": "Media.Details.Base",
  "properties": {
    "playcount": {
      "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">
* ''[[#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 lang="javascript" enclose="div">
{
  "extends": "Video.Details.File",
  "properties": {
    "episodeid": {
      "$ref": "Library.Id",
      "required": true
    },
    "votes": {
      "type": "string"
    },
    "rating": {
      "type": "number"
    },
    "writer": {
      "$ref": "Array.String"
    },
    "firstaired": {
      "type": "string"
    },
    "productioncode": {
      "type": "string"
    },
    "season": {
      "type": "integer"
    },
    "episode": {
      "type": "integer"
    },
    "uniqueid": {
      "$ref": "Media.UniqueID"
    },
    "originaltitle": {
      "type": "string"
    },
    "showtitle": {
      "type": "string"
    },
    "cast": {
      "$ref": "Video.Cast"
    },
    "tvshowid": {
      "$ref": "Library.Id"
    },
    "specialsortseason": {
      "type": "integer"
    },
    "specialsortepisode": {
      "type": "integer"
    },
    "userrating": {
      "type": "integer"
    },
    "seasonid": {
      "$ref": "Library.Id"
    },
    "ratings": {
      "type": "Video.Ratings"
    }
  }
}
</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 lang="javascript" enclose="div">
{
  "extends": "Video.Details.Item",
  "properties": {
    "runtime": {
      "type": "integer",
      "description": "Runtime in seconds"
    },
    "director": {
      "$ref": "Array.String"
    },
    "streamdetails": {
      "$ref": "Video.Streams"
    },
    "resume": {
      "$ref": "Video.Resume"
    }
  }
}
</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 lang="javascript" enclose="div">
{
  "extends": "Video.Details.Media",
  "properties": {
    "file": {
      "type": "string"
    },
    "plot": {
      "type": "string"
    },
    "lastplayed": {
      "type": "string"
    },
    "dateadded": {
      "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 lang="javascript" enclose="div">
{
  "extends": "Video.Details.Base",
  "properties": {
    "title": {
      "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">
* ''[[#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 lang="javascript" enclose="div">
{
  "extends": "Video.Details.File",
  "properties": {
    "movieid": {
      "$ref": "Library.Id",
      "required": true
    },
    "genre": {
      "$ref": "Array.String"
    },
    "year": {
      "type": "integer"
    },
    "rating": {
      "type": "number"
    },
    "trailer": {
      "type": "string"
    },
    "tagline": {
      "type": "string"
    },
    "plotoutline": {
      "type": "string"
    },
    "originaltitle": {
      "type": "string"
    },
    "sorttitle": {
      "type": "string"
    },
    "writer": {
      "$ref": "Array.String"
    },
    "studio": {
      "$ref": "Array.String"
    },
    "mpaa": {
      "type": "string"
    },
    "cast": {
      "$ref": "Video.Cast"
    },
    "country": {
      "$ref": "Array.String"
    },
    "imdbnumber": {
      "type": "string"
    },
    "set": {
      "type": "string"
    },
    "showlink": {
      "$ref": "Array.String"
    },
    "top250": {
      "type": "integer"
    },
    "votes": {
      "type": "string"
    },
    "setid": {
      "$ref": "Library.Id"
    },
    "tag": {
      "$ref": "Array.String"
    },
    "userrating": {
      "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">
* ''[[#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 lang="javascript" enclose="div">
{
  "extends": "Video.Details.Media",
  "properties": {
    "setid": {
      "$ref": "Library.Id",
      "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 lang="javascript" enclose="div">
{
  "extends": "Video.Details.MovieSet",
  "properties": {
    "limits": {
      "$ref": "List.LimitsReturned",
      "required": true
    },
    "movies": {
      "type": "array",
      "items": {
        "$ref": "Video.Details.Movie"
      }
    }
  }
}
</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 lang="javascript" enclose="div">
{
  "extends": "Video.Details.File",
  "properties": {
    "musicvideoid": {
      "$ref": "Library.Id",
      "required": true
    },
    "studio": {
      "$ref": "Array.String"
    },
    "year": {
      "type": "integer"
    },
    "album": {
      "type": "string"
    },
    "artist": {
      "$ref": "Array.String"
    },
    "genre": {
      "$ref": "Array.String"
    },
    "track": {
      "type": "integer"
    },
    "tag": {
      "$ref": "Array.String"
    },
    "rating": {
      "type": "number"
    },
    "userrating": {
      "type": "integer"
    },
    "premiered": {
      "type": "string"
    }
  }
}
</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 lang="javascript" enclose="div">
{
  "extends": "Video.Details.Base",
  "properties": {
    "seasonid": {
      "$ref": "Library.Id",
      "required": true
    },
    "season": {
      "type": "integer",
      "required": true
    },
    "showtitle": {
      "type": "string"
    },
    "episode": {
      "type": "integer"
    },
    "watchedepisodes": {
      "type": "integer"
    },
    "tvshowid": {
      "$ref": "Library.Id"
    },
    "userrating": {
      "type": "integer"
    },
    "title": {
      "type": "string"
    }
  }
}
</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 lang="javascript" enclose="div">
{
  "extends": "Video.Details.Item",
  "properties": {
    "tvshowid": {
      "$ref": "Library.Id",
      "required": true
    },
    "genre": {
      "$ref": "Array.String"
    },
    "year": {
      "type": "integer"
    },
    "rating": {
      "type": "number"
    },
    "originaltitle": {
      "type": "string"
    },
    "sorttitle": {
      "type": "string"
    },
    "studio": {
      "$ref": "Array.String"
    },
    "mpaa": {
      "type": "string"
    },
    "cast": {
      "$ref": "Video.Cast"
    },
    "episode": {
      "type": "integer"
    },
    "watchedepisodes": {
      "type": "integer"
    },
    "imdbnumber": {
      "type": "string"
    },
    "premiered": {
      "type": "string"
    },
    "votes": {
      "type": "string"
    },
    "episodeguide": {
      "type": "string"
    },
    "season": {
      "type": "integer"
    },
    "tag": {
      "$ref": "Array.String"
    },
    "userrating": {
      "type": "integer"
    },
    "ratings": {
      "type": "Video.Ratings"
    },
    "runtime": {
      "type": "integer",
      "description": "Runtime in seconds"
    },
    "status": {
      "type": "string",
      "description": "Returns 'returning series', 'in production', 'planned', 'cancelled' or 'ended'"
    },
    "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 lang="javascript" enclose="div">
{
  "extends": "Item.Fields.Base",
  "items": {
    "type": "string",
    "description": "Requesting the cast, ratings, streamdetails, uniqueid and/or tag field will result in increased response times",
    "enum": [
      "title",
      "plot",
      "votes",
      "rating",
      "writer",
      "firstaired",
      "playcount",
      "runtime",
      "director",
      "productioncode",
      "season",
      "episode",
      "originaltitle",
      "showtitle",
      "cast",
      "streamdetails",
      "lastplayed",
      "fanart",
      "thumbnail",
      "file",
      "resume",
      "tvshowid",
      "dateadded",
      "uniqueid",
      "art",
      "specialsortseason",
      "specialsortepisode",
      "userrating",
      "seasonid",
      "ratings"
    ]
  }
}
</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 lang="javascript" enclose="div">
{
  "extends": "Item.Fields.Base",
  "items": {
    "type": "string",
    "description": "Requesting the cast, ratings, showlink, streamdetails, uniqueid and/or tag field will result in increased response times",
    "enum": [
      "title",
      "genre",
      "year",
      "rating",
      "director",
      "trailer",
      "tagline",
      "plot",
      "plotoutline",
      "originaltitle",
      "lastplayed",
      "playcount",
      "writer",
      "studio",
      "mpaa",
      "cast",
      "country",
      "imdbnumber",
      "runtime",
      "set",
      "showlink",
      "streamdetails",
      "top250",
      "votes",
      "fanart",
      "thumbnail",
      "file",
      "sorttitle",
      "resume",
      "setid",
      "dateadded",
      "tag",
      "art",
      "userrating",
      "ratings",
      "premiered",
      "uniqueid"
    ]
  }
}
</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 lang="javascript" enclose="div">
{
  "extends": "Item.Fields.Base",
  "items": {
    "type": "string",
    "enum": [
      "title",
      "playcount",
      "fanart",
      "thumbnail",
      "art",
      "plot"
    ]
  }
}
</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 lang="javascript" enclose="div">
{
  "extends": "Item.Fields.Base",
  "items": {
    "type": "string",
    "description": "Requesting the streamdetails and/or tag field will result in increased response times",
    "enum": [
      "title",
      "playcount",
      "runtime",
      "director",
      "studio",
      "year",
      "plot",
      "album",
      "artist",
      "genre",
      "track",
      "streamdetails",
      "lastplayed",
      "fanart",
      "thumbnail",
      "file",
      "resume",
      "dateadded",
      "tag",
      "art",
      "rating",
      "userrating",
      "premiered"
    ]
  }
}
</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 lang="javascript" enclose="div">
{
  "extends": "Item.Fields.Base",
  "items": {
    "type": "string",
    "enum": [
      "season",
      "showtitle",
      "playcount",
      "episode",
      "fanart",
      "thumbnail",
      "tvshowid",
      "watchedepisodes",
      "art",
      "userrating",
      "title"
    ]
  }
}
</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 lang="javascript" enclose="div">
{
  "extends": "Item.Fields.Base",
  "items": {
    "type": "string",
    "description": "Requesting the cast, ratings, uniqueid and/or tag field will result in increased response times",
    "enum": [
      "title",
      "genre",
      "year",
      "rating",
      "plot",
      "studio",
      "mpaa",
      "cast",
      "playcount",
      "episode",
      "imdbnumber",
      "premiered",
      "votes",
      "lastplayed",
      "fanart",
      "thumbnail",
      "file",
      "originaltitle",
      "sorttitle",
      "episodeguide",
      "season",
      "watchedepisodes",
      "dateadded",
      "tag",
      "art",
      "userrating",
      "ratings",
      "runtime",
      "uniqueid"
    ]
  }
}
</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">
* ''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 lang="javascript" enclose="div">
{
  "type": "object",
  "properties": {
    "rating": {
      "type": "number",
      "required": true
    },
    "votes": {
      "type": "integer"
    },
    "default": {
      "type": "boolean"
    }
  }
}
</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 lang="javascript" enclose="div">
{
  "type": "object",
  "additionalProperties": {
    "$ref": "Video.Rating"
  }
}
</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 lang="javascript" enclose="div">
{
  "type": "object",
  "additionalProperties": {
    "type": [
      "null",
      {
        "$ref": "Video.Rating",
        "required": true
      }
    ]
  }
}
</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 lang="javascript" enclose="div">
{
  "type": "object",
  "properties": {
    "position": {
      "type": "number",
      "minimum": 0.0
    },
    "total": {
      "type": "number",
      "minimum": 0.0
    }
  },
  "additionalProperties": false
}
</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'' video]
* [''array'' subtitle]
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight lang="javascript" enclose="div">
{
  "type": "object",
  "properties": {
    "audio": {
      "type": "array",
      "minItems": 1,
      "items": {
        "type": "object",
        "properties": {
          "codec": {
            "type": "string"
          },
          "language": {
            "type": "string"
          },
          "channels": {
            "type": "integer"
          }
        },
        "additionalProperties": false
      }
    },
    "video": {
      "type": "array",
      "minItems": 1,
      "items": {
        "type": "object",
        "properties": {
          "codec": {
            "type": "string"
          },
          "aspect": {
            "type": "number"
          },
          "width": {
            "type": "integer"
          },
          "height": {
            "type": "integer"
          },
          "duration": {
            "type": "integer"
          }
        },
        "additionalProperties": false
      }
    },
    "subtitle": {
      "type": "array",
      "minItems": 1,
      "items": {
        "type": "object",
        "properties": {
          "language": {
            "type": "string"
          }
        },
        "additionalProperties": false
      }
    }
  },
  "additionalProperties": false
}
</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 lang="javascript" enclose="div">
{
  "type": "notification",
  "description": "The volume of the application has changed.",
  "params": [
    {
      "name": "sender",
      "type": "string",
      "required": true
    },
    {
      "name": "data",
      "type": "object",
      "required": true,
      "properties": {
        "volume": {
          "type": "integer",
          "minimum": 0,
          "maximum": 100,
          "required": true
        },
        "muted": {
          "type": "boolean",
          "required": true
        }
      }
    }
  ],
  "returns": null
}
</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 lang="javascript" enclose="div">
{
  "type": "notification",
  "description": "The audio library has been cleaned.",
  "params": [
    {
      "name": "sender",
      "type": "string",
      "required": true
    },
    {
      "name": "data",
      "type": "null",
      "required": true
    }
  ],
  "returns": null
}
</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 lang="javascript" enclose="div">
{
  "type": "notification",
  "description": "An audio library clean operation has started.",
  "params": [
    {
      "name": "sender",
      "type": "string",
      "required": true
    },
    {
      "name": "data",
      "type": "null",
      "required": true
    }
  ],
  "returns": null
}
</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]:
#* [''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 lang="javascript" enclose="div">
{
  "type": "notification",
  "description": "An audio library export has finished.",
  "params": [
    {
      "name": "sender",
      "type": "string",
      "required": true
    },
    {
      "name": "data",
      "type": "object",
      "required": false,
      "properties": {
        "file": {
          "type": "string",
          "required": false,
          "default": ""
        },
        "failcount": {
          "type": "integer",
          "minimum": 0,
          "required": false,
          "default": 0
        }
      }
    }
  ],
  "returns": null
}
</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
#* ''[[#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 lang="javascript" enclose="div">
{
  "type": "notification",
  "description": "An audio item has been removed.",
  "params": [
    {
      "name": "sender",
      "type": "string",
      "required": true
    },
    {
      "name": "data",
      "type": "object",
      "required": true,
      "properties": {
        "id": {
          "$ref": "Library.Id",
          "required": true
        },
        "type": {
          "$ref": "Notifications.Library.Audio.Type",
          "required": true
        },
        "transaction": {
          "$ref": "Optional.Boolean",
          "description": "True if the removal is being performed within a transaction."
        }
      }
    }
  ],
  "returns": null
}
</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 lang="javascript" enclose="div">
{
  "type": "notification",
  "description": "Scanning the audio library has been finished.",
  "params": [
    {
      "name": "sender",
      "type": "string",
      "required": true
    },
    {
      "name": "data",
      "type": "null",
      "required": true
    }
  ],
  "returns": null
}
</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 lang="javascript" enclose="div">
{
  "type": "notification",
  "description": "An audio library scan has started.",
  "params": [
    {
      "name": "sender",
      "type": "string",
      "required": true
    },
    {
      "name": "data",
      "type": "null",
      "required": true
    }
  ],
  "returns": null
}
</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:
#* ''[[#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 lang="javascript" enclose="div">
{
  "type": "notification",
  "description": "An audio item has been updated.",
  "params": [
    {
      "name": "sender",
      "type": "string",
      "required": true
    },
    {
      "name": "data",
      "type": "object",
      "required": true,
      "properties": {
        "id": {
          "$ref": "Library.Id",
          "required": true
        },
        "type": {
          "type": "string",
          "id": "Notifications.Library.Audio.Type",
          "enum": [
            "song"
          ],
          "required": true
        },
        "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
}
</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 lang="javascript" enclose="div">
{
  "type": "notification",
  "description": "Energy saving/DPMS has been activated.",
  "params": [
    {
      "name": "sender",
      "type": "string",
      "required": true
    },
    {
      "name": "data",
      "type": "null",
      "required": true
    }
  ],
  "returns": null
}
</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 lang="javascript" enclose="div">
{
  "type": "notification",
  "description": "Energy saving/DPMS has been deactivated.",
  "params": [
    {
      "name": "sender",
      "type": "string",
      "required": true
    },
    {
      "name": "data",
      "type": "null",
      "required": true
    }
  ],
  "returns": null
}
</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 lang="javascript" enclose="div">
{
  "type": "notification",
  "description": "The screensaver has been activated.",
  "params": [
    {
      "name": "sender",
      "type": "string",
      "required": true
    },
    {
      "name": "data",
      "type": "null",
      "required": true
    }
  ],
  "returns": null
}
</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 lang="javascript" enclose="div">
{
  "type": "notification",
  "description": "The screensaver has been deactivated.",
  "params": [
    {
      "name": "sender",
      "type": "string",
      "required": true
    },
    {
      "name": "data",
      "type": "object",
      "required": true,
      "properties": {
        "shuttingdown": {
          "type": "boolean",
          "required": true
        }
      }
    }
  ],
  "returns": null
}
</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 lang="javascript" enclose="div">
{
  "type": "notification",
  "description": "The user has provided the requested input.",
  "params": [
    {
      "name": "sender",
      "type": "string",
      "required": true
    },
    {
      "name": "data",
      "type": "null",
      "required": true
    }
  ],
  "returns": null
}
</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'' 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 lang="javascript" enclose="div">
{
  "type": "notification",
  "description": "The user is requested to provide some information.",
  "params": [
    {
      "name": "sender",
      "type": "string",
      "required": true
    },
    {
      "name": "data",
      "type": "object",
      "required": true,
      "properties": {
        "type": {
          "type": "string",
          "enum": [
            "keyboard",
            "time",
            "date",
            "ip",
            "password",
            "numericpassword",
            "number",
            "seconds"
          ],
          "required": true
        },
        "value": {
          "type": "string",
          "required": true
        },
        "title": {
          "type": "string"
        }
      }
    }
  ],
  "returns": null
}
</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 lang="javascript" enclose="div">
{
  "type": "notification",
  "description": "Audio- or videostream has changed. If there is no ID available extra information will be provided.",
  "params": [
    {
      "name": "sender",
      "type": "string",
      "required": true
    },
    {
      "name": "data",
      "$ref": "Player.Notifications.Data",
      "required": true
    }
  ],
  "returns": null
}
</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 lang="javascript" 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.",
  "params": [
    {
      "name": "sender",
      "type": "string",
      "required": true
    },
    {
      "name": "data",
      "$ref": "Player.Notifications.Data",
      "required": true
    }
  ],
  "returns": null
}
</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 lang="javascript" enclose="div">
{
  "type": "notification",
  "description": "Playback of a media item has been paused. If there is no ID available extra information will be provided.",
  "params": [
    {
      "name": "sender",
      "type": "string",
      "required": true
    },
    {
      "name": "data",
      "$ref": "Player.Notifications.Data",
      "required": true
    }
  ],
  "returns": null
}
</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 lang="javascript" 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.",
  "params": [
    {
      "name": "sender",
      "type": "string",
      "required": true
    },
    {
      "name": "data",
      "$ref": "Player.Notifications.Data",
      "required": true
    }
  ],
  "returns": null
}
</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.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 lang="javascript" enclose="div">
{
  "type": "notification",
  "description": "A property of the playing items has changed.",
  "params": [
    {
      "name": "sender",
      "type": "string",
      "required": true
    },
    {
      "name": "data",
      "type": "object",
      "required": true,
      "properties": {
        "property": {
          "$ref": "Player.Property.Value"
        },
        "player": {
          "$ref": "Player.Notifications.Player",
          "required": true
        }
      }
    }
  ],
  "returns": null
}
</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 lang="javascript" enclose="div">
{
  "type": "notification",
  "description": "Playback of a media item has been resumed. If there is no ID available extra information will be provided.",
  "params": [
    {
      "name": "sender",
      "type": "string",
      "required": true
    },
    {
      "name": "data",
      "$ref": "Player.Notifications.Data",
      "required": true
    }
  ],
  "returns": null
}
</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 lang="javascript" enclose="div">
{
  "type": "notification",
  "description": "The playback position has been changed. If there is no ID available extra information will be provided.",
  "params": [
    {
      "name": "sender",
      "type": "string",
      "required": true
    },
    {
      "name": "data",
      "type": "object",
      "required": true,
      "properties": {
        "item": {
          "$ref": "Notifications.Item"
        },
        "player": {
          "$ref": "Player.Notifications.Player.Seek",
          "required": true
        }
      }
    }
  ],
  "returns": null
}
</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 lang="javascript" 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.",
  "params": [
    {
      "name": "sender",
      "type": "string",
      "required": true
    },
    {
      "name": "data",
      "$ref": "Player.Notifications.Data",
      "required": true
    }
  ],
  "returns": null
}
</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:
#* ''[[#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 lang="javascript" enclose="div">
{
  "type": "notification",
  "description": "Playback of a media item has been stopped. If there is no ID available extra information will be provided.",
  "params": [
    {
      "name": "sender",
      "type": "string",
      "required": true
    },
    {
      "name": "data",
      "type": "object",
      "required": true,
      "properties": {
        "item": {
          "$ref": "Notifications.Item"
        },
        "end": {
          "type": "boolean",
          "required": true,
          "description": "Whether the player has reached the end of the playable item(s) or not"
        }
      }
    }
  ],
  "returns": null
}
</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:
#* ''[[#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 lang="javascript" enclose="div">
{
  "type": "notification",
  "description": "A playlist item has been added.",
  "params": [
    {
      "name": "sender",
      "type": "string",
      "required": true
    },
    {
      "name": "data",
      "type": "object",
      "required": true,
      "properties": {
        "playlistid": {
          "$ref": "Playlist.Id",
          "required": true
        },
        "item": {
          "$ref": "Notifications.Item"
        },
        "position": {
          "$ref": "Playlist.Position"
        }
      }
    }
  ],
  "returns": null
}
</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 lang="javascript" enclose="div">
{
  "type": "notification",
  "description": "A playlist item has been cleared.",
  "params": [
    {
      "name": "sender",
      "type": "string",
      "required": true
    },
    {
      "name": "data",
      "type": "object",
      "required": true,
      "properties": {
        "playlistid": {
          "$ref": "Playlist.Id",
          "required": true
        }
      }
    }
  ],
  "returns": null
}
</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 lang="javascript" enclose="div">
{
  "type": "notification",
  "description": "A playlist item has been removed.",
  "params": [
    {
      "name": "sender",
      "type": "string",
      "required": true
    },
    {
      "name": "data",
      "type": "object",
      "required": true,
      "properties": {
        "playlistid": {
          "$ref": "Playlist.Id",
          "required": true
        },
        "position": {
          "$ref": "Playlist.Position"
        }
      }
    }
  ],
  "returns": null
}
</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 lang="javascript" enclose="div">
{
  "type": "notification",
  "description": "The system is on low battery.",
  "params": [
    {
      "name": "sender",
      "type": "string",
      "required": true
    },
    {
      "name": "data",
      "type": "null",
      "required": true
    }
  ],
  "returns": null
}
</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 lang="javascript" enclose="div">
{
  "type": "notification",
  "description": "Kodi will be closed.",
  "params": [
    {
      "name": "sender",
      "type": "string",
      "required": true
    },
    {
      "name": "data",
      "type": "object",
      "required": true,
      "properties": {
        "exitcode": {
          "type": "integer",
          "minimum": 0,
          "required": true
        }
      }
    }
  ],
  "returns": null
}
</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 lang="javascript" enclose="div">
{
  "type": "notification",
  "description": "The system will be restarted.",
  "params": [
    {
      "name": "sender",
      "type": "string",
      "required": true
    },
    {
      "name": "data",
      "type": "null",
      "required": true
    }
  ],
  "returns": null
}
</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 lang="javascript" enclose="div">
{
  "type": "notification",
  "description": "The system will be suspended.",
  "params": [
    {
      "name": "sender",
      "type": "string",
      "required": true
    },
    {
      "name": "data",
      "type": "null",
      "required": true
    }
  ],
  "returns": null
}
</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 lang="javascript" enclose="div">
{
  "type": "notification",
  "description": "The system woke up from suspension.",
  "params": [
    {
      "name": "sender",
      "type": "string",
      "required": true
    },
    {
      "name": "data",
      "type": "null",
      "required": true
    }
  ],
  "returns": null
}
</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 lang="javascript" enclose="div">
{
  "type": "notification",
  "description": "The video library has been cleaned.",
  "params": [
    {
      "name": "sender",
      "type": "string",
      "required": true
    },
    {
      "name": "data",
      "type": "null",
      "required": true
    }
  ],
  "returns": null
}
</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 lang="javascript" enclose="div">
{
  "type": "notification",
  "description": "A video library clean operation has started.",
  "params": [
    {
      "name": "sender",
      "type": "string",
      "required": true
    },
    {
      "name": "data",
      "type": "null",
      "required": true
    }
  ],
  "returns": null
}
</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]:
#* [''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 lang="javascript" enclose="div">
{
  "type": "notification",
  "description": "A video library export has finished.",
  "params": [
    {
      "name": "sender",
      "type": "string",
      "required": true
    },
    {
      "name": "data",
      "type": "object",
      "required": false,
      "properties": {
        "file": {
          "type": "string",
          "required": false,
          "default": ""
        },
        "root": {
          "type": "string",
          "required": false,
          "default": ""
        },
        "failcount": {
          "type": "integer",
          "minimum": 0,
          "required": false,
          "default": 0
        }
      }
    }
  ],
  "returns": null
}
</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 lang="javascript" enclose="div">
{
  "type": "notification",
  "description": "The video library has been refreshed and a home screen reload might be necessary.",
  "params": [
    {
      "name": "sender",
      "type": "string",
      "required": true
    },
    {
      "name": "data",
      "type": "null",
      "required": true
    }
  ],
  "returns": null
}
</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
#* ''[[#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 lang="javascript" enclose="div">
{
  "type": "notification",
  "description": "A video item has been removed.",
  "params": [
    {
      "name": "sender",
      "type": "string",
      "required": true
    },
    {
      "name": "data",
      "type": "object",
      "required": true,
      "properties": {
        "id": {
          "$ref": "Library.Id",
          "required": true
        },
        "type": {
          "$ref": "Notifications.Library.Video.Type",
          "required": true
        },
        "transaction": {
          "$ref": "Optional.Boolean",
          "description": "True if the removal is being performed within a transaction."
        }
      }
    }
  ],
  "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 lang="javascript" 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 lang="javascript" 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 lang="javascript" enclose="div">
{
  "type": "notification",
  "description": "A video item has been updated.",
  "params": [
    {
      "name": "sender",
      "type": "string",
      "required": true
    },
    {
      "name": "data",
      "type": "object",
      "required": true,
      "properties": {
        "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
}
</syntaxhighlight>}}
 
See also
* [[JSON-RPC API]]
* [[JSON-RPC API/v4|JSON-RPC API v4 (Eden)]]
* [[JSON-RPC API/v6|JSON-RPC API v6 (Frodo - Jarvis)]]
* [[JSON-RPC API/v8|JSON-RPC API v8 (Krypton)]]
* [[JSON-RPC API/v10|JSON-RPC API v10 (Leia)]]
 
External links
* [http://jsonrpc.org/spec.html JSON-RPC 2.0 specification]
* [http://tools.ietf.org/html/draft-zyp-json-schema-03 A JSON Media Type for Describing the Structure and Meaning of JSON Documents (Draft 03)]
 
[[Category:Development]]

Latest revision as of 16:40, 19 October 2020

Ronie.jpg