Archive:JSON-RPC API/v4: Difference between revisions

From Official Kodi Wiki
Jump to navigation Jump to search
>Sam
(fixed)
mNo edit summary
 
(22 intermediate revisions by 9 users not shown)
Line 1: Line 1:
{{DISPLAYTITLE:JSON-RPC API v4 (Eden)}}{{JSON-RPC API nav}}
Version 4 is a stable version of XBMC's JSON-RPC API and is published with the release of Eden. It is a complete re-write and re-structuring of version 2 and therefore isn't backwards compatible to it. The main reason for this was the need to make this version fully compatible with all the functionality, features and requirements of the [http://jsonrpc.org/spec.html JSON-RPC 2.0 specification]. This was a main concern during early development to make it easier for third party developers and applications to interact with XBMC's JSON-RPC API by using existing JSON-RPC libraries.
Version 4 is a stable version of XBMC's JSON-RPC API and is published with the release of Eden. It is a complete re-write and re-structuring of [[JSON-RPC API/v2|version 2]] and therefore isn't backwards compatible to it. The main reason for this was the need to make this version fully compatible with all the functionality, features and requirements of the [http://jsonrpc.org/spec.html JSON-RPC 2.0 specification]. This was a main concern during early development to make it easier for third party developers and applications to interact with XBMC's JSON-RPC API by using existing JSON-RPC libraries.


An rough and incomplete list of changes compared to version 2 can be found [[Eden API Changes|here]]. A more complete and detailed list can be found in the [http://forum.xbmc.org/showthread.php?t=98551 forum].
An rough and incomplete list of changes compared to version 2 can be found [[Archive:Eden_API_changes|here]]. A more complete and detailed list can be found in the [http://forum.kodi.tv/showthread.php?t=98551 forum].


{{TOC right|limit=4}}
{{TOC right}}
== 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 4
|{{yes}}
|{{yes}}
|{{yes}}
|{{yes}}
|{{yes}}
|{{yes}}
|-
|}


=Documentation (JSON Schema)=
== Documentation (JSON Schema) ==
Starting with JSON-RPC API version 3 a new way of API documentation has been introduced. All methods and data types are described using [http://tools.ietf.org/html/draft-zyp-json-schema-03 JSON Schema]. This provides third party developers with an always complete and up-to-date documentation by calling [[#JSONRPC.Introspect|JSONRPC.Introspect]] even during periods of heavy development. Furthermore the same method and data type specification that can be used by third party developers as a documentation is used by XBMC to check and verify method parameters and their values on every JSON-RPC request and allows to provide detailed error messages in case of a bad or missing parameter.
Starting with JSON-RPC API version 3 a new way of API documentation has been introduced. All methods and data types are described using [http://tools.ietf.org/html/draft-zyp-json-schema-03 JSON Schema]. This provides third party developers with an always complete and up-to-date documentation by calling JSONRPC.Introspect even during periods of heavy development. Furthermore the same method and data type specification that can be used by third party developers as a documentation is used by XBMC to check and verify method parameters and their values on every JSON-RPC request and allows to provide detailed error messages in case of a bad or missing parameter.


===Supported features of JSON Schema===
=== Supported features of JSON Schema ===
<div style="float:left; margin-right:2em">
<div style="float:left; margin-right:2em">
{| class="wikitable" style="margin-right: 0;"
{| class="prettytable" style="margin-right: 0;"
!style="width: 10em; text-align: left;"|Schema
!style="width: 10em; text-align: left;"|Schema
!style="padding-left: 10px; padding-right: 10px;"|IETF Draft 03
!style="padding-left: 10px; padding-right: 10px;"|IETF Draft 03
Line 49: Line 67:


<div style="float:left; margin-right:2em">
<div style="float:left; margin-right:2em">
{| class="wikitable" style="margin-right: 0;"
{| class="prettytable" style="margin-right: 0;"
!style="width: 10em; text-align: left;"|Schema
!style="width: 10em; text-align: left;"|Schema


Line 89: Line 107:


<div style="float:left;">
<div style="float:left;">
{| class="wikitable" style="margin-right: 0;"
{| class="prettytable" style="margin-right: 0;"
!style="width: 10em; text-align: left;"|Schema
!style="width: 10em; text-align: left;"|Schema


Line 128: Line 146:
<div style="clear:left;"></div>
<div style="clear:left;"></div>


=Error message=
== Error message ==
If XBMC 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
If XBMC 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
{|
{|
|
|
<source lang="javascript">
<syntaxhighlight lang=json enclose="div">
{
{
   "type": "object",
   "type": "object",
Line 153: Line 171:
   }
   }
}
}
</source>
</syntaxhighlight>
|}
 
== Namespaces ==
The XBMC JSON-RPC API is split up into namespaces, which contain methods that can be called. These namespaces are:
{|
|
<pre>
JSONRPC          A variety of standard JSONRPC calls
Player          Manages all available players
Playlist        Playlist modification
Files            Shares information
AudioLibrary    Audio Library information
VideoLibrary    Video Library information
Input            Allows limited navigation within XBMC
Application      Application information and control
System          System controls and information
XBMC            Dumping ground for very Kodi specific operations
</pre>
|}
|}


=JSONRPC=
== Methods ==
A variety of standard JSONRPC calls
=== Application ===
==Methods==
==== Application.GetProperties ====
===JSONRPC.Introspect===
Retrieves the values of the given properties<br />
Enumerates all actions and descriptions
'''Permissions:'''
====Permissions====
* ReadData
ReadData
'''Parameters:'''
====Syntax====
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
<syntaxhighlight lang="javascript">
# ''[[#Application.Property.Name|Application.Property.Name]]''[] properties
{
</div>
    'jsonrpc': '2.0',
'''Returns:''' ''[[#Application.Property.Value|Application.Property.Value]]''
    'method': 'JSONRPC.Introspect',
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight lang="javascript" enclose="div">{
    'id': undefined /* integer, required */,
  "returns": {
    'params': {
    "$ref": "Application.Property.Value"
        'getdescriptions': true /* boolean */,  
  },  
        'getmetadata': false /* boolean */,
  "params": [
        'filterbytransport': true /* boolean */,  
    {
        'filter': {
      "uniqueItems": true,  
            'getreferences': true /* boolean, Whether or not to print the schema for referenced types */,  
      "items": {
            'id': undefined /* string, required, Name of a namespace, method or type */,  
        "$ref": "Application.Property.Name"
            'type': undefined /* string, required, Type of the given name */
      },  
        }
      "required": true,  
      "type": "array",  
      "name": "properties"
     }
     }
}
  ],
</syntaxhighlight>
  "description": "Retrieves the values of the given properties"
====Returns====
}</syntaxhighlight>}}
<syntaxhighlight lang="javascript">
 
{
==== Application.Quit ====
    'jsonrpc': '2.0',
Quit application<br />
    'method': 'JSONRPC.Introspect',
'''Permissions:'''
    'id': undefined /* integer, required */,
* ControlPower
    'result': { /* no additional properties allowed */
'''Parameters:''' None
       
<br />
    }
'''Returns:''' ''string''
}
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight lang="javascript" enclose="div">{
</syntaxhighlight>
  "returns": {
===JSONRPC.NotifyAll===
     "type": "string"
Notify all other connected clients
  },  
====Permissions====
  "params": [],  
ReadData
  "description": "Quit application"
====Syntax====
}</syntaxhighlight>}}
<syntaxhighlight lang="javascript">
 
{
==== Application.SetMute ====
    'jsonrpc': '2.0',
Toggle mute/unmute<br />
    'method': 'JSONRPC.NotifyAll',
'''Permissions:'''
    'id': undefined /* integer, required */,
* ControlPlayback
    'params': {
'''Parameters:'''  
        'sender': undefined /* string, required */,
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
        'message': undefined /* string, required */,
# ''mixed'' mute
        'data': null /* any */
</div>
    }
'''Returns:''' ''boolean''
}
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight lang="javascript" enclose="div">{
</syntaxhighlight>
  "returns": {
====Returns====
     "type": "boolean",  
<syntaxhighlight lang="javascript">
     "description": "Mute state"
{
  },
    'jsonrpc': '2.0',
  "params": [
    'method': 'JSONRPC.NotifyAll',
     {
    'id': undefined /* integer, required */,
      "required": true,  
    'result': undefined /* any */
      "type": [
}
         {
</syntaxhighlight>
          "type": "boolean"
===JSONRPC.Permission===
Retrieve the clients permissions
====Permissions====
ReadData
====Syntax====
<syntaxhighlight lang="javascript">
{
     'jsonrpc': '2.0',  
    'method': 'JSONRPC.Permission',  
    'id': undefined /* integer, required */
}
</syntaxhighlight>
====Returns====
<syntaxhighlight lang="javascript">
{
    'jsonrpc': '2.0',
    'method': 'JSONRPC.Permission',
    'id': undefined /* integer, required */,
    'result': {
        'controlgui': undefined /* boolean, required */,
        'controlnotify': undefined /* boolean, required */,
        'controlplayback': undefined /* boolean, required */,
        'controlpower': undefined /* boolean, required */,
        'controlsystem': undefined /* boolean, required */,
        'navigate': undefined /* boolean, required */,
        'readdata': undefined /* boolean, required */,
        'removedata': undefined /* boolean, required */,
        'updatedata': undefined /* boolean, required */,
        'writefile': undefined /* boolean, required */
    }
}
</syntaxhighlight>
===JSONRPC.Ping===
Ping responder
====Permissions====
ReadData
====Syntax====
<syntaxhighlight lang="javascript">
{
    'jsonrpc': '2.0',
    'method': 'JSONRPC.Ping',
    'id': undefined /* integer, required */
}
</syntaxhighlight>
====Returns====
<syntaxhighlight lang="javascript">
{
    'jsonrpc': '2.0',
    'method': 'JSONRPC.Ping',
    'id': undefined /* integer, required */,
    'result': undefined /* string */
}
</syntaxhighlight>
===JSONRPC.Version===
Retrieve the jsonrpc protocol version
====Permissions====
ReadData
====Syntax====
<syntaxhighlight lang="javascript">
{
    'jsonrpc': '2.0',
    'method': 'JSONRPC.Version',
    'id': undefined /* integer, required */
}
</syntaxhighlight>
====Returns====
<syntaxhighlight lang="javascript">
{
    'jsonrpc': '2.0',
     'method': 'JSONRPC.Version',  
     'id': undefined /* integer, required */,
    'result': undefined /* string */
}
</syntaxhighlight>
=Player=
Manages all available players
==Notifications==
===Player.OnPause===
Playback of a media item has been paused. If there is no ID available extra information will be provided.
====Returns====
<syntaxhighlight lang="javascript">
{
    'jsonrpc': '2.0',
    'method': 'Player.OnPause',
     'params': undefined /* string, required */ or { /* required, id: Player.Notifications.Data */
        'item': { /* An unknown item does not have any additional information. */
            'type': 'unknown' /* string, required, id: Player.Notifications.Item.Type */
        } or { /* An item known to the database has an identification. */
            'id': -1 /* integer, required, id: Library.Id, minimum: 1 */,  
            'type': 'unknown' /* string, required, id: Player.Notifications.Item.Type */
         } or { /* A movie item has a title and may have a release year. */
            'title': undefined /* string, required */,
            'type': 'unknown' /* string, required, id: Player.Notifications.Item.Type */,
            'year': 0 /* integer */
        } or { /* A tv episode has a title and may have an episode number, season number and the title of the show it belongs to. */
            'episode': 0 /* integer */,
            'season': 0 /* integer */,
            'showtitle': '' /* string */,
            'title': undefined /* string, required */,
            'type': 'unknown' /* string, required, id: Player.Notifications.Item.Type */
        } or { /* A music video has a title and may have an album and an artist. */
            'album': '' /* string */,
            'artist': '' /* string */,
            'title': undefined /* string, required */,
            'type': 'unknown' /* string, required, id: Player.Notifications.Item.Type */
        } or { /* A song has a title and may have an album, an artist and a track number. */
            'album': '' /* string */,
            'artist': '' /* string */,
            'title': undefined /* string, required */,
            'track': 0 /* integer */,
            'type': 'unknown' /* string, required, id: Player.Notifications.Item.Type */
         },  
         },  
         'player': { /* required, id: Player.Notifications.Player */
         {
             'playerid': -1 /* integer, required, id: Player.Id, minimum: 0, maximum: 2 */,  
          "enums": [
            'speed': 0 /* integer */
             "toggle"
          ],  
          "type": "string"
         }
         }
      ],
      "name": "mute"
     }
     }
}
  ],
</syntaxhighlight>
  "description": "Toggle mute/unmute"
===Player.OnPlay===
}</syntaxhighlight>}}
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.
 
====Returns====
==== Application.SetVolume ====
<syntaxhighlight lang="javascript">
Set the current volume<br />
{
'''Permissions:'''
    'jsonrpc': '2.0',
* ControlPlayback
    'method': 'Player.OnPlay',
'''Parameters:'''  
    'params': undefined /* string, required */ or { /* required, id: Player.Notifications.Data */
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
        'item': { /* An unknown item does not have any additional information. */
# ''integer'' volume
            'type': 'unknown' /* string, required, id: Player.Notifications.Item.Type */
</div>
        } or { /* An item known to the database has an identification. */
'''Returns:''' ''integer''
            'id': -1 /* integer, required, id: Library.Id, minimum: 1 */,
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight lang="javascript" enclose="div">{
            'type': 'unknown' /* string, required, id: Player.Notifications.Item.Type */
  "returns": {
        } or { /* A movie item has a title and may have a release year. */
    "minimum": 0,  
            'title': undefined /* string, required */,
    "type": "integer"
            'type': 'unknown' /* string, required, id: Player.Notifications.Item.Type */,
  },  
            'year': 0 /* integer */
  "params": [
        } or { /* A tv episode has a title and may have an episode number, season number and the title of the show it belongs to. */
    {
            'episode': 0 /* integer */,
      "required": true,  
            'season': 0 /* integer */,
      "minimum": 0,  
            'showtitle': '' /* string */,
      "type": "integer",  
            'title': undefined /* string, required */,
      "maximum": 100,  
            'type': 'unknown' /* string, required, id: Player.Notifications.Item.Type */
      "name": "volume"
        } or { /* A music video has a title and may have an album and an artist. */
            'album': '' /* string */,
            'artist': '' /* string */,  
            'title': undefined /* string, required */,
            'type': 'unknown' /* string, required, id: Player.Notifications.Item.Type */
        } or { /* A song has a title and may have an album, an artist and a track number. */
            'album': '' /* string */,
            'artist': '' /* string */,
            'title': undefined /* string, required */,  
            'track': 0 /* integer */,  
            'type': 'unknown' /* string, required, id: Player.Notifications.Item.Type */
        },
        'player': { /* required, id: Player.Notifications.Player */
            'playerid': -1 /* integer, required, id: Player.Id, minimum: 0, maximum: 2 */,  
            'speed': 0 /* integer */
        }
     }
     }
}
  ],
</syntaxhighlight>
  "description": "Set the current volume"
===Player.OnSeek===
}</syntaxhighlight>}}
The playback position has been changed. If there is no ID available extra information will be provided.
 
====Returns====
=== AudioLibrary ===
<syntaxhighlight lang="javascript">
==== AudioLibrary.Clean ====
{
Cleans the audio library from non-existent items<br />
    'jsonrpc': '2.0',
'''Permissions:'''
    'method': 'Player.OnSeek',
* RemoveData
    'params': undefined /* string, required */ or { /* required */
'''Parameters:''' None
        'item': { /* An unknown item does not have any additional information. */
<br />
            'type': 'unknown' /* string, required, id: Player.Notifications.Item.Type */
'''Returns:''' ''string''
        } or { /* An item known to the database has an identification. */
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight lang="javascript" enclose="div">{
            'id': -1 /* integer, required, id: Library.Id, minimum: 1 */,
  "returns": {
            'type': 'unknown' /* string, required, id: Player.Notifications.Item.Type */
    "type": "string"
        } or { /* A movie item has a title and may have a release year. */
  },  
            'title': undefined /* string, required */,
  "params": [],  
            'type': 'unknown' /* string, required, id: Player.Notifications.Item.Type */,
  "description": "Cleans the audio library from non-existent items"
            'year': 0 /* integer */
}</syntaxhighlight>}}
        } or { /* A tv episode has a title and may have an episode number, season number and the title of the show it belongs to. */
 
            'episode': 0 /* integer */,
==== AudioLibrary.Export ====
            'season': 0 /* integer */,
Exports all items from the audio library<br />
            'showtitle': '' /* string */,
'''Permissions:'''
            'title': undefined /* string, required */,
* WriteFile
            'type': 'unknown' /* string, required, id: Player.Notifications.Item.Type */
'''Parameters:'''  
        } or { /* A music video has a title and may have an album and an artist. */
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
            'album': '' /* string */,
# [ ''mixed'' options ]
            'artist': '' /* string */,
</div>
            'title': undefined /* string, required */,
'''Returns:''' ''string''
            'type': 'unknown' /* string, required, id: Player.Notifications.Item.Type */
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight lang="javascript" enclose="div">{
         } or { /* A song has a title and may have an album, an artist and a track number. */
  "returns": {
            'album': '' /* string */,  
    "type": "string"
             'artist': '' /* string */,
  },  
            'title': undefined /* string, required */,
  "params": [
            'track': 0 /* integer */,  
    {
            'type': 'unknown' /* string, required, id: Player.Notifications.Item.Type */
      "type": [
         {
          "additionalProperties": false,  
          "type": "object",  
          "properties": {
             "path": {
              "minLength": 1,  
              "required": true,  
              "type": "string",  
              "description": "Path to the directory to where the data should be exported"
            }
          }
         },  
         },  
         'player': { /* required, id: Player.Notifications.Player.Seek */
         {
            'seekoffset': { /* id: Global.Time, no additional properties allowed */
          "additionalProperties": false,  
                'hours': undefined /* integer, required, minimum: 0, maximum: 23 */,
          "type": "object",  
                'milliseconds': undefined /* integer, required, minimum: 0, maximum: 999 */,  
          "properties": {
                'minutes': undefined /* integer, required, minimum: 0, maximum: 59 */,  
            "images": {
                'seconds': undefined /* integer, required, minimum: 0, maximum: 59 */
              "default": false,  
              "type": "boolean",  
              "description": "Whether to export thumbnails and fanart images"
             },  
             },  
             'time': { /* id: Global.Time, no additional properties allowed */
             "overwrite": {
                'hours': undefined /* integer, required, minimum: 0, maximum: 23 */,
              "default": false,  
                'milliseconds': undefined /* integer, required, minimum: 0, maximum: 999 */,  
              "type": "boolean",  
                'minutes': undefined /* integer, required, minimum: 0, maximum: 59 */,  
              "description": "Whether to overwrite existing exported files"
                'seconds': undefined /* integer, required, minimum: 0, maximum: 59 */
             }
             },
          }
            'playerid': -1 /* integer, required, id: Player.Id, minimum: 0, maximum: 2 */,
            'speed': 0 /* integer */
         }
         }
      ],
      "name": "options"
     }
     }
}
  ],
</syntaxhighlight>
  "description": "Exports all items from the audio library"
===Player.OnSpeedChanged===
}</syntaxhighlight>}}
Speed of the playback of a media item has been changed. If there is no ID available extra information will be provided.
 
====Returns====
==== AudioLibrary.GetAlbumDetails ====
<syntaxhighlight lang="javascript">
Retrieve details about a specific album<br />
{
'''Permissions:'''
    'jsonrpc': '2.0',
* ReadData
    'method': 'Player.OnSpeedChanged',
'''Parameters:'''
    'params': undefined /* string, required */ or { /* required, id: Player.Notifications.Data */
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
        'item': { /* An unknown item does not have any additional information. */
# ''[[#Library.Id|Library.Id]]'' albumid
            'type': 'unknown' /* string, required, id: Player.Notifications.Item.Type */
# [ ''[[#Audio.Fields.Album|Audio.Fields.Album]]'' properties ]
        } or { /* An item known to the database has an identification. */
</div>
            'id': -1 /* integer, required, id: Library.Id, minimum: 1 */,
'''Returns:'''
            'type': 'unknown' /* string, required, id: Player.Notifications.Item.Type */
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
        } or { /* A movie item has a title and may have a release year. */
'''Type:''' ''object''<br />
            'title': undefined /* string, required */,  
'''Properties:'''
            'type': 'unknown' /* string, required, id: Player.Notifications.Item.Type */,  
* [ ''[[#Audio.Details.Album|Audio.Details.Album]]'' albumdetails ]
            'year': 0 /* integer */
 
        } or { /* A tv episode has a title and may have an episode number, season number and the title of the show it belongs to. */
</div>
            'episode': 0 /* integer */,
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight lang="javascript" enclose="div">{
            'season': 0 /* integer */,
  "returns": {
            'showtitle': '' /* string */,
    "type": "object",  
            'title': undefined /* string, required */,
    "properties": {
            'type': 'unknown' /* string, required, id: Player.Notifications.Item.Type */
      "albumdetails": {
        } or { /* A music video has a title and may have an album and an artist. */
        "$ref": "Audio.Details.Album"
            'album': '' /* string */,
      }
            'artist': '' /* string */,
    }
            'title': undefined /* string, required */,
  },
            'type': 'unknown' /* string, required, id: Player.Notifications.Item.Type */
  "params": [
        } or { /* A song has a title and may have an album, an artist and a track number. */
    {
            'album': '' /* string */,
      "required": true,  
            'artist': '' /* string */,
      "name": "albumid",  
            'title': undefined /* string, required */,
      "$ref": "Library.Id"
            'track': 0 /* integer */,
    },  
            'type': 'unknown' /* string, required, id: Player.Notifications.Item.Type */
    {
      "name": "properties",  
      "$ref": "Audio.Fields.Album"
    }
  ],  
  "description": "Retrieve details about a specific album"
}</syntaxhighlight>}}
 
==== AudioLibrary.GetAlbums ====
Retrieve all albums from specified 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">
# [ ''[[#Library.Id|Library.Id]]'' artistid = -1 ]
# [ ''[[#Library.Id|Library.Id]]'' genreid = -1 ]
# [ ''[[#Audio.Fields.Album|Audio.Fields.Album]]'' properties ]
# [ ''[[#List.Limits|List.Limits]]'' limits ]
# [ ''[[#List.Sort|List.Sort]]'' sort ]
</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]]''[] albums ]
* ''[[#List.LimitsReturned|List.LimitsReturned]]'' limits
 
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight lang="javascript" enclose="div">{
  "returns": {
    "type": "object",  
    "properties": {
      "albums": {
        "items": {
          "$ref": "Audio.Details.Album"
         },  
         },  
         'player': { /* required, id: Player.Notifications.Player */
         "type": "array"
            'playerid': -1 /* integer, required, id: Player.Id, minimum: 0, maximum: 2 */,  
      },
            'speed': 0 /* integer */
      "limits": {
        }
        "required": true,  
        "$ref": "List.LimitsReturned"
      }
    }
  },
  "params": [
    {
      "default": -1,
      "name": "artistid",
      "$ref": "Library.Id"
    },
    {
      "default": -1,  
      "name": "genreid",  
      "$ref": "Library.Id"
    },  
    {
      "name": "properties",  
      "$ref": "Audio.Fields.Album"
    },  
    {
      "name": "limits",
      "$ref": "List.Limits"
    },
    {
      "name": "sort",
      "$ref": "List.Sort"
     }
     }
}
  ],
</syntaxhighlight>
  "description": "Retrieve all albums from specified artist or genre"
===Player.OnStop===
}</syntaxhighlight>}}
Playback of a media item has been stopped. If there is no ID available extra information will be provided.
 
====Returns====
==== AudioLibrary.GetArtistDetails ====
<syntaxhighlight lang="javascript">
Retrieve details about a specific artist<br />
{
'''Permissions:'''
    'jsonrpc': '2.0',
* ReadData
    'method': 'Player.OnStop',
'''Parameters:'''  
    'params': undefined /* string, required */ or { /* required */
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
        'item': { /* An unknown item does not have any additional information. */
# ''[[#Library.Id|Library.Id]]'' artistid
            'type': 'unknown' /* string, required, id: Player.Notifications.Item.Type */
# [ ''[[#Audio.Fields.Artist|Audio.Fields.Artist]]'' properties ]
        } or { /* An item known to the database has an identification. */
</div>
            'id': -1 /* integer, required, id: Library.Id, minimum: 1 */,
'''Returns:'''  
            'type': 'unknown' /* string, required, id: Player.Notifications.Item.Type */
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
        } or { /* A movie item has a title and may have a release year. */
'''Type:''' ''object''<br />
            'title': undefined /* string, required */,
'''Properties:'''
            'type': 'unknown' /* string, required, id: Player.Notifications.Item.Type */,
* [ ''[[#Audio.Details.Artist|Audio.Details.Artist]]'' artistdetails ]
            'year': 0 /* integer */
 
        } or { /* A tv episode has a title and may have an episode number, season number and the title of the show it belongs to. */
</div>
            'episode': 0 /* integer */,
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight lang="javascript" enclose="div">{
            'season': 0 /* integer */,
  "returns": {
            'showtitle': '' /* string */,
    "type": "object",  
            'title': undefined /* string, required */,
    "properties": {
            'type': 'unknown' /* string, required, id: Player.Notifications.Item.Type */
      "artistdetails": {
        } or { /* A music video has a title and may have an album and an artist. */
        "$ref": "Audio.Details.Artist"
            'album': '' /* string */,
      }
            'artist': '' /* string */,
            'title': undefined /* string, required */,
            'type': 'unknown' /* string, required, id: Player.Notifications.Item.Type */
        } or { /* A song has a title and may have an album, an artist and a track number. */
            'album': '' /* string */,
            'artist': '' /* string */,  
            'title': undefined /* string, required */,
            'track': 0 /* integer */,
            'type': 'unknown' /* string, required, id: Player.Notifications.Item.Type */
        }
     }
     }
}
  },  
</syntaxhighlight>
  "params": [
==Methods==
     {
===Player.GetActivePlayers===
      "required": true,  
Returns all active players
      "name": "artistid",  
====Permissions====
      "$ref": "Library.Id"
ReadData
     },  
====Syntax====
     {
<syntaxhighlight lang="javascript">
      "name": "properties",  
{
      "$ref": "Audio.Fields.Artist"
    'jsonrpc': '2.0',  
    'method': 'Player.GetActivePlayers',
    'id': undefined /* integer, required */
}
</syntaxhighlight>
====Returns====
<syntaxhighlight lang="javascript">
{
    'jsonrpc': '2.0',
    'method': 'Player.GetActivePlayers',
    'id': undefined /* integer, required */,
     'result': [ /* array, all items must be unique */
        {
            'playerid': -1 /* integer, required, id: Player.Id, minimum: 0, maximum: 2 */,  
            'type': 'video' /* string, required, id: Player.Type */
        }
    ]
}
</syntaxhighlight>
===Player.GetItem===
Retrieves the currently played item
====Permissions====
ReadData
====Syntax====
<syntaxhighlight lang="javascript">
{
    'jsonrpc': '2.0',
     'method': 'Player.GetItem',
    'id': undefined /* integer, required */,  
     'params': {
        'playerid': -1 /* integer, required, id: Player.Id, minimum: 0, maximum: 2 */,  
        'properties': [ /* id: List.Fields.All */
            undefined /* string */
        ]
     }
     }
}
  ],
</syntaxhighlight>
  "description": "Retrieve details about a specific artist"
====Returns====
}</syntaxhighlight>}}
<syntaxhighlight lang="javascript">
 
{
==== AudioLibrary.GetArtists ====
    'jsonrpc': '2.0',
Retrieve all artists<br />
    'method': 'Player.GetItem',
'''Permissions:'''
    'id': undefined /* integer, required */,
* ReadData
    'result': {
'''Parameters:'''  
        'item': { /* required, id: List.Item.All */
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
            'album': '' /* string */,
# [ ''[[#Optional.Boolean|Optional.Boolean]]'' albumartistsonly = null ]
            'albumartist': '' /* string */,
# [ ''[[#Library.Id|Library.Id]]'' genreid = -1 ]
            'albumid': -1 /* integer, id: Library.Id, minimum: 1 */,
# [ ''[[#Audio.Fields.Artist|Audio.Fields.Artist]]'' properties ]
            'artistid': -1 /* integer, id: Library.Id, minimum: 1 */,
# [ ''[[#List.Limits|List.Limits]]'' limits ]
            'cast': [ /* array, id: Video.Cast */
# [ ''[[#List.Sort|List.Sort]]'' sort ]
                { /* no additional properties allowed */
</div>
                    'name': undefined /* string, required */,
'''Returns:'''  
                    'role': undefined /* string, required */,
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
                    'thumbnail': '' /* string */
'''Type:''' ''object''<br />
                }
'''Properties:'''
            ],
* ''[[#List.LimitsReturned|List.LimitsReturned]]'' limits
            'comment': '' /* string */,
* [ ''[[#Audio.Details.Artist|Audio.Details.Artist]]''[] artists ]
            'country': '' /* string */,
 
            'duration': 0 /* integer */,
</div>
            'episode': 0 /* integer */,
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight lang="javascript" enclose="div">{
            'firstaired': '' /* string */,
  "returns": {
            'id': -1 /* integer, id: Library.Id, minimum: 1 */,
    "type": "object",  
            'imdbnumber': '' /* string */,
    "properties": {
            'lyrics': '' /* string */,
      "limits": {
            'mpaa': '' /* string */,
        "required": true,  
            'musicbrainzartistid': '' /* string */,
        "$ref": "List.LimitsReturned"
            'musicbrainztrackid': '' /* string */,
      },  
            'originaltitle': '' /* string */,
      "artists": {
            'plotoutline': '' /* string */,
        "items": {
            'premiered': '' /* string */,
          "$ref": "Audio.Details.Artist"
            'productioncode': '' /* string */,
        },  
            'season': 0 /* integer */,
        "type": "array"
            'set': [ /* array, id: Array.String */
      }
                undefined /* string, minimum length: 1 */
            ],
            'setid': [ /* array, id: Array.Integer */
                undefined /* integer */
            ],
            'showlink': '' /* string */,
            'showtitle': '' /* string */,
            'studio': '' /* string */,
            'tagline': '' /* string */,
            'top250': 0 /* integer */,
            'track': 0 /* integer */,
            'trailer': '' /* string */,
            'tvshowid': -1 /* integer, id: Library.Id, minimum: 1 */,
            'type': 'unknown' /* string */,
            'votes': '' /* string */,
            'watchedepisodes': 0 /* integer */,
            'writer': '' /* string */,
            'director': '' /* string */,
            'resume': { /* id: Video.Resume, no additional properties allowed */
                'position': 0 /* number, minimum: 0 */,
                'total': 0 /* number, minimum: 0 */
            },
            'runtime': '' /* string */,
            'streamdetails': { /* id: Video.Streams, no additional properties allowed */
                'audio': [ /* array, minimum items: 1 */
                    { /* no additional properties allowed */
                        'channels': 0 /* integer */,
                        'codec': '' /* string */,
                        'language': '' /* string */
                    }
                ],
                'subtitle': [ /* array, minimum items: 1 */
                    { /* no additional properties allowed */
                        'language': '' /* string */
                    }
                ],
                'video': [ /* array, minimum items: 1 */
                    { /* no additional properties allowed */
                        'aspect': 0 /* number */,
                        'codec': '' /* string */,
                        'duration': 0 /* integer */,
                        'height': 0 /* integer */,
                        'width': 0 /* integer */
                    }
                ]
            },
            'dateadded': '' /* string */,
            'file': '' /* string */,
            'lastplayed': '' /* string */,
            'plot': '' /* string */,
            'title': '' /* string */,  
            'playcount': 0 /* integer */,
            'fanart': '' /* string */,
            'thumbnail': '' /* string */,  
            'label': undefined /* string, required */,
            'artist': '' /* string */,  
            'musicbrainzalbumartistid': '' /* string */,
            'musicbrainzalbumid': '' /* string */,
            'rating': 0 /* integer */,
            'year': 0 /* integer */,  
            'genre': '' /* string */
        }
     }
     }
}
  },
</syntaxhighlight>
  "params": [
===Player.GetProperties===
    {
Retrieves the values of the given properties
      "default": null,
====Permissions====
      "description": "Whether or not to include artists only appearing in compilations. If the parameter is not passed or is passed as null the GUI setting will be used",
ReadData
      "name": "albumartistsonly",  
====Syntax====
      "$ref": "Optional.Boolean"
<syntaxhighlight lang="javascript">
     },  
{
     {
    'jsonrpc': '2.0',  
      "default": -1,  
    'method': 'Player.GetProperties',
      "name": "genreid",  
     'id': undefined /* integer, required */,  
      "$ref": "Library.Id"
     'params': {
    },  
        'playerid': -1 /* integer, required, id: Player.Id, minimum: 0, maximum: 2 */,  
    {
        'properties': [ /* array, required, all items must be unique */
      "name": "properties",  
            'type' /* string, id: Player.Property.Name */
      "$ref": "Audio.Fields.Artist"
        ]
    },  
    {
      "name": "limits",  
      "$ref": "List.Limits"
    },  
    {
      "name": "sort",  
      "$ref": "List.Sort"
     }
     }
}
  ],
</syntaxhighlight>
  "description": "Retrieve all artists"
====Returns====
}</syntaxhighlight>}}
<syntaxhighlight lang="javascript">
 
{
==== AudioLibrary.GetGenres ====
    'jsonrpc': '2.0',
Retrieve all genres<br />
    'method': 'Player.GetProperties',
'''Permissions:'''
    'id': undefined /* integer, required */,
* ReadData
    'result': { /* id: Player.Property.Value */
'''Parameters:'''
        'audiostreams': [ /* array */
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
            { /* id: Player.Audio.Stream */
# [ ''[[#Library.Fields.Genre|Library.Fields.Genre]]'' properties ]
                'index': undefined /* integer, required, minimum: 0 */,
# [ ''[[#List.Limits|List.Limits]]'' limits ]
                'language': undefined /* string, required */,
# [ ''[[#List.Sort|List.Sort]]'' sort ]
                'name': undefined /* string, required */
</div>
            }
'''Returns:'''
        ],
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
        'canchangespeed': false /* boolean */,
'''Type:''' ''object''<br />
        'canmove': false /* boolean */,
'''Properties:'''
        'canrepeat': false /* boolean */,
* ''[[#Library.Details.Genre|Library.Details.Genre]]''[] genres
        'canrotate': false /* boolean */,
* ''[[#List.LimitsReturned|List.LimitsReturned]]'' limits
        'canseek': false /* boolean */,
 
        'canshuffle': false /* boolean */,
</div>
        'canzoom': false /* boolean */,
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight lang="javascript" enclose="div">{
        'currentaudiostream': { /* id: Player.Audio.Stream.Extended */
  "returns": {
            'bitrate': undefined /* integer, required */,
    "type": "object",  
            'channels': undefined /* integer, required */,
    "properties": {
            'codec': undefined /* string, required */,  
      "genres": {
            'index': undefined /* integer, required, minimum: 0 */,
        "items": {
            'language': undefined /* string, required */,
          "$ref": "Library.Details.Genre"
            'name': undefined /* string, required */
         },  
         },  
         'currentsubtitle': { /* id: Player.Subtitle */
         "required": true,
            'index': undefined /* integer, required, minimum: 0 */,
        "type": "array"
            'language': undefined /* string, required */,
      },
            'name': undefined /* string, required */
      "limits": {
        "required": true,
        "$ref": "List.LimitsReturned"
      }
    }
  },
  "params": [
    {
      "name": "properties",
      "$ref": "Library.Fields.Genre"
    },
    {
      "name": "limits",
      "$ref": "List.Limits"
    },
    {
      "name": "sort",
      "$ref": "List.Sort"
    }
  ],
  "description": "Retrieve all genres"
}</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 ]
# [ ''[[#List.Limits|List.Limits]]'' limits ]
# [ ''[[#List.Sort|List.Sort]]'' sort ]
</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]]''[] albums ]
* ''[[#List.LimitsReturned|List.LimitsReturned]]'' limits
 
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight lang="javascript" enclose="div">{
  "returns": {
    "type": "object",
    "properties": {
      "albums": {
        "items": {
          "$ref": "Audio.Details.Album"
         },  
         },  
         'partymode': false /* boolean */,  
         "type": "array"
         'percentage': 0 /* number, id: Player.Position.Percentage, minimum: 0, maximum: 100 */,  
      },  
        'playlistid': -1 /* integer, id: Playlist.Id, minimum: 0, maximum: 2 */,  
      "limits": {
        'position': -1 /* integer, id: Playlist.Position, minimum: 0 */,
         "required": true,  
        'repeat': 'off' /* string, id: Player.Repeat */,
        "$ref": "List.LimitsReturned"
        'shuffled': false /* boolean */,
      }
        'speed': 0 /* integer */,
    }
        'subtitleenabled': false /* boolean */,
  },  
        'subtitles': [ /* array */
  "params": [
            { /* id: Player.Subtitle */
    {
                'index': undefined /* integer, required, minimum: 0 */,
      "name": "properties",  
                'language': undefined /* string, required */,
      "$ref": "Audio.Fields.Album"
                'name': undefined /* string, required */
    },  
            }
    {
        ],
      "name": "limits",  
        'time': { /* id: Global.Time, no additional properties allowed */
      "$ref": "List.Limits"
            'hours': undefined /* integer, required, minimum: 0, maximum: 23 */,
    },  
            'milliseconds': undefined /* integer, required, minimum: 0, maximum: 999 */,
    {
            'minutes': undefined /* integer, required, minimum: 0, maximum: 59 */,  
      "name": "sort",  
            'seconds': undefined /* integer, required, minimum: 0, maximum: 59 */
      "$ref": "List.Sort"
    }
  ],  
  "description": "Retrieve recently added albums"
}</syntaxhighlight>}}
 
==== AudioLibrary.GetRecentlyAddedSongs ====
Retrieve recently added songs<br />
'''Permissions:'''
* ReadData
'''Parameters:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
# [ ''[[#List.Amount|List.Amount]]'' albumlimit = -1 ]
# [ ''[[#Audio.Fields.Song|Audio.Fields.Song]]'' properties ]
# [ ''[[#List.Limits|List.Limits]]'' limits ]
# [ ''[[#List.Sort|List.Sort]]'' sort ]
</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
* [ ''[[#Audio.Details.Song|Audio.Details.Song]]''[] songs ]
 
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight lang="javascript" enclose="div">{
  "returns": {
    "type": "object",  
    "properties": {
      "limits": {
        "required": true,  
        "$ref": "List.LimitsReturned"
      },  
      "songs": {
        "items": {
          "$ref": "Audio.Details.Song"
         },  
         },  
         'totaltime': { /* id: Global.Time, no additional properties allowed */
         "type": "array"
            'hours': undefined /* integer, required, minimum: 0, maximum: 23 */,  
      }
            'milliseconds': undefined /* integer, required, minimum: 0, maximum: 999 */,  
    }
            'minutes': undefined /* integer, required, minimum: 0, maximum: 59 */,
  },
            'seconds': undefined /* integer, required, minimum: 0, maximum: 59 */
  "params": [
    {
      "default": -1,
      "description": "The amount of recently added albums from which to return the songs",
      "name": "albumlimit",
      "$ref": "List.Amount"
    },
    {
      "name": "properties",
      "$ref": "Audio.Fields.Song"
    },
    {
      "name": "limits",
      "$ref": "List.Limits"
    },
    {
      "name": "sort",
      "$ref": "List.Sort"
    }
  ],
  "description": "Retrieve recently added songs"
}</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
# [ ''[[#Audio.Fields.Song|Audio.Fields.Song]]'' properties ]
</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 ]
 
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight lang="javascript" enclose="div">{
  "returns": {
    "type": "object",  
    "properties": {
      "songdetails": {
        "$ref": "Audio.Details.Song"
      }
    }
  },
  "params": [
    {
      "required": true,  
      "name": "songid",  
      "$ref": "Library.Id"
    },  
    {
      "name": "properties",  
      "$ref": "Audio.Fields.Song"
    }
  ],  
  "description": "Retrieve details about a specific 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">
# [ ''[[#Library.Id|Library.Id]]'' artistid = -1 ]
# [ ''[[#Library.Id|Library.Id]]'' albumid = -1 ]
# [ ''[[#Library.Id|Library.Id]]'' genreid = -1 ]
# [ ''[[#Audio.Fields.Song|Audio.Fields.Song]]'' properties ]
# [ ''[[#List.Limits|List.Limits]]'' limits ]
# [ ''[[#List.Sort|List.Sort]]'' sort ]
</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
* [ ''[[#Audio.Details.Song|Audio.Details.Song]]''[] songs ]
 
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight lang="javascript" enclose="div">{
  "returns": {
    "type": "object",  
    "properties": {
      "limits": {
        "required": true,  
        "$ref": "List.LimitsReturned"
      },  
      "songs": {
        "items": {
          "$ref": "Audio.Details.Song"
         },  
         },  
         'type': 'video' /* string, id: Player.Type */
         "type": "array"
      }
     }
     }
}
  },
</syntaxhighlight>
  "params": [
===Player.GoNext===
    {
Go to next item on the playlist
      "default": -1,
====Permissions====
      "name": "artistid",
ControlPlayback
      "$ref": "Library.Id"
====Syntax====
    },
<syntaxhighlight lang="javascript">
    {
{
      "default": -1,
    'jsonrpc': '2.0',  
      "name": "albumid",
    'method': 'Player.GoNext',  
      "$ref": "Library.Id"
     'id': undefined /* integer, required */,  
    },
     'params': {
    {
        'playerid': -1 /* integer, required, id: Player.Id, minimum: 0, maximum: 2 */
      "default": -1,
      "name": "genreid",  
      "$ref": "Library.Id"
    },  
     {
      "name": "properties",  
      "$ref": "Audio.Fields.Song"
    },  
     {
      "name": "limits",  
      "$ref": "List.Limits"
    },  
    {
      "name": "sort",  
      "$ref": "List.Sort"
     }
     }
}
  ],
</syntaxhighlight>
  "description": "Retrieve all songs from specified album, artist or genre"
====Returns====
}</syntaxhighlight>}}
<syntaxhighlight lang="javascript">
 
{
==== AudioLibrary.Scan ====
    'jsonrpc': '2.0',
Scans the audio sources for new library items<br />
    'method': 'Player.GoNext',
'''Permissions:'''
    'id': undefined /* integer, required */,
* UpdateData
     'result': undefined /* string */
'''Parameters:''' None
}
<br />
</syntaxhighlight>
'''Returns:''' ''string''
===Player.GoPrevious===
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight lang="javascript" enclose="div">{
Go to previous item on the playlist
  "returns": {
====Permissions====
     "type": "string"
ControlPlayback
  },
====Syntax====
  "params": [],
<syntaxhighlight lang="javascript">
  "description": "Scans the audio sources for new library items"
{
}</syntaxhighlight>}}
    'jsonrpc': '2.0',
 
    'method': 'Player.GoPrevious',
=== Files ===
    'id': undefined /* integer, required */,  
==== Files.Download ====
     'params': {
Provides a way to download a given file (e.g. providing an URL to the real file location)<br />
         'playerid': -1 /* integer, required, id: Player.Id, minimum: 0, maximum: 2 */
'''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
</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'' path
 
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight lang="javascript" enclose="div">{
  "returns": {
    "type": "object",  
     "properties": {
      "path": {
         "required": true,  
        "type": "string"
      }
     }
     }
}
  },
</syntaxhighlight>
  "params": [
====Returns====
     {
<syntaxhighlight lang="javascript">
      "required": true,  
{
      "type": "string",
    'jsonrpc': '2.0',
      "name": "path"
     'method': 'Player.GoPrevious',
    'id': undefined /* integer, required */,  
    'result': undefined /* string */
}
</syntaxhighlight>
===Player.GoTo===
Go to item at the given position in the playlist
====Permissions====
ControlPlayback
====Syntax====
<syntaxhighlight lang="javascript">
{
    'jsonrpc': '2.0',
    'method': 'Player.GoTo',
    'id': undefined /* integer, required */,
    'params': {
        'playerid': -1 /* integer, required, id: Player.Id, minimum: 0, maximum: 2 */,
        'position': -1 /* integer, required, id: Playlist.Position, minimum: 0 */
     }
     }
}
  ],
</syntaxhighlight>
  "description": "Provides a way to download a given file (e.g. providing an URL to the real file location)"
====Returns====
}</syntaxhighlight>}}
<syntaxhighlight lang="javascript">
 
{
==== Files.GetDirectory ====
    'jsonrpc': '2.0',
Get the directories and files in the given directory<br />
    'method': 'Player.GoTo',
'''Permissions:'''
    'id': undefined /* integer, required */,
* ReadData
    'result': undefined /* string */
'''Parameters:'''
}
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
</syntaxhighlight>
# ''string'' directory
===Player.MoveDown===
# [ ''[[#Files.Media|Files.Media]]'' media = "files" ]
If picture is zoomed move viewport down
# [ ''[[#List.Fields.All|List.Fields.All]]'' properties ]
====Permissions====
# [ ''[[#List.Sort|List.Sort]]'' sort ]
ControlPlayback
</div>
====Syntax====
'''Returns:'''
<syntaxhighlight lang="javascript">
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
{
'''Type:''' ''object''<br />
     'jsonrpc': '2.0',  
'''Properties:'''
     'method': 'Player.MoveDown',  
* ''[[#List.Item.File|List.Item.File]]''[] files
    'id': undefined /* integer, required */,  
* ''[[#List.LimitsReturned|List.LimitsReturned]]'' limits
    'params': {
 
         'playerid': -1 /* integer, required, id: Player.Id, minimum: 0, maximum: 2 */
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight lang="javascript" enclose="div">{
  "returns": {
     "type": "object",  
     "properties": {
      "files": {
        "items": {
          "$ref": "List.Item.File"
        },  
        "required": true,  
        "type": "array"
      },  
      "limits": {
         "required": true,  
        "$ref": "List.LimitsReturned"
      }
     }
     }
}
  },
</syntaxhighlight>
  "params": [
====Returns====
    {
<syntaxhighlight lang="javascript">
      "required": true,  
{
      "type": "string",  
    'jsonrpc': '2.0',  
      "name": "directory"
    'method': 'Player.MoveDown',  
     },  
     'id': undefined /* integer, required */,  
     {
     'result': undefined /* string */
      "default": "files",
}
      "name": "media",
</syntaxhighlight>
      "$ref": "Files.Media"
===Player.MoveLeft===
    },
If picture is zoomed move viewport left otherwise skip previous
    {
====Permissions====
      "name": "properties",  
ControlPlayback
      "$ref": "List.Fields.All"
====Syntax====
     },  
<syntaxhighlight lang="javascript">
     {
{
      "name": "sort",  
    'jsonrpc': '2.0',  
      "$ref": "List.Sort"
    'method': 'Player.MoveLeft',
     'id': undefined /* integer, required */,  
     'params': {
        'playerid': -1 /* integer, required, id: Player.Id, minimum: 0, maximum: 2 */
     }
     }
}
  ],
</syntaxhighlight>
  "description": "Get the directories and files in the given directory"
====Returns====
}</syntaxhighlight>}}
<syntaxhighlight lang="javascript">
 
{
==== Files.GetSources ====
    'jsonrpc': '2.0',
Get the sources of the media windows<br />
    'method': 'Player.MoveLeft',
'''Permissions:'''
    'id': undefined /* integer, required */,
* ReadData
    'result': undefined /* string */
'''Parameters:'''
}
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
</syntaxhighlight>
# ''[[#Files.Media|Files.Media]]'' media
===Player.MoveRight===
# [ ''[[#List.Limits|List.Limits]]'' limits ]
If picture is zoomed move viewport right otherwise skip next
# [ ''[[#List.Sort|List.Sort]]'' sort ]
====Permissions====
</div>
ControlPlayback
'''Returns:'''
====Syntax====
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
<syntaxhighlight lang="javascript">
'''Type:''' ''object''<br />
{
'''Properties:'''
    'jsonrpc': '2.0',
* ''[[#List.Items.Sources|List.Items.Sources]]'' sources
     'method': 'Player.MoveRight',  
* ''[[#List.LimitsReturned|List.LimitsReturned]]'' limits
     'id': undefined /* integer, required */,
 
    'params': {
</div>
         'playerid': -1 /* integer, required, id: Player.Id, minimum: 0, maximum: 2 */
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight lang="javascript" enclose="div">{
  "returns": {
     "type": "object",  
     "properties": {
      "sources": {
         "required": true,  
        "$ref": "List.Items.Sources"
      },  
      "limits": {
        "required": true,  
        "$ref": "List.LimitsReturned"
      }
     }
     }
}
  },
</syntaxhighlight>
  "params": [
====Returns====
    {
<syntaxhighlight lang="javascript">
      "required": true,  
{
      "name": "media",  
    'jsonrpc': '2.0',  
      "$ref": "Files.Media"
    'method': 'Player.MoveRight',  
     },
    'id': undefined /* integer, required */,
    {
     'result': undefined /* string */
      "name": "limits",  
}
      "$ref": "List.Limits"
</syntaxhighlight>
     },  
===Player.MoveUp===
     {
If picture is zoomed move viewport up
      "name": "sort",  
====Permissions====
      "$ref": "List.Sort"
ControlPlayback
====Syntax====
<syntaxhighlight lang="javascript">
{
    'jsonrpc': '2.0',  
    'method': 'Player.MoveUp',
     'id': undefined /* integer, required */,  
     'params': {
        'playerid': -1 /* integer, required, id: Player.Id, minimum: 0, maximum: 2 */
     }
     }
}
  ],
</syntaxhighlight>
  "description": "Get the sources of the media windows"
====Returns====
}</syntaxhighlight>}}
<syntaxhighlight lang="javascript">
 
{
=== Input ===
     'jsonrpc': '2.0',
==== Input.Back ====
    'method': 'Player.MoveUp',
Goes back in GUI<br />
    'id': undefined /* integer, required */,
'''Permissions:'''
     'result': undefined /* string */
* Navigate
}
'''Parameters:''' None
</syntaxhighlight>
<br />
===Player.Open===
'''Returns:''' ''string''
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.
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight lang="javascript" enclose="div">{
====Permissions====
  "returns": {
ControlPlayback
     "type": "string"
====Syntax====
  },
<syntaxhighlight lang="javascript">
  "params": [],
{
  "description": "Goes back in GUI"
     'jsonrpc': '2.0',
}</syntaxhighlight>}}
    'method': 'Player.Open',
 
    'id': undefined /* integer, required */,
==== Input.Down ====
    'params': {
Navigate down in GUI<br />
        'item': { /* no additional properties allowed */
'''Permissions:'''
            'playlistid': -1 /* integer, required, id: Playlist.Id, minimum: 0, maximum: 2 */,
* Navigate
            'position': -1 /* integer, id: Playlist.Position, minimum: 0 */
'''Parameters:''' None
        } or { /* no additional properties allowed */
<br />
            'file': undefined /* string, required, Path to a file (not a directory) to be added to the playlist */
'''Returns:''' ''string''
        } or { /* no additional properties allowed */
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight lang="javascript" enclose="div">{
            'directory': undefined /* string, required */
  "returns": {
        } or { /* no additional properties allowed */
     "type": "string"
            'movieid': -1 /* integer, required, id: Library.Id, minimum: 1 */
  },
        } or { /* no additional properties allowed */
  "params": [],
            'episodeid': -1 /* integer, required, id: Library.Id, minimum: 1 */
  "description": "Navigate down in GUI"
        } or { /* no additional properties allowed */
}</syntaxhighlight>}}
            'musicvideoid': -1 /* integer, required, id: Library.Id, minimum: 1 */
 
        } or { /* no additional properties allowed */
==== Input.Home ====
            'artistid': -1 /* integer, required, id: Library.Id, minimum: 1 */
Goes to home window in GUI<br />
        } or { /* no additional properties allowed */
'''Permissions:'''
            'albumid': -1 /* integer, required, id: Library.Id, minimum: 1 */
* Navigate
        } or { /* no additional properties allowed */
'''Parameters:''' None
            'songid': -1 /* integer, required, id: Library.Id, minimum: 1 */
<br />
         } or { /* no additional properties allowed */
'''Returns:''' ''string''
             'genreid': -1 /* integer, required, id: Library.Id, minimum: 1, Identification of a genre from the AudioLibrary */
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight lang="javascript" enclose="div">{
         } or { /* no additional properties allowed */
  "returns": {
            'path': undefined /* string, required */,  
    "type": "string"
            'random': true /* boolean, Deprecated, use the shuffled property of the options parameter instead */,  
  },
            'recursive': true /* boolean */
  "params": [],
  "description": "Goes to home window in GUI"
}</syntaxhighlight>}}
 
==== Input.Left ====
Navigate left in GUI<br />
'''Permissions:'''
* Navigate
'''Parameters:''' None
<br />
'''Returns:''' ''string''
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight lang="javascript" enclose="div">{
  "returns": {
     "type": "string"
  },
  "params": [],
  "description": "Navigate left in GUI"
}</syntaxhighlight>}}
 
==== Input.Right ====
Navigate right in GUI<br />
'''Permissions:'''
* Navigate
'''Parameters:''' None
<br />
'''Returns:''' ''string''
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight lang="javascript" enclose="div">{
  "returns": {
    "type": "string"
  },
  "params": [],
  "description": "Navigate right in GUI"
}</syntaxhighlight>}}
 
==== Input.Select ====
Select current item in GUI<br />
'''Permissions:'''
* Navigate
'''Parameters:''' None
<br />
'''Returns:''' ''string''
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight lang="javascript" enclose="div">{
  "returns": {
    "type": "string"
  },  
  "params": [],  
  "description": "Select current item in GUI"
}</syntaxhighlight>}}
 
==== Input.Up ====
Navigate up in GUI<br />
'''Permissions:'''
* Navigate
'''Parameters:''' None
<br />
'''Returns:''' ''string''
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight lang="javascript" enclose="div">{
  "returns": {
    "type": "string"
  },  
  "params": [],  
  "description": "Navigate up in GUI"
}</syntaxhighlight>}}
 
=== JSONRPC ===
==== JSONRPC.Introspect ====
Enumerates all actions and descriptions<br />
'''Permissions:'''
* ReadData
'''Parameters:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
# [ ''boolean'' getdescriptions = True ]
# [ ''boolean'' getmetadata = False ]
# [ ''boolean'' filterbytransport = True ]
# [ ''object'' filter ]<br />
'''Properties:'''
* ''string'' type
* ''string'' id
* [ ''boolean'' getreferences = True ]
 
</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''
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight lang="javascript" enclose="div">{
  "returns": {
    "type": "object"
  },  
  "params": [
    {
      "default": true,  
      "type": "boolean",  
      "name": "getdescriptions"
    },
    {
      "default": false,  
      "type": "boolean",  
      "name": "getmetadata"
    },
    {
      "default": true,  
      "type": "boolean",  
      "name": "filterbytransport"
    },
    {
      "type": "object",  
      "name": "filter",  
      "properties": {
         "type": {
          "enums": [
            "method",
            "namespace",
             "type",  
            "notification"
          ],  
          "type": "string",  
          "description": "Type of the given name",
          "required": true
         },
        "id": {
          "required": true,
          "type": "string",  
          "description": "Name of a namespace, method or type"
         },  
         },  
         'options': { /* no additional properties allowed */
         "getreferences": {
            'repeat': undefined /* null */ or 'off' /* string, id: Player.Repeat */,  
          "default": true,  
            'resume': undefined /* boolean, Whether to resume from the resume point or not */ or 0 /* number, id: Player.Position.Percentage, minimum: 0, maximum: 100, Percentage value to start from */ or { /* id: Player.Position.Time, no additional properties allowed, Time to start from */
          "type": "boolean",  
                'hours': 0 /* integer, minimum: 0, maximum: 23 */,
          "description": "Whether or not to print the schema for referenced types"
                'milliseconds': 0 /* integer, minimum: 0, maximum: 999 */,
                'minutes': 0 /* integer, minimum: 0, maximum: 59 */,
                'seconds': 0 /* integer, minimum: 0, maximum: 59 */
            },
            'shuffled': undefined /* null */ or undefined /* boolean */
         }
         }
      }
    }
  ],
  "description": "Enumerates all actions and descriptions"
}</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
# ''string'' message
# [ ''any'' data = null ]
</div>
'''Returns:''' ''any''
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight lang="javascript" enclose="div">{
  "returns": {
    "type": "any"
  },
  "params": [
    {
      "required": true,
      "type": "string",
      "name": "sender"
    },
    {
      "required": true,
      "type": "string",
      "name": "message"
    },
    {
      "default": null,
      "type": "any",
      "name": "data"
     }
     }
}
  ],
</syntaxhighlight>
  "description": "Notify all other connected clients"
====Returns====
}</syntaxhighlight>}}
<syntaxhighlight lang="javascript">
 
{
==== JSONRPC.Permission ====
    'jsonrpc': '2.0',
Retrieve the clients permissions<br />
    'method': 'Player.Open',
'''Permissions:'''
    'id': undefined /* integer, required */,
* ReadData
    'result': undefined /* string */
'''Parameters:''' None
}
<br />
</syntaxhighlight>
'''Returns:'''
===Player.PlayPause===
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
Pauses or unpause playback and returns the new state
'''Type:''' ''object''<br />
====Permissions====
'''Properties:'''
ControlPlayback
* ''boolean'' navigate
====Syntax====
* ''boolean'' removedata
<syntaxhighlight lang="javascript">
* ''boolean'' controlplayback
{
* ''boolean'' readdata
    'jsonrpc': '2.0',  
* ''boolean'' updatedata
    'method': 'Player.PlayPause',  
* ''boolean'' writefile
    'id': undefined /* integer, required */,  
* ''boolean'' controlnotify
    'params': {
* ''boolean'' controlpower
         'playerid': -1 /* integer, required, id: Player.Id, minimum: 0, maximum: 2 */,  
 
         'play': undefined /* boolean */ or undefined /* string */
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight lang="javascript" enclose="div">{
  "returns": {
    "type": "object",
    "properties": {
      "navigate": {
        "required": true,
        "type": "boolean"
      },
      "removedata": {
        "required": true,
        "type": "boolean"
      },  
      "controlplayback": {
        "required": true,  
        "type": "boolean"
      },  
      "readdata": {
        "required": true,
        "type": "boolean"
      },  
      "updatedata": {
         "required": true,
        "type": "boolean"
      },  
      "writefile": {
        "required": true,  
        "type": "boolean"
      },
      "controlnotify": {
        "required": true,  
        "type": "boolean"
      },  
      "controlpower": {
        "required": true,  
         "type": "boolean"
      }
     }
     }
}
  },
</syntaxhighlight>
  "params": [],
====Returns====
  "description": "Retrieve the clients permissions"
<syntaxhighlight lang="javascript">
}</syntaxhighlight>}}
{
 
     'jsonrpc': '2.0',
==== JSONRPC.Ping ====
    'method': 'Player.PlayPause',
Ping responder<br />
    'id': undefined /* integer, required */,  
'''Permissions:'''
     'result': { /* required, id: Player.Speed */
* ReadData
        'speed': 0 /* integer */
'''Parameters:''' None
<br />
'''Returns:''' ''string''
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight lang="javascript" enclose="div">{
  "returns": {
     "type": "string"
  },
  "params": [],
  "description": "Ping responder"
}</syntaxhighlight>}}
 
==== JSONRPC.Version ====
Retrieve the jsonrpc protocol version<br />
'''Permissions:'''
* ReadData
'''Parameters:''' None
<br />
'''Returns:''' ''string''
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight lang="javascript" enclose="div">{
  "returns": {
    "type": "string"
  },
  "params": [],
  "description": "Retrieve the jsonrpc protocol version"
}</syntaxhighlight>}}
 
=== Player ===
==== Player.GetActivePlayers ====
Returns all active players<br />
'''Permissions:'''
* ReadData
'''Parameters:''' None
<br />
'''Returns:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
'''Type:''' ''array''
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight lang="javascript" enclose="div">{
  "returns": {
    "uniqueItems": true,
    "items": {
      "type": "object",
      "properties": {
        "playerid": {
          "required": true,
          "$ref": "Player.Id"
        },  
        "type": {
          "required": true,
          "$ref": "Player.Type"
        }
      }
    },  
     "type": "array"
  },
  "params": [],
  "description": "Returns all active players"
}</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
# [ ''[[#List.Fields.All|List.Fields.All]]'' properties ]
</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
 
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight lang="javascript" enclose="div">{
  "returns": {
    "type": "object",
    "properties": {
      "item": {
        "required": true,
        "$ref": "List.Item.All"
      }
     }
     }
}
  },
</syntaxhighlight>
  "params": [
===Player.Repeat===
    {
Set the repeat mode of the player
      "required": true,
====Permissions====
      "name": "playerid",  
ControlPlayback
      "$ref": "Player.Id"
====Syntax====
     },  
<syntaxhighlight lang="javascript">
     {
{
      "name": "properties",  
    'jsonrpc': '2.0',  
      "$ref": "List.Fields.All"
    'method': 'Player.Repeat',
     'id': undefined /* integer, required */,  
     'params': {
        'playerid': -1 /* integer, required, id: Player.Id, minimum: 0, maximum: 2 */,
        'state': 'off' /* string, required, id: Player.Repeat */
     }
     }
}
  ],
</syntaxhighlight>
  "description": "Retrieves the currently played item"
====Returns====
}</syntaxhighlight>}}
<syntaxhighlight lang="javascript">
 
{
==== Player.GetProperties ====
    'jsonrpc': '2.0',
Retrieves the values of the given properties<br />
    'method': 'Player.Repeat',
'''Permissions:'''
    'id': undefined /* integer, required */,
* ReadData
    'result': undefined /* string */
'''Parameters:'''
}
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
</syntaxhighlight>
# ''[[#Player.Id|Player.Id]]'' playerid
===Player.Rotate===
# ''[[#Player.Property.Name|Player.Property.Name]]''[] properties
Rotates current picture
</div>
====Permissions====
'''Returns:''' ''[[#Player.Property.Value|Player.Property.Value]]''
ControlPlayback
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight lang="javascript" enclose="div">{
====Syntax====
  "returns": {
<syntaxhighlight lang="javascript">
     "$ref": "Player.Property.Value"
{
  },  
     'jsonrpc': '2.0',  
  "params": [
     'method': 'Player.Rotate',  
     {
     'id': undefined /* integer, required */,  
      "required": true,
    'params': {
      "name": "playerid",
         'playerid': -1 /* integer, required, id: Player.Id, minimum: 0, maximum: 2 */
      "$ref": "Player.Id"
    },  
     {
      "uniqueItems": true,  
      "items": {
         "$ref": "Player.Property.Name"
      },  
      "required": true,  
      "type": "array",  
      "name": "properties"
     }
     }
}
  ],
</syntaxhighlight>
  "description": "Retrieves the values of the given properties"
====Returns====
}</syntaxhighlight>}}
<syntaxhighlight lang="javascript">
 
{
==== Player.GoNext ====
    'jsonrpc': '2.0',
Go to next item on the playlist<br />
    'method': 'Player.Rotate',
'''Permissions:'''
    'id': undefined /* integer, required */,
* ControlPlayback
    'result': undefined /* string */
'''Parameters:'''
}
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
</syntaxhighlight>
# ''[[#Player.Id|Player.Id]]'' playerid
===Player.Seek===
</div>
Seek through the playing item
'''Returns:''' ''string''
====Permissions====
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight lang="javascript" enclose="div">{
ControlPlayback
  "returns": {
====Syntax====
     "type": "string"
<syntaxhighlight lang="javascript">
  },  
{
  "params": [
     'jsonrpc': '2.0',
     {
    'method': 'Player.Seek',  
      "required": true,  
    'id': undefined /* integer, required */,
      "name": "playerid",  
     'params': {
      "$ref": "Player.Id"
        'playerid': -1 /* integer, required, id: Player.Id, minimum: 0, maximum: 2 */,  
        'value': 0 /* number, id: Player.Position.Percentage, minimum: 0, maximum: 100, Percentage value to seek to */ or { /* id: Player.Position.Time, no additional properties allowed, Time to seek to */
            'hours': 0 /* integer, minimum: 0, maximum: 23 */,
            'milliseconds': 0 /* integer, minimum: 0, maximum: 999 */,
            'minutes': 0 /* integer, minimum: 0, maximum: 59 */,
            'seconds': 0 /* integer, minimum: 0, maximum: 59 */
        } or undefined /* string, Seek by predefined jumps */
     }
     }
}
  ],
</syntaxhighlight>
  "description": "Go to next item on the playlist"
====Returns====
}</syntaxhighlight>}}
<syntaxhighlight lang="javascript">
 
{
==== Player.GoPrevious ====
    'jsonrpc': '2.0',
Go to previous item on the playlist<br />
    'method': 'Player.Seek',
'''Permissions:'''
    'id': undefined /* integer, required */,
* ControlPlayback
    'result': {
'''Parameters:'''
        'percentage': 0 /* number, id: Player.Position.Percentage, minimum: 0, maximum: 100 */,
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
        'time': { /* id: Global.Time, no additional properties allowed */
# ''[[#Player.Id|Player.Id]]'' playerid
            'hours': undefined /* integer, required, minimum: 0, maximum: 23 */,
</div>
            'milliseconds': undefined /* integer, required, minimum: 0, maximum: 999 */,
'''Returns:''' ''string''
            'minutes': undefined /* integer, required, minimum: 0, maximum: 59 */,
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight lang="javascript" enclose="div">{
            'seconds': undefined /* integer, required, minimum: 0, maximum: 59 */
  "returns": {
        },
    "type": "string"
        'totaltime': { /* id: Global.Time, no additional properties allowed */
  },  
            'hours': undefined /* integer, required, minimum: 0, maximum: 23 */,
  "params": [
            'milliseconds': undefined /* integer, required, minimum: 0, maximum: 999 */,
    {
            'minutes': undefined /* integer, required, minimum: 0, maximum: 59 */,  
      "required": true,  
            'seconds': undefined /* integer, required, minimum: 0, maximum: 59 */
      "name": "playerid",  
        }
      "$ref": "Player.Id"
     }
     }
}
  ],
</syntaxhighlight>
  "description": "Go to previous item on the playlist"
===Player.SetAudioStream===
}</syntaxhighlight>}}
Set the audio stream played by the player
 
====Permissions====
==== Player.GoTo ====
ControlPlayback
Go to item at the given position in the playlist<br />
====Syntax====
'''Permissions:'''
<syntaxhighlight lang="javascript">
* ControlPlayback
{
'''Parameters:'''
    'jsonrpc': '2.0',
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
    'method': 'Player.SetAudioStream',
# ''[[#Player.Id|Player.Id]]'' playerid
     'id': undefined /* integer, required */,  
# ''[[#Playlist.Position|Playlist.Position]]'' position
    'params': {
</div>
        'playerid': -1 /* integer, required, id: Player.Id, minimum: 0, maximum: 2 */,  
'''Returns:''' ''string''
        'stream': undefined /* string */ or undefined /* integer, minimum: 0, Index of the audio stream to play */
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight lang="javascript" enclose="div">{
  "returns": {
     "type": "string"
  },  
  "params": [
    {
      "required": true,  
      "name": "playerid",  
      "$ref": "Player.Id"
    },  
    {
      "required": true,  
      "name": "position",  
      "$ref": "Playlist.Position"
     }
     }
}
  ],
</syntaxhighlight>
  "description": "Go to item at the given position in the playlist"
====Returns====
}</syntaxhighlight>}}
<syntaxhighlight lang="javascript">
 
{
==== Player.MoveDown ====
    'jsonrpc': '2.0',
If picture is zoomed move viewport down<br />
    'method': 'Player.SetAudioStream',
'''Permissions:'''
    'id': undefined /* integer, required */,
* ControlPlayback
    'result': undefined /* string */
'''Parameters:'''
}
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
</syntaxhighlight>
# ''[[#Player.Id|Player.Id]]'' playerid
===Player.SetSpeed===
</div>
Set the speed of the current playback
'''Returns:''' ''string''
====Permissions====
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight lang="javascript" enclose="div">{
ControlPlayback
  "returns": {
====Syntax====
     "type": "string"
<syntaxhighlight lang="javascript">
  },  
{
  "params": [
     'jsonrpc': '2.0',
     {
    'method': 'Player.SetSpeed',  
      "required": true,  
    'id': undefined /* integer, required */,
      "name": "playerid",  
     'params': {
      "$ref": "Player.Id"
        'playerid': -1 /* integer, required, id: Player.Id, minimum: 0, maximum: 2 */,  
        'speed': undefined /* integer */ or 'increment' /* string, id: Global.IncrementDecrement */
     }
     }
}
  ],
</syntaxhighlight>
  "description": "If picture is zoomed move viewport down"
====Returns====
}</syntaxhighlight>}}
<syntaxhighlight lang="javascript">
 
{
==== Player.MoveLeft ====
    'jsonrpc': '2.0',
If picture is zoomed move viewport left otherwise skip previous<br />
    'method': 'Player.SetSpeed',
'''Permissions:'''
    'id': undefined /* integer, required */,  
* ControlPlayback
    'result': { /* required, id: Player.Speed */
'''Parameters:'''
        'speed': 0 /* integer */
<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
</div>
'''Returns:''' ''string''
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight lang="javascript" enclose="div">{
  "returns": {
    "type": "string"
  },  
  "params": [
    {
      "required": true,  
      "name": "playerid",  
      "$ref": "Player.Id"
     }
     }
}
  ],
</syntaxhighlight>
  "description": "If picture is zoomed move viewport left otherwise skip previous"
===Player.SetSubtitle===
}</syntaxhighlight>}}
Set the subtitle displayed by the player
 
====Permissions====
==== Player.MoveRight ====
ControlPlayback
If picture is zoomed move viewport right otherwise skip next<br />
====Syntax====
'''Permissions:'''
<syntaxhighlight lang="javascript">
* ControlPlayback
{
'''Parameters:'''
    'jsonrpc': '2.0',
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
    'method': 'Player.SetSubtitle',
# ''[[#Player.Id|Player.Id]]'' playerid
    'id': undefined /* integer, required */,
</div>
    'params': {
'''Returns:''' ''string''
        'playerid': -1 /* integer, required, id: Player.Id, minimum: 0, maximum: 2 */,
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight lang="javascript" enclose="div">{
        'subtitle': undefined /* string */ or undefined /* integer, minimum: 0, Index of the subtitle to display */,  
  "returns": {
        'enable': false /* boolean, Whether to enable subtitles to be displayed after setting the new subtitle */
    "type": "string"
  },  
  "params": [
    {
      "required": true,  
      "name": "playerid",  
      "$ref": "Player.Id"
     }
     }
}
  ],
</syntaxhighlight>
  "description": "If picture is zoomed move viewport right otherwise skip next"
====Returns====
}</syntaxhighlight>}}
<syntaxhighlight lang="javascript">
 
{
==== Player.MoveUp ====
    'jsonrpc': '2.0',
If picture is zoomed move viewport up<br />
    'method': 'Player.SetSubtitle',
'''Permissions:'''
    'id': undefined /* integer, required */,
* ControlPlayback
    'result': undefined /* string */
'''Parameters:'''
}
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
</syntaxhighlight>
# ''[[#Player.Id|Player.Id]]'' playerid
===Player.Shuffle===
</div>
Shuffle items in the player
'''Returns:''' ''string''
====Permissions====
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight lang="javascript" enclose="div">{
ControlPlayback
  "returns": {
====Syntax====
     "type": "string"
<syntaxhighlight lang="javascript">
  },  
{
  "params": [
     'jsonrpc': '2.0',  
     {
    'method': 'Player.Shuffle',
      "required": true,  
     'id': undefined /* integer, required */,  
      "name": "playerid",  
    'params': {
      "$ref": "Player.Id"
        'playerid': -1 /* integer, required, id: Player.Id, minimum: 0, maximum: 2 */
     }
     }
}
  ],
</syntaxhighlight>
  "description": "If picture is zoomed move viewport up"
====Returns====
}</syntaxhighlight>}}
<syntaxhighlight lang="javascript">
 
{
==== Player.Open ====
    'jsonrpc': '2.0',
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 />
    'method': 'Player.Shuffle',
'''Permissions:'''
    'id': undefined /* integer, required */,
* ControlPlayback
    'result': undefined /* string */
'''Parameters:'''
}
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
</syntaxhighlight>
# [ ''mixed'' item ]
===Player.Stop===
</div>
Stops playback
'''Returns:''' ''string''
====Permissions====
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight lang="javascript" enclose="div">{
ControlPlayback
  "returns": {
====Syntax====
     "type": "string"
<syntaxhighlight lang="javascript">
  },
{
  "params": [
     'jsonrpc': '2.0',  
    {
    'method': 'Player.Stop',  
      "type": [
    'id': undefined /* integer, required */,  
        {
    'params': {
          "additionalProperties": false,
         'playerid': -1 /* integer, required, id: Player.Id, minimum: 0, maximum: 2 */
          "type": "object",
          "properties": {
            "position": {
              "default": 0,  
              "$ref": "Playlist.Position"
            },  
            "playlistid": {
              "required": true,  
              "$ref": "Playlist.Id"
            }
          }
        },
        {
          "$ref": "Playlist.Item"
         },
        {
          "additionalProperties": false,
          "type": "object",  
          "properties": {
            "path": {
              "required": true,
              "type": "string"
            },
            "random": {
              "default": true,  
              "type": "boolean"
            },
            "recursive": {
              "default": true,  
              "type": "boolean"
            }
          }
        }
      ],  
      "name": "item"
     }
     }
}
  ],
</syntaxhighlight>
  "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."
====Returns====
}</syntaxhighlight>}}
<syntaxhighlight lang="javascript">
 
{
==== Player.PlayPause ====
    'jsonrpc': '2.0',
Pauses or unpause playback and returns the new state<br />
    'method': 'Player.Stop',
'''Permissions:'''
    'id': undefined /* integer, required */,
* ControlPlayback
    'result': undefined /* string */
'''Parameters:'''
}
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
</syntaxhighlight>
# ''[[#Player.Id|Player.Id]]'' playerid
===Player.UnShuffle===
</div>
Unshuffle items in the player
'''Returns:''' ''[[#Player.Speed|Player.Speed]]''
====Permissions====
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight lang="javascript" enclose="div">{
ControlPlayback
  "returns": {
====Syntax====
     "$ref": "Player.Speed"
<syntaxhighlight lang="javascript">
  },  
{
  "params": [
    'jsonrpc': '2.0',
     {
     'method': 'Player.UnShuffle',  
      "required": true,  
    'id': undefined /* integer, required */,
      "name": "playerid",  
     'params': {
      "$ref": "Player.Id"
        'playerid': -1 /* integer, required, id: Player.Id, minimum: 0, maximum: 2 */
     }
     }
}
  ],
</syntaxhighlight>
  "description": "Pauses or unpause playback and returns the new state"
====Returns====
}</syntaxhighlight>}}
<syntaxhighlight lang="javascript">
 
{
==== Player.Repeat ====
    'jsonrpc': '2.0',
Set the repeat mode of the player<br />
    'method': 'Player.UnShuffle',
'''Permissions:'''
    'id': undefined /* integer, required */,
* ControlPlayback
    'result': undefined /* string */
'''Parameters:'''
}
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
</syntaxhighlight>
# ''[[#Player.Id|Player.Id]]'' playerid
===Player.Zoom===
# ''[[#Player.Repeat|Player.Repeat]]'' state
Zooms current picture
</div>
====Permissions====
'''Returns:''' ''string''
ControlPlayback
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight lang="javascript" enclose="div">{
====Syntax====
  "returns": {
<syntaxhighlight lang="javascript">
     "type": "string"
{
  },  
     'jsonrpc': '2.0',  
  "params": [
    'method': 'Player.Zoom',
     {
     'id': undefined /* integer, required */,  
      "required": true,  
    'params': {
      "name": "playerid",  
        'playerid': -1 /* integer, required, id: Player.Id, minimum: 0, maximum: 2 */,  
      "$ref": "Player.Id"
        'value': undefined /* integer, required, minimum: 1, maximum: 10, Zoom level */
    },  
    {
      "required": true,  
      "name": "state",  
      "$ref": "Player.Repeat"
     }
     }
}
  ],
</syntaxhighlight>
  "description": "Set the repeat mode of the player"
====Returns====
}</syntaxhighlight>}}
<syntaxhighlight lang="javascript">
 
{
==== Player.Rotate ====
    'jsonrpc': '2.0',
Rotates current picture<br />
    'method': 'Player.Zoom',
'''Permissions:'''
    'id': undefined /* integer, required */,
* ControlPlayback
    'result': undefined /* string */
'''Parameters:'''
}
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
</syntaxhighlight>
# ''[[#Player.Id|Player.Id]]'' playerid
===Player.ZoomIn===
</div>
Zoom in once
'''Returns:''' ''string''
====Permissions====
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight lang="javascript" enclose="div">{
ControlPlayback
  "returns": {
====Syntax====
     "type": "string"
<syntaxhighlight lang="javascript">
  },  
{
  "params": [
     'jsonrpc': '2.0',  
     {
    'method': 'Player.ZoomIn',
      "required": true,  
     'id': undefined /* integer, required */,  
      "name": "playerid",  
    'params': {
      "$ref": "Player.Id"
        'playerid': -1 /* integer, required, id: Player.Id, minimum: 0, maximum: 2 */
     }
     }
}
  ],
</syntaxhighlight>
  "description": "Rotates current picture"
====Returns====
}</syntaxhighlight>}}
<syntaxhighlight lang="javascript">
 
{
==== Player.Seek ====
    'jsonrpc': '2.0',
Seek through the playing item<br />
    'method': 'Player.ZoomIn',
'''Permissions:'''
    'id': undefined /* integer, required */,
* ControlPlayback
    'result': undefined /* string */
'''Parameters:'''
}
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
</syntaxhighlight>
# ''[[#Player.Id|Player.Id]]'' playerid
===Player.ZoomOut===
# ''mixed'' value
Zoom out once
</div>
====Permissions====
'''Returns:'''
ControlPlayback
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
====Syntax====
'''Type:''' ''object''<br />
<syntaxhighlight lang="javascript">
'''Properties:'''
{
* [ ''[[#Global.Time|Global.Time]]'' totaltime ]
     'jsonrpc': '2.0',  
* [ ''[[#Player.Position.Percentage|Player.Position.Percentage]]'' percentage = 0 ]
     'method': 'Player.ZoomOut',
* [ ''[[#Global.Time|Global.Time]]'' time ]
    'id': undefined /* integer, required */,  
 
    'params': {
</div>
         'playerid': -1 /* integer, required, id: Player.Id, minimum: 0, maximum: 2 */
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight lang="javascript" enclose="div">{
  "returns": {
     "type": "object",  
     "properties": {
      "totaltime": {
        "$ref": "Global.Time"
      },  
      "percentage": {
         "default": 0,  
        "$ref": "Player.Position.Percentage"
      },  
      "time": {
        "$ref": "Global.Time"
      }
     }
     }
}
  },
</syntaxhighlight>
  "params": [
====Returns====
    {
<syntaxhighlight lang="javascript">
      "required": true,
{
      "name": "playerid",  
    'jsonrpc': '2.0',  
      "$ref": "Player.Id"
    'method': 'Player.ZoomOut',  
    },  
     'id': undefined /* integer, required */,  
     {
    'result': undefined /* string */
      "required": true,  
}
      "type": [
</syntaxhighlight>
        {
=Playlist=
          "description": "Percentage value to seek to",
Playlist modification
          "$ref": "Player.Position.Percentage"
==Methods==
        },
===Playlist.Add===
        {
Add item(s) to playlist
          "additionalProperties": false,  
====Permissions====
          "type": "object",  
ControlPlayback
          "description": "Time to seek to",  
====Syntax====
          "properties": {
<syntaxhighlight lang="javascript">
            "hours": {
{
              "default": 0,  
    'jsonrpc': '2.0',  
              "minimum": 0,  
    'method': 'Playlist.Add',  
              "type": "integer",  
    'id': undefined /* integer, required */,  
              "maximum": 23
    'params': {
             },  
        'playlistid': -1 /* integer, required, id: Playlist.Id, minimum: 0, maximum: 2 */,  
            "seconds": {
        'item': { /* no additional properties allowed */
              "default": 0,  
             'file': undefined /* string, required, Path to a file (not a directory) to be added to the playlist */
              "minimum": 0,
        } or { /* no additional properties allowed */
              "type": "integer",  
            'directory': undefined /* string, required */
              "maximum": 59
        } or { /* no additional properties allowed */
            },
            'movieid': -1 /* integer, required, id: Library.Id, minimum: 1 */
             "minutes": {
        } or { /* no additional properties allowed */
              "default": 0,  
             'episodeid': -1 /* integer, required, id: Library.Id, minimum: 1 */
              "minimum": 0,
        } or { /* no additional properties allowed */
              "type": "integer",  
            'musicvideoid': -1 /* integer, required, id: Library.Id, minimum: 1 */
              "maximum": 59
        } or { /* no additional properties allowed */
            },
             'artistid': -1 /* integer, required, id: Library.Id, minimum: 1 */
             "milliseconds": {
        } or { /* no additional properties allowed */
              "default": 0,  
            'albumid': -1 /* integer, required, id: Library.Id, minimum: 1 */
              "minimum": 0,
         } or { /* no additional properties allowed */
              "type": "integer",  
             'songid': -1 /* integer, required, id: Library.Id, minimum: 1 */
              "maximum": 999
        } or { /* no additional properties allowed */
            }
            'genreid': -1 /* integer, required, id: Library.Id, minimum: 1, Identification of a genre from the AudioLibrary */
          }
        },  
         {
          "enums": [
             "smallforward",  
            "smallbackward",  
            "bigforward",  
            "bigbackward"
          ],  
          "type": "string",  
          "description": "Seek by predefined jumps"
         }
         }
      ],
      "name": "value"
     }
     }
}
  ],
</syntaxhighlight>
  "description": "Seek through the playing item"
====Returns====
}</syntaxhighlight>}}
<syntaxhighlight lang="javascript">
 
{
==== Player.SetAudioStream ====
    'jsonrpc': '2.0',
Set the audio stream played by the player<br />
    'method': 'Playlist.Add',
'''Permissions:'''
    'id': undefined /* integer, required */,
* ControlPlayback
    'result': undefined /* string */
'''Parameters:'''  
}
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
</syntaxhighlight>
# ''[[#Player.Id|Player.Id]]'' playerid
===Playlist.Clear===
# ''mixed'' stream
Clear playlist
</div>
====Permissions====
'''Returns:''' ''string''
ControlPlayback
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight lang="javascript" enclose="div">{
====Syntax====
  "returns": {
<syntaxhighlight lang="javascript">
     "type": "string"
{
  },  
    'jsonrpc': '2.0',
  "params": [
    'method': 'Playlist.Clear',
     {
    'id': undefined /* integer, required */,
      "required": true,  
    'params': {
      "name": "playerid",  
        'playlistid': -1 /* integer, required, id: Playlist.Id, minimum: 0, maximum: 2 */
      "$ref": "Player.Id"
    }
    },  
}
    {
</syntaxhighlight>
      "required": true,  
====Returns====
      "type": [
<syntaxhighlight lang="javascript">
         {
{
          "enums": [
    'jsonrpc': '2.0',
             "previous",  
    'method': 'Playlist.Clear',
             "next"
    'id': undefined /* integer, required */,
          ],  
    'result': undefined /* string */
          "type": "string"
}
</syntaxhighlight>
===Playlist.GetItems===
Get all items from playlist
====Permissions====
ReadData
====Syntax====
<syntaxhighlight lang="javascript">
{
     'jsonrpc': '2.0',
    'method': 'Playlist.GetItems',  
    'id': undefined /* integer, required */,
     'params': {
        'playlistid': -1 /* integer, required, id: Playlist.Id, minimum: 0, maximum: 2 */,  
        'properties': [ /* id: List.Fields.All */
            undefined /* string */
         ],
        'limits': { /* id: List.Limits, no additional properties allowed */
             'end': -1 /* integer, minimum: 0, The number of items in the list being returned */,  
             'start': 0 /* integer, minimum: 0 */
         },  
         },  
         'sort': { /* id: List.Sort */
         {
            'ignorearticle': false /* boolean */,  
          "minimum": 0,  
            'method': 'none' /* string */,  
          "type": "integer",  
            'order': 'ascending' /* string */
          "description": "Index of the audio stream to play"
         }
         }
      ],
      "name": "stream"
     }
     }
}
  ],
</syntaxhighlight>
  "description": "Set the audio stream played by the player"
====Returns====
}</syntaxhighlight>}}
<syntaxhighlight lang="javascript">
 
{
==== Player.SetSpeed ====
    'jsonrpc': '2.0',
Set the speed of the current playback<br />
    'method': 'Playlist.GetItems',
'''Permissions:'''
    'id': undefined /* integer, required */,
* ControlPlayback
    'result': {
'''Parameters:'''  
        'items': [ /* array, required */
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
            { /* id: List.Item.All */
# ''[[#Player.Id|Player.Id]]'' playerid
                'album': '' /* string */,
# ''mixed'' speed
                'albumartist': '' /* string */,
</div>
                'albumid': -1 /* integer, id: Library.Id, minimum: 1 */,
'''Returns:''' ''[[#Player.Speed|Player.Speed]]''
                'artistid': -1 /* integer, id: Library.Id, minimum: 1 */,
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight lang="javascript" enclose="div">{
                'cast': [ /* array, id: Video.Cast */
  "returns": {
                    { /* no additional properties allowed */
    "$ref": "Player.Speed"
                        'name': undefined /* string, required */,
  },  
                        'role': undefined /* string, required */,
  "params": [
                        'thumbnail': '' /* string */
    {
                    }
      "required": true,  
                ],
      "name": "playerid",  
                'comment': '' /* string */,
      "$ref": "Player.Id"
                'country': '' /* string */,
    },  
                'duration': 0 /* integer */,
    {
                'episode': 0 /* integer */,
      "enums": [
                'firstaired': '' /* string */,
        -32,  
                'id': -1 /* integer, id: Library.Id, minimum: 1 */,
        -16,  
                'imdbnumber': '' /* string */,
        -8,  
                'lyrics': '' /* string */,
        -4,  
                'mpaa': '' /* string */,
        -2,  
                'musicbrainzartistid': '' /* string */,
        -1,  
                'musicbrainztrackid': '' /* string */,
        0,  
                'originaltitle': '' /* string */,
        1,  
                'plotoutline': '' /* string */,
        2,  
                'premiered': '' /* string */,
        4,  
                'productioncode': '' /* string */,
        8,  
                'season': 0 /* integer */,
        16,  
                'set': [ /* array, id: Array.String */
        32,  
                    undefined /* string, minimum length: 1 */
        "increment",  
                ],
        "decrement"
                'setid': [ /* array, id: Array.Integer */
      ],  
                    undefined /* integer */
      "type": [
                ],
        {
                'showlink': '' /* string */,
          "minimum": 0,  
                'showtitle': '' /* string */,
          "type": "integer"
                'studio': '' /* string */,
        },  
                'tagline': '' /* string */,
         {
                'top250': 0 /* integer */,
          "type": "string"
                'track': 0 /* integer */,
                'trailer': '' /* string */,
                'tvshowid': -1 /* integer, id: Library.Id, minimum: 1 */,
                'type': 'unknown' /* string */,
                'votes': '' /* string */,
                'watchedepisodes': 0 /* integer */,
                'writer': '' /* string */,
                'director': '' /* string */,
                'resume': { /* id: Video.Resume, no additional properties allowed */
                    'position': 0 /* number, minimum: 0 */,
                    'total': 0 /* number, minimum: 0 */
                },  
                'runtime': '' /* string */,
                'streamdetails': { /* id: Video.Streams, no additional properties allowed */
                    'audio': [ /* array, minimum items: 1 */
                        { /* no additional properties allowed */
                            'channels': 0 /* integer */,  
                            'codec': '' /* string */,  
                            'language': '' /* string */
                        }
                    ],  
                    'subtitle': [ /* array, minimum items: 1 */
                        { /* no additional properties allowed */
                            'language': '' /* string */
                        }
                    ],  
                    'video': [ /* array, minimum items: 1 */
                        { /* no additional properties allowed */
                            'aspect': 0 /* number */,  
                            'codec': '' /* string */,  
                            'duration': 0 /* integer */,  
                            'height': 0 /* integer */,  
                            'width': 0 /* integer */
                        }
                    ]
                },  
                'dateadded': '' /* string */,  
                'file': '' /* string */,  
                'lastplayed': '' /* string */,  
                'plot': '' /* string */,  
                'title': '' /* string */,  
                'playcount': 0 /* integer */,  
                'fanart': '' /* string */,  
                'thumbnail': '' /* string */,
                'label': undefined /* string, required */,  
                'artist': '' /* string */,
                'musicbrainzalbumartistid': '' /* string */,
                'musicbrainzalbumid': '' /* string */,
                'rating': 0 /* integer */,  
                'year': 0 /* integer */,
                'genre': '' /* string */
            }
        ],  
         'limits': { /* required, id: List.LimitsReturned, no additional properties allowed */
            'end': -1 /* integer, minimum: 0 */,
            'start': 0 /* integer, minimum: 0 */,
            'total': undefined /* integer, required, minimum: 0 */
         }
         }
      ],
      "name": "speed",
      "required": true
     }
     }
}
  ],
</syntaxhighlight>
  "description": "Set the speed of the current playback"
===Playlist.GetPlaylists===
}</syntaxhighlight>}}
Returns all existing playlists
 
====Permissions====
==== Player.SetSubtitle ====
ReadData
Set the subtitle displayed by the player<br />
====Syntax====
'''Permissions:'''
<syntaxhighlight lang="javascript">
* ControlPlayback
{
'''Parameters:'''
    'jsonrpc': '2.0',
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
    'method': 'Playlist.GetPlaylists',
# ''[[#Player.Id|Player.Id]]'' playerid
    'id': undefined /* integer, required */
# ''mixed'' subtitle
}
</div>
</syntaxhighlight>
'''Returns:''' ''string''
====Returns====
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight lang="javascript" enclose="div">{
<syntaxhighlight lang="javascript">
  "returns": {
{
     "type": "string"
     'jsonrpc': '2.0',  
  },  
     'method': 'Playlist.GetPlaylists',  
  "params": [
     'id': undefined /* integer, required */,  
     {
    'result': [ /* array, all items must be unique */
      "required": true,
      "name": "playerid",
      "$ref": "Player.Id"
    },  
     {
      "required": true,
      "type": [
        {
          "enums": [
            "previous",
            "next",
            "off",  
            "on"
          ],  
          "type": "string"
        },  
         {
         {
            'playlistid': -1 /* integer, required, id: Playlist.Id, minimum: 0, maximum: 2 */,  
          "minimum": 0,  
            'type': 'unknown' /* string, required, id: Playlist.Type */
          "type": "integer",  
          "description": "Index of the subtitle to display"
         }
         }
     ]
      ],
}
      "name": "subtitle"
</syntaxhighlight>
     }
===Playlist.GetProperties===
  ],
Retrieves the values of the given properties
  "description": "Set the subtitle displayed by the player"
====Permissions====
}</syntaxhighlight>}}
ReadData
 
====Syntax====
==== Player.Shuffle ====
<syntaxhighlight lang="javascript">
Shuffle items in the player<br />
{
'''Permissions:'''
     'jsonrpc': '2.0',  
* ControlPlayback
     'method': 'Playlist.GetProperties',  
'''Parameters:'''
     'id': undefined /* integer, required */,  
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
     'params': {
# ''[[#Player.Id|Player.Id]]'' playerid
        'playlistid': -1 /* integer, required, id: Playlist.Id, minimum: 0, maximum: 2 */,
</div>
        'properties': [ /* array, required, all items must be unique */
'''Returns:''' ''string''
            'type' /* string, id: Playlist.Property.Name */
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight lang="javascript" enclose="div">{
         ]
  "returns": {
    "type": "string"
  },
  "params": [
    {
      "required": true,
      "name": "playerid",
      "$ref": "Player.Id"
    }
  ],
  "description": "Shuffle items in the player"
}</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
</div>
'''Returns:''' ''string''
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight lang="javascript" enclose="div">{
  "returns": {
    "type": "string"
  },
  "params": [
    {
      "required": true,
      "name": "playerid",
      "$ref": "Player.Id"
    }
  ],
  "description": "Stops playback"
}</syntaxhighlight>}}
 
==== Player.UnShuffle ====
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
</div>
'''Returns:''' ''string''
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight lang="javascript" enclose="div">{
  "returns": {
    "type": "string"
  },
  "params": [
    {
      "required": true,
      "name": "playerid",
      "$ref": "Player.Id"
     }
  ],
  "description": "Unshuffle items in the player"
}</syntaxhighlight>}}
 
==== Player.Zoom ====
Zooms 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
# ''integer'' value
</div>
'''Returns:''' ''string''
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight lang="javascript" enclose="div">{
  "returns": {
    "type": "string"
  },  
  "params": [
     {
      "required": true,
      "name": "playerid",
      "$ref": "Player.Id"
    },
    {
      "description": "Zoom level",
      "required": true,
      "maximum": 10,
      "minimum": 1,
      "type": "integer",
      "name": "value"
    }
  ],
  "description": "Zooms current picture"
}</syntaxhighlight>}}
 
==== Player.ZoomIn ====
Zoom in once<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
</div>
'''Returns:''' ''string''
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight lang="javascript" enclose="div">{
  "returns": {
    "type": "string"
  },  
  "params": [
     {
      "required": true,
      "name": "playerid",
      "$ref": "Player.Id"
    }
  ],
  "description": "Zoom in once"
}</syntaxhighlight>}}
 
==== Player.ZoomOut ====
Zoom out once<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
</div>
'''Returns:''' ''string''
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight lang="javascript" enclose="div">{
  "returns": {
    "type": "string"
  },  
  "params": [
    {
      "required": true,
      "name": "playerid",  
      "$ref": "Player.Id"
     }
  ],
  "description": "Zoom out once"
}</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
# ''[[#Playlist.Item|Playlist.Item]]'' item
</div>
'''Returns:''' ''string''
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight lang="javascript" enclose="div">{
  "returns": {
    "type": "string"
  },  
  "params": [
    {
      "required": true,  
      "name": "playlistid",
      "$ref": "Playlist.Id"
    },
    {
      "required": true,  
      "name": "item",
      "$ref": "Playlist.Item"
    }
  ],  
  "description": "Add item(s) to playlist"
}</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
</div>
'''Returns:''' ''string''
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight lang="javascript" enclose="div">{
  "returns": {
    "type": "string"
  },  
  "params": [
    {
      "required": true,
      "name": "playlistid",
      "$ref": "Playlist.Id"
    }
  ],  
  "description": "Clear playlist"
}</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
# [ ''[[#List.Fields.All|List.Fields.All]]'' properties ]
# [ ''[[#List.Limits|List.Limits]]'' limits ]
# [ ''[[#List.Sort|List.Sort]]'' sort ]
</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]]''[] items
* ''[[#List.LimitsReturned|List.LimitsReturned]]'' limits
 
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight lang="javascript" enclose="div">{
  "returns": {
    "type": "object",  
    "properties": {
      "items": {
        "items": {
          "$ref": "List.Item.All"
        },
        "required": true,
        "type": "array"
      },
      "limits": {
        "required": true,
         "$ref": "List.LimitsReturned"
      }
     }
     }
}
  },
</syntaxhighlight>
  "params": [
====Returns====
    {
<syntaxhighlight lang="javascript">
      "required": true,
{
      "name": "playlistid",  
    'jsonrpc': '2.0',  
      "$ref": "Playlist.Id"
    'method': 'Playlist.GetProperties',  
    },  
     'id': undefined /* integer, required */,  
     {
     'result': { /* id: Playlist.Property.Value */
      "name": "properties",  
        'size': 0 /* integer, minimum: 0 */,  
      "$ref": "List.Fields.All"
        'type': 'unknown' /* string, id: Playlist.Type */
    },  
     {
      "name": "limits",  
      "$ref": "List.Limits"
    },  
    {
      "name": "sort",  
      "$ref": "List.Sort"
     }
     }
}
  ],
</syntaxhighlight>
  "description": "Get all items from playlist"
===Playlist.Insert===
}</syntaxhighlight>}}
Insert item(s) into playlist. Does not work for picture playlists (aka slideshows).
 
====Permissions====
==== Playlist.GetPlaylists ====
ControlPlayback
Returns all existing playlists<br />
====Syntax====
'''Permissions:'''
<syntaxhighlight lang="javascript">
* ReadData
{
'''Parameters:''' None
    'jsonrpc': '2.0',
<br />
    'method': 'Playlist.Insert',
'''Returns:'''
    'id': undefined /* integer, required */,
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
    'params': {
'''Type:''' ''array''
        'playlistid': -1 /* integer, required, id: Playlist.Id, minimum: 0, maximum: 2 */,
</div>
        'position': -1 /* integer, required, id: Playlist.Position, minimum: 0 */,
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight lang="javascript" enclose="div">{
        'item': { /* no additional properties allowed */
  "returns": {
            'file': undefined /* string, required, Path to a file (not a directory) to be added to the playlist */
    "uniqueItems": true,  
        } or { /* no additional properties allowed */
    "items": {
            'directory': undefined /* string, required */
      "type": "object",  
        } or { /* no additional properties allowed */
      "properties": {
            'movieid': -1 /* integer, required, id: Library.Id, minimum: 1 */
         "playlistid": {
        } or { /* no additional properties allowed */
          "required": true,  
            'episodeid': -1 /* integer, required, id: Library.Id, minimum: 1 */
          "$ref": "Playlist.Id"
        } or { /* no additional properties allowed */
         },  
            'musicvideoid': -1 /* integer, required, id: Library.Id, minimum: 1 */
         "type": {
         } or { /* no additional properties allowed */
          "required": true,  
            'artistid': -1 /* integer, required, id: Library.Id, minimum: 1 */
          "$ref": "Playlist.Type"
         } or { /* no additional properties allowed */
            'albumid': -1 /* integer, required, id: Library.Id, minimum: 1 */
         } or { /* no additional properties allowed */
            'songid': -1 /* integer, required, id: Library.Id, minimum: 1 */
        } or { /* no additional properties allowed */
            'genreid': -1 /* integer, required, id: Library.Id, minimum: 1, Identification of a genre from the AudioLibrary */
         }
         }
      }
    },
    "type": "array"
  },
  "params": [],
  "description": "Returns all existing playlists"
}</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
# ''[[#Playlist.Property.Name|Playlist.Property.Name]]''[] properties
</div>
'''Returns:''' ''[[#Playlist.Property.Value|Playlist.Property.Value]]''
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight lang="javascript" enclose="div">{
  "returns": {
    "$ref": "Playlist.Property.Value"
  },
  "params": [
    {
      "required": true,
      "name": "playlistid",
      "$ref": "Playlist.Id"
    },
    {
      "uniqueItems": true,
      "items": {
        "$ref": "Playlist.Property.Name"
      },
      "required": true,
      "type": "array",
      "name": "properties"
     }
     }
}
  ],
</syntaxhighlight>
  "description": "Retrieves the values of the given properties"
====Returns====
}</syntaxhighlight>}}
<syntaxhighlight lang="javascript">
 
{
==== Playlist.Insert ====
     'jsonrpc': '2.0',  
Insert item(s) into playlist. Does not work for picture playlists (aka slideshows).<br />
     'method': 'Playlist.Insert',  
'''Permissions:'''
     'id': undefined /* integer, required */,  
* ControlPlayback
     'result': undefined /* string */
'''Parameters:'''
}
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
</syntaxhighlight>
# ''[[#Playlist.Id|Playlist.Id]]'' playlistid
===Playlist.Remove===
# ''[[#Playlist.Position|Playlist.Position]]'' position
Remove item from playlist. Does not work for picture playlists (aka slideshows).
# ''[[#Playlist.Item|Playlist.Item]]'' item
====Permissions====
</div>
ControlPlayback
'''Returns:''' ''string''
====Syntax====
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight lang="javascript" enclose="div">{
<syntaxhighlight lang="javascript">
  "returns": {
{
     "type": "string"
    'jsonrpc': '2.0',
  },
    'method': 'Playlist.Remove',
  "params": [
     'id': undefined /* integer, required */,  
    {
    'params': {
      "required": true,
        'playlistid': -1 /* integer, required, id: Playlist.Id, minimum: 0, maximum: 2 */,  
      "name": "playlistid",
        'position': -1 /* integer, required, id: Playlist.Position, minimum: 0 */
      "$ref": "Playlist.Id"
    },  
     {
      "required": true,
      "name": "position",
      "$ref": "Playlist.Position"
    },  
     {
      "required": true,  
      "name": "item",  
      "$ref": "Playlist.Item"
     }
  ],
  "description": "Insert item(s) into playlist. Does not work for picture playlists (aka slideshows)."
}</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
# ''[[#Playlist.Position|Playlist.Position]]'' position
</div>
'''Returns:''' ''string''
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight lang="javascript" enclose="div">{
  "returns": {
     "type": "string"
  },  
  "params": [
    {
      "required": true,  
      "name": "playlistid",  
      "$ref": "Playlist.Id"
    },  
    {
      "required": true,  
      "name": "position",  
      "$ref": "Playlist.Position"
     }
     }
}
  ],
</syntaxhighlight>
  "description": "Remove item from playlist. Does not work for picture playlists (aka slideshows)."
====Returns====
}</syntaxhighlight>}}
<syntaxhighlight lang="javascript">
 
{
==== Playlist.Swap ====
    'jsonrpc': '2.0',
Swap items in the playlist. Does not work for picture playlists (aka slideshows).<br />
    'method': 'Playlist.Remove',
'''Permissions:'''
    'id': undefined /* integer, required */,
* ControlPlayback
    'result': undefined /* string */
'''Parameters:'''
}
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
</syntaxhighlight>
# ''[[#Playlist.Id|Playlist.Id]]'' playlistid
===Playlist.Swap===
# ''[[#Playlist.Position|Playlist.Position]]'' position1
Swap items in the playlist. Does not work for picture playlists (aka slideshows).
# ''[[#Playlist.Position|Playlist.Position]]'' position2
====Permissions====
</div>
ControlPlayback
'''Returns:''' ''string''
====Syntax====
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight lang="javascript" enclose="div">{
<syntaxhighlight lang="javascript">
  "returns": {
{
    "type": "string"
    'jsonrpc': '2.0',
  },  
    'method': 'Playlist.Swap',
  "params": [
    'id': undefined /* integer, required */,
    {
    'params': {
      "required": true,
        'playlistid': -1 /* integer, required, id: Playlist.Id, minimum: 0, maximum: 2 */,  
      "name": "playlistid",  
        'position1': -1 /* integer, required, id: Playlist.Position, minimum: 0 */,  
      "$ref": "Playlist.Id"
        'position2': -1 /* integer, required, id: Playlist.Position, minimum: 0 */
    },  
    {
      "required": true,  
      "name": "position1",  
      "$ref": "Playlist.Position"
    },  
    {
      "required": true,  
      "name": "position2",  
      "$ref": "Playlist.Position"
     }
     }
}
  ],
</syntaxhighlight>
  "description": "Swap items in the playlist. Does not work for picture playlists (aka slideshows)."
====Returns====
}</syntaxhighlight>}}
<syntaxhighlight lang="javascript">
 
{
=== System ===
    'jsonrpc': '2.0',
==== System.GetProperties ====
    'method': 'Playlist.Swap',
Retrieves the values of the given properties<br />
    'id': undefined /* integer, required */,
'''Permissions:'''
    'result': undefined /* string */
* ReadData
}
'''Parameters:'''
</syntaxhighlight>
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
=Files=
# ''[[#System.Property.Name|System.Property.Name]]''[] properties
Shares information
</div>
==Methods==
'''Returns:''' ''[[#System.Property.Value|System.Property.Value]]''
===Files.GetDirectory===
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight lang="javascript" enclose="div">{
Get the directories and files in the given directory
  "returns": {
====Permissions====
     "$ref": "System.Property.Value"
ReadData
  },  
====Syntax====
  "params": [
<syntaxhighlight lang="javascript">
     {
{
      "uniqueItems": true,  
     'jsonrpc': '2.0',
      "items": {
    'method': 'Files.GetDirectory',  
         "$ref": "System.Property.Name"
    'id': undefined /* integer, required */,
      },  
     'params': {
      "required": true,  
        'directory': undefined /* string, required */,  
      "type": "array",  
        'media': 'video' /* string, id: Files.Media */,
      "name": "properties"
         'properties': [ /* id: List.Fields.Files */
            undefined /* string */
        ],  
        'sort': { /* id: List.Sort */
            'ignorearticle': false /* boolean */,  
            'method': 'none' /* string */,  
            'order': 'ascending' /* string */
        }
     }
     }
}
  ],
</syntaxhighlight>
  "description": "Retrieves the values of the given properties"
====Returns====
}</syntaxhighlight>}}
<syntaxhighlight lang="javascript">
 
{
==== System.Hibernate ====
    'jsonrpc': '2.0',
Puts the system running XBMC into hibernate mode<br />
    'method': 'Files.GetDirectory',
'''Permissions:'''
    'id': undefined /* integer, required */,
* ControlPower
    'result': {
'''Parameters:''' None
        'files': [ /* array, required */
<br />
            { /* id: List.Item.File */
'''Returns:''' ''string''
                'file': '' /* string */,  
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight lang="javascript" enclose="div">{
                'filetype': undefined /* string, required */,
  "returns": {
                'lastmodified': '' /* string */,
    "type": "string"
                'mimetype': '' /* string */,
  },
                'size': 0 /* integer, Size of the file in kB (1000 Byte) */,
  "params": [],  
                'album': '' /* string */,
  "description": "Puts the system running Kodi into hibernate mode"
                'albumartist': '' /* string */,
}</syntaxhighlight>}}
                'albumid': -1 /* integer, id: Library.Id, minimum: 1 */,
 
                'artistid': -1 /* integer, id: Library.Id, minimum: 1 */,
==== System.Reboot ====
                'cast': [ /* array, id: Video.Cast */
Reboots the system running XBMC<br />
                    { /* no additional properties allowed */
'''Permissions:'''
                        'name': undefined /* string, required */,  
* ControlPower
                        'role': undefined /* string, required */,  
'''Parameters:''' None
                        'thumbnail': '' /* string */
<br />
                    }
'''Returns:''' ''string''
                ],
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight lang="javascript" enclose="div">{
                'comment': '' /* string */,
  "returns": {
                'country': '' /* string */,
    "type": "string"
                'duration': 0 /* integer */,
  },  
                'episode': 0 /* integer */,
  "params": [],  
                'firstaired': '' /* string */,
  "description": "Reboots the system running XBMC"
                'id': -1 /* integer, id: Library.Id, minimum: 1 */,
}</syntaxhighlight>}}
                'imdbnumber': '' /* string */,
 
                'lyrics': '' /* string */,  
==== System.Shutdown ====
                'mpaa': '' /* string */,  
Shuts the system running XBMC down<br />
                'musicbrainzartistid': '' /* string */,
'''Permissions:'''
                'musicbrainztrackid': '' /* string */,
* ControlPower
                'originaltitle': '' /* string */,
'''Parameters:''' None
                'plotoutline': '' /* string */,
<br />
                'premiered': '' /* string */,
'''Returns:''' ''string''
                'productioncode': '' /* string */,
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight lang="javascript" enclose="div">{
                'season': 0 /* integer */,
  "returns": {
                'set': [ /* array, id: Array.String */
    "type": "string"
                    undefined /* string, minimum length: 1 */
  },  
                ],  
  "params": [],  
                'setid': [ /* array, id: Array.Integer */
  "description": "Shuts the system running Kodi down"
                    undefined /* integer */
}</syntaxhighlight>}}
                ],
 
                'showlink': '' /* string */,
==== System.Suspend ====
                'showtitle': '' /* string */,
Suspends the system running XBMC<br />
                'studio': '' /* string */,
'''Permissions:'''
                'tagline': '' /* string */,
* ControlPower
                'top250': 0 /* integer */,
'''Parameters:''' None
                'track': 0 /* integer */,
<br />
                'trailer': '' /* string */,
'''Returns:''' ''string''
                'tvshowid': -1 /* integer, id: Library.Id, minimum: 1 */,
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight lang="javascript" enclose="div">{
                'type': 'unknown' /* string */,  
  "returns": {
                'votes': '' /* string */,  
    "type": "string"
                'watchedepisodes': 0 /* integer */,
  },  
                'writer': '' /* string */,
  "params": [],  
                'director': '' /* string */,
  "description": "Suspends the system running XBMC"
                'resume': { /* id: Video.Resume, no additional properties allowed */
}</syntaxhighlight>}}
                    'position': 0 /* number, minimum: 0 */,
 
                    'total': 0 /* number, minimum: 0 */
=== VideoLibrary ===
                },
==== VideoLibrary.Clean ====
                'runtime': '' /* string */,
Cleans the video library from non-existent items<br />
                'streamdetails': { /* id: Video.Streams, no additional properties allowed */
'''Permissions:'''
                    'audio': [ /* array, minimum items: 1 */
* RemoveData
                        { /* no additional properties allowed */
'''Parameters:''' None
                            'channels': 0 /* integer */,
<br />
                            'codec': '' /* string */,
'''Returns:''' ''string''
                            'language': '' /* string */
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight lang="javascript" enclose="div">{
                        }
  "returns": {
                    ],  
    "type": "string"
                    'subtitle': [ /* array, minimum items: 1 */
  },  
                        { /* no additional properties allowed */
  "params": [],  
                            'language': '' /* string */
  "description": "Cleans the video library from non-existent items"
                        }
}</syntaxhighlight>}}
                    ],  
 
                    'video': [ /* array, minimum items: 1 */
==== VideoLibrary.Export ====
                        { /* no additional properties allowed */
Exports all items from the video library<br />
                            'aspect': 0 /* number */,
'''Permissions:'''
                            'codec': '' /* string */,  
* WriteFile
                            'duration': 0 /* integer */,  
'''Parameters:'''
                            'height': 0 /* integer */,  
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
                            'width': 0 /* integer */
# [ ''mixed'' options ]
                        }
</div>
                    ]
'''Returns:''' ''string''
                },  
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight lang="javascript" enclose="div">{
                'dateadded': '' /* string */,  
  "returns": {
                'lastplayed': '' /* string */,  
    "type": "string"
                'plot': '' /* string */,
  },  
                'title': '' /* string */,  
  "params": [
                'playcount': 0 /* integer */,  
    {
                'fanart': '' /* string */,  
      "type": [
                'thumbnail': '' /* string */,
        {
                'label': undefined /* string, required */,  
          "additionalProperties": false,  
                'artist': '' /* string */,  
          "type": "object",  
                'musicbrainzalbumartistid': '' /* string */,  
          "properties": {
                'musicbrainzalbumid': '' /* string */,
            "path": {
                'rating': 0 /* integer */,  
              "minLength": 1,  
                'year': 0 /* integer */,  
              "required": true,  
                'genre': '' /* string */
              "type": "string",  
              "description": "Path to the directory to where the data should be exported"
            }
          }
        },  
        {
          "additionalProperties": false,  
          "type": "object",  
          "properties": {
            "images": {
              "default": false,  
              "type": "boolean",  
              "description": "Whether to export thumbnails and fanart images"
            },  
            "overwrite": {
              "default": false,  
              "type": "boolean",  
              "description": "Whether to overwrite existing exported files"
            },  
            "actorthumbs": {
              "default": false,  
              "type": "boolean",  
              "description": "Whether to export actor thumbnails"
             }
             }
        ],
          }
        'limits': { /* required, id: List.LimitsReturned, no additional properties allowed */
            'end': -1 /* integer, minimum: 0 */,
            'start': 0 /* integer, minimum: 0 */,
            'total': undefined /* integer, required, minimum: 0 */
         }
         }
      ],
      "name": "options"
     }
     }
}
  ],
</syntaxhighlight>
  "description": "Exports all items from the video library"
===Files.GetSources===
}</syntaxhighlight>}}
Get the sources of the media windows
 
====Permissions====
==== VideoLibrary.GetEpisodeDetails ====
ReadData
Retrieve details about a specific tv show episode<br />
====Syntax====
'''Permissions:'''
<syntaxhighlight lang="javascript">
* ReadData
{
'''Parameters:'''
     'jsonrpc': '2.0',  
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
     'method': 'Files.GetSources',  
# ''[[#Library.Id|Library.Id]]'' episodeid
     'id': undefined /* integer, required */,
# [ ''[[#Video.Fields.Episode|Video.Fields.Episode]]'' properties ]
    'params': {
</div>
        'media': 'video' /* string, required, id: Files.Media */,
'''Returns:'''
        'limits': { /* id: List.Limits, no additional properties allowed */
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
            'end': -1 /* integer, minimum: 0, The number of items in the list being returned */,
'''Type:''' ''object''<br />
            'start': 0 /* integer, minimum: 0 */
'''Properties:'''
* [ ''[[#Video.Details.Episode|Video.Details.Episode]]'' episodedetails ]
 
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight lang="javascript" enclose="div">{
  "returns": {
     "type": "object",
    "properties": {
      "episodedetails": {
        "$ref": "Video.Details.Episode"
      }
    }
  },  
  "params": [
     {
      "required": true,
      "name": "episodeid",
      "$ref": "Library.Id"
    },
    {
      "name": "properties",  
      "$ref": "Video.Fields.Episode"
     }
  ],
  "description": "Retrieve details about a specific tv show 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 = -1 ]
# [ ''integer'' season = -1 ]
# [ ''[[#Video.Fields.Episode|Video.Fields.Episode]]'' properties ]
# [ ''[[#List.Limits|List.Limits]]'' limits ]
# [ ''[[#List.Sort|List.Sort]]'' sort ]
</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]]''[] episodes ]
* ''[[#List.LimitsReturned|List.LimitsReturned]]'' limits
 
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight lang="javascript" enclose="div">{
  "returns": {
    "type": "object",  
    "properties": {
      "episodes": {
        "items": {
          "$ref": "Video.Details.Episode"
         },  
         },  
         'sort': { /* id: List.Sort */
         "type": "array"
            'ignorearticle': false /* boolean */,  
      },
            'method': 'none' /* string */,  
      "limits": {
            'order': 'ascending' /* string */
        "required": true,
        }
        "$ref": "List.LimitsReturned"
      }
    }
  },
  "params": [
    {
      "default": -1,
      "name": "tvshowid",
      "$ref": "Library.Id"
    },
    {
      "default": -1,
      "minimum": 0,
      "type": "integer",
      "name": "season"
    },  
    {
      "name": "properties",  
      "$ref": "Video.Fields.Episode"
    },
    {
      "name": "limits",
      "$ref": "List.Limits"
    },
    {
      "name": "sort",
      "$ref": "List.Sort"
     }
     }
}
  ],
</syntaxhighlight>
  "description": "Retrieve all tv show episodes"
====Returns====
}</syntaxhighlight>}}
<syntaxhighlight lang="javascript">
 
{
==== VideoLibrary.GetGenres ====
    'jsonrpc': '2.0',
Retrieve all genres<br />
    'method': 'Files.GetSources',
'''Permissions:'''
    'id': undefined /* integer, required */,
* ReadData
    'result': {
'''Parameters:'''
        'limits': { /* required, id: List.LimitsReturned, no additional properties allowed */
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
            'end': -1 /* integer, minimum: 0 */,  
# ''string'' type
            'start': 0 /* integer, minimum: 0 */,
# [ ''[[#Library.Fields.Genre|Library.Fields.Genre]]'' properties ]
            'total': undefined /* integer, required, minimum: 0 */
# [ ''[[#List.Limits|List.Limits]]'' limits ]
# [ ''[[#List.Sort|List.Sort]]'' sort ]
</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:'''
* ''[[#Library.Details.Genre|Library.Details.Genre]]''[] genres
* ''[[#List.LimitsReturned|List.LimitsReturned]]'' limits
 
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight lang="javascript" enclose="div">{
  "returns": {
    "type": "object",  
    "properties": {
      "genres": {
        "items": {
          "$ref": "Library.Details.Genre"
         },  
         },  
         'sources': [ /* array, required, id: List.Items.Sources */
         "required": true,
            {
        "type": "array"
                'file': undefined /* string, required */
      },  
            }
      "limits": {
        ]
        "required": true,  
        "$ref": "List.LimitsReturned"
      }
     }
     }
}
  },
</syntaxhighlight>
  "params": [
===Files.PrepareDownload===
    {
Provides a way to download a given file (e.g. providing an URL to the real file location)
      "enums": [
====Permissions====
        "movie",
ReadData
        "tvshow",
====Syntax====
        "musicvideo"
<syntaxhighlight lang="javascript">
      ],
{
      "type": "string",
    'jsonrpc': '2.0',  
      "name": "type",
    'method': 'Files.PrepareDownload',  
      "required": true
     'id': undefined /* integer, required */,  
    },
     'params': {
    {
        'path': undefined /* string, required */
      "name": "properties",  
      "$ref": "Library.Fields.Genre"
    },  
     {
      "name": "limits",  
      "$ref": "List.Limits"
    },  
     {
      "name": "sort",  
      "$ref": "List.Sort"
     }
     }
}
  ],
</syntaxhighlight>
  "description": "Retrieve all genres"
====Returns====
}</syntaxhighlight>}}
<syntaxhighlight lang="javascript">
 
{
==== VideoLibrary.GetMovieDetails ====
    'jsonrpc': '2.0',
Retrieve details about a specific movie<br />
    'method': 'Files.PrepareDownload',
'''Permissions:'''
    'id': undefined /* integer, required */,
* ReadData
    'result': {
'''Parameters:'''
        'details': undefined /* any, required, Transport specific details on how/from where to download the given file */,
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
        'mode': undefined /* string, required, Direct mode allows using Files.Download whereas redirect mode requires the usage of a different protocol */,  
# ''[[#Library.Id|Library.Id]]'' movieid
         'protocol': undefined /* string, required */
# [ ''[[#Video.Fields.Movie|Video.Fields.Movie]]'' properties ]
</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 ]
 
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight lang="javascript" enclose="div">{
  "returns": {
    "type": "object",  
    "properties": {
      "moviedetails": {
         "$ref": "Video.Details.Movie"
      }
     }
     }
}
  },
</syntaxhighlight>
  "params": [
=AudioLibrary=
    {
Audio Library information
      "required": true,  
==Notifications==
      "name": "movieid",  
===AudioLibrary.OnRemove===
      "$ref": "Library.Id"
An audio item has been removed.
    },  
====Returns====
    {
<syntaxhighlight lang="javascript">
      "name": "properties",  
{
      "$ref": "Video.Fields.Movie"
    'jsonrpc': '2.0',  
    'method': 'AudioLibrary.OnRemove',  
    'params': undefined /* string, required */ or { /* required */
        'id': -1 /* integer, required, id: Library.Id, minimum: 1 */,  
        'type': undefined /* required */
     }
     }
}
  ],
</syntaxhighlight>
  "description": "Retrieve details about a specific movie"
===AudioLibrary.OnScanFinished===
}</syntaxhighlight>}}
Scanning the audio library has been finished.
 
====Returns====
==== VideoLibrary.GetMovieSetDetails ====
<syntaxhighlight lang="javascript">
Retrieve details about a specific movie set<br />
{
'''Permissions:'''
    'jsonrpc': '2.0',
* ReadData
    'method': 'AudioLibrary.OnScanFinished',
'''Parameters:'''
    'params': undefined /* string, required */ or undefined /* null, required */
<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
</syntaxhighlight>
# [ ''[[#Video.Fields.MovieSet|Video.Fields.MovieSet]]'' properties ]
===AudioLibrary.OnUpdate===
# [ ''object'' movies ]<br />
An audio item has been updated.
'''Properties:'''
====Returns====
* [ ''[[#List.Sort|List.Sort]]'' sort ]
<syntaxhighlight lang="javascript">
* [ ''[[#Video.Fields.Movie|Video.Fields.Movie]]'' properties ]
{
* [ ''[[#List.Limits|List.Limits]]'' limits ]
    'jsonrpc': '2.0',
 
    'method': 'AudioLibrary.OnUpdate',
</div>
    'params': undefined /* string, required */ or { /* required */
'''Returns:'''
        'id': -1 /* integer, required, id: Library.Id, minimum: 1 */,
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
        'type': undefined /* string ('song'), required, id: Notifications.Library.Audio.Type */
'''Type:''' ''object''<br />
'''Properties:'''
* [ ''[[#Video.Details.MovieSet.Extended|Video.Details.MovieSet.Extended]]'' setdetails ]
 
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight lang="javascript" enclose="div">{
  "returns": {
    "type": "object",  
    "properties": {
      "setdetails": {
        "$ref": "Video.Details.MovieSet.Extended"
      }
     }
     }
}
  },
</syntaxhighlight>
  "params": [
==Methods==
    {
===AudioLibrary.Clean===
      "required": true,  
Cleans the audio library from non-existent items
      "name": "setid",  
====Permissions====
      "$ref": "Library.Id"
RemoveData
    },
====Syntax====
    {
<syntaxhighlight lang="javascript">
      "name": "properties",
{
      "$ref": "Video.Fields.MovieSet"
    'jsonrpc': '2.0',  
     },  
    'method': 'AudioLibrary.Clean',  
     {
    'id': undefined /* integer, required */
      "type": "object",  
}
      "name": "movies",
</syntaxhighlight>
      "properties": {
====Returns====
        "sort": {
<syntaxhighlight lang="javascript">
          "$ref": "List.Sort"
{
        },  
    'jsonrpc': '2.0',
         "properties": {
     'method': 'AudioLibrary.Clean',  
          "$ref": "Video.Fields.Movie"
     'id': undefined /* integer, required */,  
         },
    'result': undefined /* string */
        "limits": {
}
          "$ref": "List.Limits"
</syntaxhighlight>
===AudioLibrary.Export===
Exports all items from the audio library
====Permissions====
WriteFile
====Syntax====
<syntaxhighlight lang="javascript">
{
    'jsonrpc': '2.0',
    'method': 'AudioLibrary.Export',
    'id': undefined /* integer, required */,  
    'params': {
         'options': { /* no additional properties allowed */
            'path': undefined /* string, required, minimum length: 1, Path to the directory to where the data should be exported */
         } or { /* no additional properties allowed */
            'images': false /* boolean, Whether to export thumbnails and fanart images */,
            'overwrite': false /* boolean, Whether to overwrite existing exported files */
         }
         }
      }
     }
     }
}
  ],
</syntaxhighlight>
  "description": "Retrieve details about a specific movie set"
====Returns====
}</syntaxhighlight>}}
<syntaxhighlight lang="javascript">
 
{
==== VideoLibrary.GetMovieSets ====
    'jsonrpc': '2.0',
Retrieve all movie sets<br />
    'method': 'AudioLibrary.Export',
'''Permissions:'''
    'id': undefined /* integer, required */,
* ReadData
    'result': undefined /* string */
'''Parameters:'''
}
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
</syntaxhighlight>
# [ ''[[#Video.Fields.MovieSet|Video.Fields.MovieSet]]'' properties ]
===AudioLibrary.GetAlbumDetails===
# [ ''[[#List.Limits|List.Limits]]'' limits ]
Retrieve details about a specific album
# [ ''[[#List.Sort|List.Sort]]'' sort ]
====Permissions====
</div>
ReadData
'''Returns:'''
====Syntax====
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
<syntaxhighlight lang="javascript">
'''Type:''' ''object''<br />
{
'''Properties:'''
    'jsonrpc': '2.0',
* ''[[#List.LimitsReturned|List.LimitsReturned]]'' limits
     'method': 'AudioLibrary.GetAlbumDetails',  
* [ ''[[#Video.Details.MovieSet|Video.Details.MovieSet]]''[] sets ]
     'id': undefined /* integer, required */,
 
    'params': {
</div>
         'albumid': -1 /* integer, required, id: Library.Id, minimum: 1 */,
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight lang="javascript" enclose="div">{
         'properties': [ /* id: Audio.Fields.Album */
  "returns": {
            undefined /* string */
     "type": "object",  
         ]
     "properties": {
      "limits": {
         "required": true,  
        "$ref": "List.LimitsReturned"
      },  
      "sets": {
         "items": {
          "$ref": "Video.Details.MovieSet"
        },
         "type": "array"
      }
     }
     }
}
  },
</syntaxhighlight>
  "params": [
====Returns====
    {
<syntaxhighlight lang="javascript">
      "name": "properties",  
{
      "$ref": "Video.Fields.MovieSet"
    'jsonrpc': '2.0',  
     },  
    'method': 'AudioLibrary.GetAlbumDetails',
     {
     'id': undefined /* integer, required */,  
      "name": "limits",  
     'result': {
      "$ref": "List.Limits"
        'albumdetails': { /* id: Audio.Details.Album */
    },  
            'albumid': -1 /* integer, required, id: Library.Id, minimum: 1 */,  
    {
            'albumlabel': '' /* string */,
      "name": "sort",  
            'artistid': -1 /* integer, id: Library.Id, minimum: 1 */,
      "$ref": "List.Sort"
            'description': '' /* string */,  
            'mood': '' /* string */,
            'style': '' /* string */,  
            'theme': '' /* string */,
            'type': '' /* string */,
            'artist': '' /* string */,
            'musicbrainzalbumartistid': '' /* string */,
            'musicbrainzalbumid': '' /* string */,
            'rating': 0 /* integer */,
            'title': '' /* string */,
            'year': 0 /* integer */,
            'genre': '' /* string */,
            'fanart': '' /* string */,
            'thumbnail': '' /* string */,
            'label': undefined /* string, required */
        }
     }
     }
}
  ],
</syntaxhighlight>
  "description": "Retrieve all movie sets"
===AudioLibrary.GetAlbums===
}</syntaxhighlight>}}
Retrieve all albums from specified artist or genre
 
====Permissions====
==== VideoLibrary.GetMovies ====
ReadData
Retrieve all movies<br />
====Syntax====
'''Permissions:'''
<syntaxhighlight lang="javascript">
* ReadData
{
'''Parameters:'''
    'jsonrpc': '2.0',
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
    'method': 'AudioLibrary.GetAlbums',
# [ ''[[#Video.Fields.Movie|Video.Fields.Movie]]'' properties ]
    'id': undefined /* integer, required */,
# [ ''[[#List.Limits|List.Limits]]'' limits ]
    'params': {
# [ ''[[#List.Sort|List.Sort]]'' sort ]
        'artistid': -1 /* integer, id: Library.Id, minimum: 1 */,
</div>
        'genreid': -1 /* integer, id: Library.Id, minimum: 1 */,
'''Returns:'''
        'properties': [ /* id: Audio.Fields.Album */
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
            undefined /* string */
'''Type:''' ''object''<br />
        ],
'''Properties:'''
        'limits': { /* id: List.Limits, no additional properties allowed */
* [ ''[[#Video.Details.Movie|Video.Details.Movie]]''[] movies ]
            'end': -1 /* integer, minimum: 0, The number of items in the list being returned */,
* ''[[#List.LimitsReturned|List.LimitsReturned]]'' limits
            'start': 0 /* integer, minimum: 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">{
  "returns": {
    "type": "object",  
    "properties": {
      "movies": {
        "items": {
          "$ref": "Video.Details.Movie"
         },  
         },  
         'sort': { /* id: List.Sort */
         "type": "array"
            'ignorearticle': false /* boolean */,
      },
            'method': 'none' /* string */,  
      "limits": {
            'order': 'ascending' /* string */
        "required": true,  
        }
        "$ref": "List.LimitsReturned"
      }
     }
     }
}
  },
</syntaxhighlight>
  "params": [
====Returns====
    {
<syntaxhighlight lang="javascript">
      "name": "properties",  
{
      "$ref": "Video.Fields.Movie"
    'jsonrpc': '2.0',  
     },  
    'method': 'AudioLibrary.GetAlbums',
     {
     'id': undefined /* integer, required */,  
      "name": "limits",  
     'result': {
      "$ref": "List.Limits"
        'albums': [ /* array */
    },  
            { /* id: Audio.Details.Album */
    {
                'albumid': -1 /* integer, required, id: Library.Id, minimum: 1 */,  
      "name": "sort",  
                'albumlabel': '' /* string */,
      "$ref": "List.Sort"
                'artistid': -1 /* integer, id: Library.Id, minimum: 1 */,
                'description': '' /* string */,  
                'mood': '' /* string */,
                'style': '' /* string */,  
                'theme': '' /* string */,
                'type': '' /* string */,
                'artist': '' /* string */,
                'musicbrainzalbumartistid': '' /* string */,
                'musicbrainzalbumid': '' /* string */,
                'rating': 0 /* integer */,
                'title': '' /* string */,
                'year': 0 /* integer */,
                'genre': '' /* string */,
                'fanart': '' /* string */,
                'thumbnail': '' /* string */,
                'label': undefined /* string, required */
            }
        ],
        'limits': { /* required, id: List.LimitsReturned, no additional properties allowed */
            'end': -1 /* integer, minimum: 0 */,
            'start': 0 /* integer, minimum: 0 */,
            'total': undefined /* integer, required, minimum: 0 */
        }
     }
     }
}
  ],
</syntaxhighlight>
  "description": "Retrieve all movies"
===AudioLibrary.GetArtistDetails===
}</syntaxhighlight>}}
Retrieve details about a specific artist
 
====Permissions====
==== VideoLibrary.GetMusicVideoDetails ====
ReadData
Retrieve details about a specific music video<br />
====Syntax====
'''Permissions:'''
<syntaxhighlight lang="javascript">
* ReadData
{
'''Parameters:'''
    'jsonrpc': '2.0',
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
    'method': 'AudioLibrary.GetArtistDetails',
# ''[[#Library.Id|Library.Id]]'' musicvideoid
    'id': undefined /* integer, required */,
# [ ''[[#Video.Fields.MusicVideo|Video.Fields.MusicVideo]]'' properties ]
    'params': {
</div>
        'artistid': -1 /* integer, required, id: Library.Id, minimum: 1 */,  
'''Returns:'''
        'properties': [ /* id: Audio.Fields.Artist */
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
            undefined /* string */
'''Type:''' ''object''<br />
        ]
'''Properties:'''
* [ ''[[#Video.Details.MusicVideo|Video.Details.MusicVideo]]'' musicvideodetails ]
 
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight lang="javascript" enclose="div">{
  "returns": {
    "type": "object",  
    "properties": {
      "musicvideodetails": {
        "$ref": "Video.Details.MusicVideo"
      }
     }
     }
}
  },
</syntaxhighlight>
  "params": [
====Returns====
     {
<syntaxhighlight lang="javascript">
      "required": true,  
{
      "name": "musicvideoid",  
    'jsonrpc': '2.0',
      "$ref": "Library.Id"
     'method': 'AudioLibrary.GetArtistDetails',
    },  
    'id': undefined /* integer, required */,  
    {
    'result': {
      "name": "properties",  
        'artistdetails': { /* id: Audio.Details.Artist */
      "$ref": "Video.Fields.MusicVideo"
            'artist': undefined /* string, required */,  
            'artistid': -1 /* integer, required, id: Library.Id, minimum: 1 */,
            'born': '' /* string */,  
            'description': '' /* string */,
            'died': '' /* string */,  
            'disbanded': '' /* string */,
            'formed': '' /* string */,
            'instrument': '' /* string */,
            'mood': '' /* string */,
            'musicbrainzartistid': '' /* string */,
            'style': '' /* string */,
            'yearsactive': '' /* string */,
            'genre': '' /* string */,
            'fanart': '' /* string */,
            'thumbnail': '' /* string */,
            'label': undefined /* string, required */
        }
     }
     }
}
  ],
</syntaxhighlight>
  "description": "Retrieve details about a specific music video"
===AudioLibrary.GetArtists===
}</syntaxhighlight>}}
Retrieve all artists
 
====Permissions====
==== VideoLibrary.GetMusicVideos ====
ReadData
Retrieve all music videos<br />
====Syntax====
'''Permissions:'''
<syntaxhighlight lang="javascript">
* ReadData
{
'''Parameters:'''
    'jsonrpc': '2.0',
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
    'method': 'AudioLibrary.GetArtists',
# [ ''[[#Library.Id|Library.Id]]'' artistid = -1 ]
    'id': undefined /* integer, required */,
# [ ''[[#Library.Id|Library.Id]]'' albumid = -1 ]
    'params': {
# [ ''[[#Video.Fields.MusicVideo|Video.Fields.MusicVideo]]'' properties ]
        'albumartistsonly': undefined /* null */ or undefined /* boolean */,
# [ ''[[#List.Limits|List.Limits]]'' limits ]
        'genreid': -1 /* integer, id: Library.Id, minimum: 1 */,
# [ ''[[#List.Sort|List.Sort]]'' sort ]
        'properties': [ /* id: Audio.Fields.Artist */
</div>
            undefined /* string */
'''Returns:'''
        ],
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
        'limits': { /* id: List.Limits, no additional properties allowed */
'''Type:''' ''object''<br />
            'end': -1 /* integer, minimum: 0, The number of items in the list being returned */,
'''Properties:'''
            'start': 0 /* integer, minimum: 0 */
* [ ''[[#Video.Details.MusicVideo|Video.Details.MusicVideo]]''[] musicvideos ]
* ''[[#List.LimitsReturned|List.LimitsReturned]]'' limits
 
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight lang="javascript" enclose="div">{
  "returns": {
    "type": "object",  
    "properties": {
      "musicvideos": {
        "items": {
          "$ref": "Video.Details.MusicVideo"
         },  
         },  
         'sort': { /* id: List.Sort */
         "type": "array"
            'ignorearticle': false /* boolean */,
      },
            'method': 'none' /* string */,  
      "limits": {
            'order': 'ascending' /* string */
        "required": true,  
        }
        "$ref": "List.LimitsReturned"
      }
     }
     }
}
  },
</syntaxhighlight>
  "params": [
====Returns====
     {
<syntaxhighlight lang="javascript">
      "default": -1,  
{
      "name": "artistid",  
    'jsonrpc': '2.0',
      "$ref": "Library.Id"
     'method': 'AudioLibrary.GetArtists',
    },  
    'id': undefined /* integer, required */,  
    {
    'result': {
      "default": -1,  
        'artists': [ /* array */
      "name": "albumid",  
            { /* id: Audio.Details.Artist */
      "$ref": "Library.Id"
                'artist': undefined /* string, required */,  
    },  
                'artistid': -1 /* integer, required, id: Library.Id, minimum: 1 */,
    {
                'born': '' /* string */,  
      "name": "properties",  
                'description': '' /* string */,
      "$ref": "Video.Fields.MusicVideo"
                'died': '' /* string */,  
    },  
                'disbanded': '' /* string */,  
    {
                'formed': '' /* string */,
      "name": "limits",  
                'instrument': '' /* string */,  
      "$ref": "List.Limits"
                'mood': '' /* string */,
    },  
                'musicbrainzartistid': '' /* string */,  
    {
                'style': '' /* string */,
      "name": "sort",  
                'yearsactive': '' /* string */,  
      "$ref": "List.Sort"
                'genre': '' /* string */,
                'fanart': '' /* string */,  
                'thumbnail': '' /* string */,
                'label': undefined /* string, required */
            }
        ],  
        'limits': { /* required, id: List.LimitsReturned, no additional properties allowed */
            'end': -1 /* integer, minimum: 0 */,  
            'start': 0 /* integer, minimum: 0 */,
            'total': undefined /* integer, required, minimum: 0 */
        }
     }
     }
}
  ],
</syntaxhighlight>
  "description": "Retrieve all music videos"
===AudioLibrary.GetGenres===
}</syntaxhighlight>}}
Retrieve all genres
 
====Permissions====
==== VideoLibrary.GetRecentlyAddedEpisodes ====
ReadData
Retrieve all recently added tv episodes<br />
====Syntax====
'''Permissions:'''
<syntaxhighlight lang="javascript">
* ReadData
{
'''Parameters:'''
    'jsonrpc': '2.0',
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
    'method': 'AudioLibrary.GetGenres',
# [ ''[[#Video.Fields.Episode|Video.Fields.Episode]]'' properties ]
    'id': undefined /* integer, required */,
# [ ''[[#List.Limits|List.Limits]]'' limits ]
    'params': {
# [ ''[[#List.Sort|List.Sort]]'' sort ]
        'properties': [ /* id: Library.Fields.Genre */
</div>
            undefined /* string */
'''Returns:'''
        ],
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
        'limits': { /* id: List.Limits, no additional properties allowed */
'''Type:''' ''object''<br />
            'end': -1 /* integer, minimum: 0, The number of items in the list being returned */,
'''Properties:'''
            'start': 0 /* integer, minimum: 0 */
* [ ''[[#Video.Details.Episode|Video.Details.Episode]]''[] episodes ]
* ''[[#List.LimitsReturned|List.LimitsReturned]]'' limits
 
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight lang="javascript" enclose="div">{
  "returns": {
    "type": "object",  
    "properties": {
      "episodes": {
        "items": {
          "$ref": "Video.Details.Episode"
         },  
         },  
         'sort': { /* id: List.Sort */
         "type": "array"
            'ignorearticle': false /* boolean */,
      },
            'method': 'none' /* string */,  
      "limits": {
            'order': 'ascending' /* string */
        "required": true,  
        }
        "$ref": "List.LimitsReturned"
      }
     }
     }
}
  },
</syntaxhighlight>
  "params": [
====Returns====
    {
<syntaxhighlight lang="javascript">
      "name": "properties",  
{
      "$ref": "Video.Fields.Episode"
    'jsonrpc': '2.0',  
     },  
    'method': 'AudioLibrary.GetGenres',
     {
     'id': undefined /* integer, required */,  
      "name": "limits",  
     'result': {
      "$ref": "List.Limits"
        'genres': [ /* array, required */
    },  
            { /* id: Library.Details.Genre */
    {
                'genreid': -1 /* integer, required, id: Library.Id, minimum: 1 */,  
      "name": "sort",  
                'thumbnail': '' /* string */,
      "$ref": "List.Sort"
                'title': '' /* string */,  
                'label': undefined /* string, required */
            }
        ],
        'limits': { /* required, id: List.LimitsReturned, no additional properties allowed */
            'end': -1 /* integer, minimum: 0 */,
            'start': 0 /* integer, minimum: 0 */,
            'total': undefined /* integer, required, minimum: 0 */
        }
     }
     }
}
  ],
</syntaxhighlight>
  "description": "Retrieve all recently added tv episodes"
===AudioLibrary.GetRecentlyAddedAlbums===
}</syntaxhighlight>}}
Retrieve recently added albums
 
====Permissions====
==== VideoLibrary.GetRecentlyAddedMovies ====
ReadData
Retrieve all recently added movies<br />
====Syntax====
'''Permissions:'''
<syntaxhighlight lang="javascript">
* ReadData
{
'''Parameters:'''
    'jsonrpc': '2.0',
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
    'method': 'AudioLibrary.GetRecentlyAddedAlbums',
# [ ''[[#Video.Fields.Movie|Video.Fields.Movie]]'' properties ]
    'id': undefined /* integer, required */,
# [ ''[[#List.Limits|List.Limits]]'' limits ]
    'params': {
# [ ''[[#List.Sort|List.Sort]]'' sort ]
        'properties': [ /* id: Audio.Fields.Album */
</div>
            undefined /* string */
'''Returns:'''
        ],
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
        'limits': { /* id: List.Limits, no additional properties allowed */
'''Type:''' ''object''<br />
            'end': -1 /* integer, minimum: 0, The number of items in the list being returned */,
'''Properties:'''
            'start': 0 /* integer, minimum: 0 */
* [ ''[[#Video.Details.Movie|Video.Details.Movie]]''[] movies ]
* ''[[#List.LimitsReturned|List.LimitsReturned]]'' limits
 
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight lang="javascript" enclose="div">{
  "returns": {
    "type": "object",  
    "properties": {
      "movies": {
        "items": {
          "$ref": "Video.Details.Movie"
         },  
         },  
         'sort': { /* id: List.Sort */
         "type": "array"
            'ignorearticle': false /* boolean */,
      },
            'method': 'none' /* string */,  
      "limits": {
            'order': 'ascending' /* string */
        "required": true,  
        }
        "$ref": "List.LimitsReturned"
      }
     }
     }
}
  },
</syntaxhighlight>
  "params": [
====Returns====
    {
<syntaxhighlight lang="javascript">
      "name": "properties",  
{
      "$ref": "Video.Fields.Movie"
    'jsonrpc': '2.0',  
     },  
    'method': 'AudioLibrary.GetRecentlyAddedAlbums',
     {
     'id': undefined /* integer, required */,  
      "name": "limits",  
     'result': {
      "$ref": "List.Limits"
        'albums': [ /* array */
    },  
            { /* id: Audio.Details.Album */
    {
                'albumid': -1 /* integer, required, id: Library.Id, minimum: 1 */,  
      "name": "sort",  
                'albumlabel': '' /* string */,
      "$ref": "List.Sort"
                'artistid': -1 /* integer, id: Library.Id, minimum: 1 */,
                'description': '' /* string */,  
                'mood': '' /* string */,
                'style': '' /* string */,  
                'theme': '' /* string */,
                'type': '' /* string */,
                'artist': '' /* string */,
                'musicbrainzalbumartistid': '' /* string */,
                'musicbrainzalbumid': '' /* string */,
                'rating': 0 /* integer */,
                'title': '' /* string */,
                'year': 0 /* integer */,
                'genre': '' /* string */,
                'fanart': '' /* string */,
                'thumbnail': '' /* string */,
                'label': undefined /* string, required */
            }
        ],
        'limits': { /* required, id: List.LimitsReturned, no additional properties allowed */
            'end': -1 /* integer, minimum: 0 */,
            'start': 0 /* integer, minimum: 0 */,
            'total': undefined /* integer, required, minimum: 0 */
        }
     }
     }
}
  ],
</syntaxhighlight>
  "description": "Retrieve all recently added movies"
===AudioLibrary.GetRecentlyAddedSongs===
}</syntaxhighlight>}}
Retrieve recently added songs
 
====Permissions====
==== VideoLibrary.GetRecentlyAddedMusicVideos ====
ReadData
Retrieve all recently added music videos<br />
====Syntax====
'''Permissions:'''
<syntaxhighlight lang="javascript">
* ReadData
{
'''Parameters:'''
    'jsonrpc': '2.0',
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
    'method': 'AudioLibrary.GetRecentlyAddedSongs',
# [ ''[[#Video.Fields.MusicVideo|Video.Fields.MusicVideo]]'' properties ]
    'id': undefined /* integer, required */,
# [ ''[[#List.Limits|List.Limits]]'' limits ]
    'params': {
# [ ''[[#List.Sort|List.Sort]]'' sort ]
        'albumlimit': -1 /* integer, id: List.Amount, minimum: 0, The amount of recently added albums from which to return the songs */,
</div>
        'properties': [ /* id: Audio.Fields.Song */
'''Returns:'''
            undefined /* string */
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
        ],
'''Type:''' ''object''<br />
        'limits': { /* id: List.Limits, no additional properties allowed */
'''Properties:'''
            'end': -1 /* integer, minimum: 0, The number of items in the list being returned */,
* [ ''[[#Video.Details.MusicVideo|Video.Details.MusicVideo]]''[] musicvideos ]
            'start': 0 /* integer, minimum: 0 */
* ''[[#List.LimitsReturned|List.LimitsReturned]]'' limits
 
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight lang="javascript" enclose="div">{
  "returns": {
    "type": "object",  
    "properties": {
      "musicvideos": {
        "items": {
          "$ref": "Video.Details.MusicVideo"
         },  
         },  
         'sort': { /* id: List.Sort */
         "type": "array"
            'ignorearticle': false /* boolean */,  
      },
            'method': 'none' /* string */,  
      "limits": {
            'order': 'ascending' /* string */
        "required": true,
        }
        "$ref": "List.LimitsReturned"
      }
    }
  },
  "params": [
    {
      "name": "properties",
      "$ref": "Video.Fields.MusicVideo"
    },  
    {
      "name": "limits",  
      "$ref": "List.Limits"
    },
    {
      "name": "sort",
      "$ref": "List.Sort"
     }
     }
}
  ],
</syntaxhighlight>
  "description": "Retrieve all recently added music videos"
====Returns====
}</syntaxhighlight>}}
<syntaxhighlight lang="javascript">
 
{
==== VideoLibrary.GetSeasons ====
    'jsonrpc': '2.0',
Retrieve all tv seasons<br />
    'method': 'AudioLibrary.GetRecentlyAddedSongs',
'''Permissions:'''
    'id': undefined /* integer, required */,
* ReadData
    'result': {
'''Parameters:'''
        'limits': { /* required, id: List.LimitsReturned, no additional properties allowed */
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
            'end': -1 /* integer, minimum: 0 */,  
# ''[[#Library.Id|Library.Id]]'' tvshowid
            'start': 0 /* integer, minimum: 0 */,
# [ ''[[#Video.Fields.Season|Video.Fields.Season]]'' properties ]
            'total': undefined /* integer, required, minimum: 0 */
# [ ''[[#List.Limits|List.Limits]]'' limits ]
# [ ''[[#List.Sort|List.Sort]]'' sort ]
</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]]''[] seasons ]
* ''[[#List.LimitsReturned|List.LimitsReturned]]'' limits
 
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight lang="javascript" enclose="div">{
  "returns": {
    "type": "object",  
    "properties": {
      "seasons": {
        "items": {
          "$ref": "Video.Details.Season"
         },  
         },  
         'songs': [ /* array */
         "type": "array"
            { /* id: Audio.Details.Song */
      },  
                'album': '' /* string */,  
      "limits": {
                'albumartist': '' /* string */,
        "required": true,  
                'albumid': -1 /* integer, id: Library.Id, minimum: 1 */,  
        "$ref": "List.LimitsReturned"
                'artistid': -1 /* integer, id: Library.Id, minimum: 1 */,
      }
                'comment': '' /* string */,
    }
                'duration': 0 /* integer */,
  },  
                'file': '' /* string */,  
  "params": [
                'lastplayed': '' /* string */,
    {
                'lyrics': '' /* string */,
      "required": true,  
                'musicbrainzartistid': '' /* string */,
      "name": "tvshowid",  
                'musicbrainztrackid': '' /* string */,  
      "$ref": "Library.Id"
                'playcount': 0 /* integer */,  
    },  
                'songid': -1 /* integer, required, id: Library.Id, minimum: 1 */,  
    {
                'track': 0 /* integer */,
      "name": "properties",  
                'artist': '' /* string */,  
      "$ref": "Video.Fields.Season"
                'musicbrainzalbumartistid': '' /* string */,
    },  
                'musicbrainzalbumid': '' /* string */,  
    {
                'rating': 0 /* integer */,
      "name": "limits",  
                'title': '' /* string */,  
      "$ref": "List.Limits"
                'year': 0 /* integer */,
    },  
                'genre': '' /* string */,  
    {
                'fanart': '' /* string */,
      "name": "sort",  
                'thumbnail': '' /* string */,  
      "$ref": "List.Sort"
                'label': undefined /* string, required */
            }
        ]
     }
     }
}
  ],
</syntaxhighlight>
  "description": "Retrieve all tv seasons"
===AudioLibrary.GetRecentlyPlayedAlbums===
}</syntaxhighlight>}}
Retrieve recently played albums
 
====Permissions====
==== VideoLibrary.GetTVShowDetails ====
ReadData
Retrieve details about a specific tv show<br />
====Syntax====
'''Permissions:'''
<syntaxhighlight lang="javascript">
* ReadData
{
'''Parameters:'''
    'jsonrpc': '2.0',
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
    'method': 'AudioLibrary.GetRecentlyPlayedAlbums',
# ''[[#Library.Id|Library.Id]]'' tvshowid
    'id': undefined /* integer, required */,
# [ ''[[#Video.Fields.TVShow|Video.Fields.TVShow]]'' properties ]
    'params': {
</div>
        'properties': [ /* id: Audio.Fields.Album */
'''Returns:'''
            undefined /* string */
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
        ],
'''Type:''' ''object''<br />
        'limits': { /* id: List.Limits, no additional properties allowed */
'''Properties:'''
            'end': -1 /* integer, minimum: 0, The number of items in the list being returned */,
* [ ''[[#Video.Details.TVShow|Video.Details.TVShow]]'' tvshowdetails ]
            'start': 0 /* integer, minimum: 0 */
 
        },
</div>
        'sort': { /* id: List.Sort */
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight lang="javascript" enclose="div">{
            'ignorearticle': false /* boolean */,
  "returns": {
            'method': 'none' /* string */,
    "type": "object",
            'order': 'ascending' /* string */
    "properties": {
         }
      "tvshowdetails": {
         "$ref": "Video.Details.TVShow"
      }
     }
     }
}
  },
</syntaxhighlight>
  "params": [
====Returns====
     {
<syntaxhighlight lang="javascript">
      "required": true,  
{
      "name": "tvshowid",  
    'jsonrpc': '2.0',
      "$ref": "Library.Id"
    'method': 'AudioLibrary.GetRecentlyPlayedAlbums',
    },  
    'id': undefined /* integer, required */,
    {
     'result': {
      "name": "properties",  
        'albums': [ /* array */
      "$ref": "Video.Fields.TVShow"
            { /* id: Audio.Details.Album */
                'albumid': -1 /* integer, required, id: Library.Id, minimum: 1 */,  
                'albumlabel': '' /* string */,  
                'artistid': -1 /* integer, id: Library.Id, minimum: 1 */,
                'description': '' /* string */,
                'mood': '' /* string */,
                'style': '' /* string */,
                'theme': '' /* string */,
                'type': '' /* string */,
                'artist': '' /* string */,
                'musicbrainzalbumartistid': '' /* string */,
                'musicbrainzalbumid': '' /* string */,
                'rating': 0 /* integer */,
                'title': '' /* string */,
                'year': 0 /* integer */,
                'genre': '' /* string */,
                'fanart': '' /* string */,
                'thumbnail': '' /* string */,
                'label': undefined /* string, required */
            }
        ],  
        'limits': { /* required, id: List.LimitsReturned, no additional properties allowed */
            'end': -1 /* integer, minimum: 0 */,  
            'start': 0 /* integer, minimum: 0 */,
            'total': undefined /* integer, required, minimum: 0 */
        }
     }
     }
}
  ],
</syntaxhighlight>
  "description": "Retrieve details about a specific tv show"
===AudioLibrary.GetRecentlyPlayedSongs===
}</syntaxhighlight>}}
Retrieve recently played songs
 
====Permissions====
==== VideoLibrary.GetTVShows ====
ReadData
Retrieve all tv shows<br />
====Syntax====
'''Permissions:'''
<syntaxhighlight lang="javascript">
* ReadData
{
'''Parameters:'''
    'jsonrpc': '2.0',
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
    'method': 'AudioLibrary.GetRecentlyPlayedSongs',
# [ ''[[#Video.Fields.TVShow|Video.Fields.TVShow]]'' properties ]
    'id': undefined /* integer, required */,
# [ ''[[#List.Limits|List.Limits]]'' limits ]
    'params': {
# [ ''[[#List.Sort|List.Sort]]'' sort ]
        'properties': [ /* id: Audio.Fields.Song */
</div>
            undefined /* string */
'''Returns:'''
        ],  
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
        'limits': { /* id: List.Limits, no additional properties allowed */
'''Type:''' ''object''<br />
            'end': -1 /* integer, minimum: 0, The number of items in the list being returned */,
'''Properties:'''
            'start': 0 /* integer, minimum: 0 */
* ''[[#List.LimitsReturned|List.LimitsReturned]]'' limits
* [ ''[[#Video.Details.TVShow|Video.Details.TVShow]]''[] tvshows ]
 
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight lang="javascript" enclose="div">{
  "returns": {
    "type": "object",  
    "properties": {
      "limits": {
        "required": true,
        "$ref": "List.LimitsReturned"
      },  
      "tvshows": {
        "items": {
          "$ref": "Video.Details.TVShow"
         },  
         },  
         'sort': { /* id: List.Sort */
         "type": "array"
            'ignorearticle': false /* boolean */,
      }
            'method': 'none' /* string */,
            'order': 'ascending' /* string */
        }
     }
     }
}
  },
</syntaxhighlight>
  "params": [
====Returns====
    {
<syntaxhighlight lang="javascript">
      "name": "properties",  
{
      "$ref": "Video.Fields.TVShow"
    'jsonrpc': '2.0',  
     },  
    'method': 'AudioLibrary.GetRecentlyPlayedSongs',
     {
     'id': undefined /* integer, required */,  
      "name": "limits",  
     'result': {
      "$ref": "List.Limits"
        'limits': { /* required, id: List.LimitsReturned, no additional properties allowed */
    },  
            'end': -1 /* integer, minimum: 0 */,
    {
            'start': 0 /* integer, minimum: 0 */,
      "name": "sort",  
            'total': undefined /* integer, required, minimum: 0 */
      "$ref": "List.Sort"
        },  
        'songs': [ /* array */
            { /* id: Audio.Details.Song */
                'album': '' /* string */,  
                'albumartist': '' /* string */,
                'albumid': -1 /* integer, id: Library.Id, minimum: 1 */,
                'artistid': -1 /* integer, id: Library.Id, minimum: 1 */,
                'comment': '' /* string */,
                'duration': 0 /* integer */,
                'file': '' /* string */,
                'lastplayed': '' /* string */,
                'lyrics': '' /* string */,
                'musicbrainzartistid': '' /* string */,
                'musicbrainztrackid': '' /* string */,
                'playcount': 0 /* integer */,
                'songid': -1 /* integer, required, id: Library.Id, minimum: 1 */,
                'track': 0 /* integer */,
                'artist': '' /* string */,
                'musicbrainzalbumartistid': '' /* string */,
                'musicbrainzalbumid': '' /* string */,
                'rating': 0 /* integer */,
                'title': '' /* string */,
                'year': 0 /* integer */,
                'genre': '' /* string */,
                'fanart': '' /* string */,
                'thumbnail': '' /* string */,
                'label': undefined /* string, required */
            }
        ]
     }
     }
}
  ],
</syntaxhighlight>
  "description": "Retrieve all tv shows"
===AudioLibrary.GetSongDetails===
}</syntaxhighlight>}}
Retrieve details about a specific song
 
====Permissions====
==== VideoLibrary.Scan ====
ReadData
Scans the video sources for new library items<br />
====Syntax====
'''Permissions:'''
<syntaxhighlight lang="javascript">
* UpdateData
{
'''Parameters:''' None
    'jsonrpc': '2.0',
<br />
    'method': 'AudioLibrary.GetSongDetails',
'''Returns:''' ''string''
    'id': undefined /* integer, required */,
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight lang="javascript" enclose="div">{
    'params': {
  "returns": {
        'songid': -1 /* integer, required, id: Library.Id, minimum: 1 */,  
    "type": "string"
         'properties': [ /* id: Audio.Fields.Song */
  },
            undefined /* string */
  "params": [],
        ]
  "description": "Scans the video sources for new library items"
}</syntaxhighlight>}}
 
=== XBMC ===
==== XBMC.GetInfoBooleans ====
Retrieve info booleans about XBMC 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''[1..X] booleans
</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''
</div>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight lang="javascript" enclose="div">{
  "returns": {
    "type": "object",  
    "description": "List of key-value pairs of the retrieved info booleans"
  },  
  "params": [
    {
      "minItems": 1,  
      "items": {
         "type": "string"
      },
      "required": true,
      "type": "array",
      "name": "booleans"
     }
     }
}
  ],
</syntaxhighlight>
  "description": "Retrieve info booleans about Kodi and the system"
====Returns====
}</syntaxhighlight>}}
<syntaxhighlight lang="javascript">
 
{
==== XBMC.GetInfoLabels ====
    'jsonrpc': '2.0',
Retrieve info labels about XBMC and the system<br />
    'method': 'AudioLibrary.GetSongDetails',
'''Permissions:'''
    'id': undefined /* integer, required */,
* ReadData
    'result': {
'''Parameters:'''
        'songdetails': { /* id: Audio.Details.Song */
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
            'album': '' /* string */,
# ''array''[1..X] labels
            'albumartist': '' /* string */,
</div>
            'albumid': -1 /* integer, id: Library.Id, minimum: 1 */,
'''Returns:'''  
            'artistid': -1 /* integer, id: Library.Id, minimum: 1 */,
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
            'comment': '' /* string */,
'''Type:''' ''object''
            'duration': 0 /* integer */,
</div>
            'file': '' /* string */,
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight lang="javascript" enclose="div">{
            'lastplayed': '' /* string */,
  "returns": {
            'lyrics': '' /* string */,
    "type": "object",  
            'musicbrainzartistid': '' /* string */,
    "description": "List of key-value pairs of the retrieved info labels"
            'musicbrainztrackid': '' /* string */,
  },  
            'playcount': 0 /* integer */,
  "params": [
            'songid': -1 /* integer, required, id: Library.Id, minimum: 1 */,
    {
            'track': 0 /* integer */,
      "description": "See http://wiki.xbmc.org/index.php?title=InfoLabels for a list of possible info labels",  
            'artist': '' /* string */,  
      "minItems": 1,  
            'musicbrainzalbumartistid': '' /* string */,  
      "items": {
            'musicbrainzalbumid': '' /* string */,
        "type": "string"
            'rating': 0 /* integer */,  
      },  
            'title': '' /* string */,  
      "required": true,  
            'year': 0 /* integer */,
      "type": "array",  
            'genre': '' /* string */,  
      "name": "labels"
            'fanart': '' /* string */,  
            'thumbnail': '' /* string */,  
            'label': undefined /* string, required */
        }
     }
     }
}
  ],
</syntaxhighlight>
  "description": "Retrieve info labels about Kodi and the system"
===AudioLibrary.GetSongs===
}</syntaxhighlight>}}
Retrieve all songs from specified album, artist or genre
 
====Permissions====
 
ReadData
== Global types ==
====Syntax====
=== Application ===
<syntaxhighlight lang="javascript">
==== Application.Property.Name ====
{
'''Type:''' ''string''{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight lang="javascript" enclose="div">{
     'jsonrpc': '2.0',
  "default": "volume",
    'method': 'AudioLibrary.GetSongs',
  "enums": [
    'id': undefined /* integer, required */,
    "volume",
    'params': {
    "muted",
        'artistid': -1 /* integer, id: Library.Id, minimum: 1 */,  
    "name",
        'albumid': -1 /* integer, id: Library.Id, minimum: 1 */,  
     "version"
        'genreid': -1 /* integer, id: Library.Id, minimum: 1 */,  
  ],
        'properties': [ /* id: Audio.Fields.Song */
  "type": "string",
            undefined /* string */
  "id": "Application.Property.Name"
         ],  
}</syntaxhighlight>}}
         'limits': { /* id: List.Limits, no additional properties allowed */
 
             'end': -1 /* integer, minimum: 0, The number of items in the list being returned */,  
==== Application.Property.Value ====
             'start': 0 /* integer, minimum: 0 */
'''Type:''' ''object''<br />
'''Properties:'''
* [ ''boolean'' muted = False ]
* [ ''integer'' volume = 0 ]
* [ ''object'' version ]<br />
'''Properties:'''
** ''integer'' major
** ''string'' tag
** ''integer'' minor
** [ ''mixed'' revision = null ]
 
* [ ''string'' name = "" ]
{{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",  
  "id": "Application.Property.Value",  
  "properties": {
    "muted": {
      "default": false,  
      "type": "boolean"
    },  
    "volume": {
      "default": 0,  
      "type": "integer"
    },  
    "version": {
      "type": "object",  
      "properties": {
        "major": {
          "minimum": 0,  
          "type": "integer",
          "required": true
         },  
         "tag": {
          "enums": [
            "prealpha",  
             "alpha",  
            "beta",  
            "releasecandidate",  
             "stable"
          ],
          "type": "string",  
          "required": true
         },  
         },  
         'sort': { /* id: List.Sort */
         "minor": {
            'ignorearticle': false /* boolean */,
          "minimum": 0,  
            'method': 'none' /* string */,
          "type": "integer",  
            'order': 'ascending' /* string */
          "required": true
        }
    }
}
</syntaxhighlight>
====Returns====
<syntaxhighlight lang="javascript">
{
    'jsonrpc': '2.0',
    'method': 'AudioLibrary.GetSongs',
    'id': undefined /* integer, required */,
    'result': {
        'limits': { /* required, id: List.LimitsReturned, no additional properties allowed */
            'end': -1 /* integer, minimum: 0 */,  
            'start': 0 /* integer, minimum: 0 */,  
            'total': undefined /* integer, required, minimum: 0 */
         },  
         },  
         'songs': [ /* array */
         "revision": {
            { /* id: Audio.Details.Song */
          "default": null,  
                'album': '' /* string */,  
          "type": [
                'albumartist': '' /* string */,
            {
                'albumid': -1 /* integer, id: Library.Id, minimum: 1 */,
              "type": "string"
                'artistid': -1 /* integer, id: Library.Id, minimum: 1 */,
            },  
                'comment': '' /* string */,
            {
                'duration': 0 /* integer */,  
              "minimum": 0,  
                'file': '' /* string */,
              "type": "integer"
                'lastplayed': '' /* string */,
                'lyrics': '' /* string */,
                'musicbrainzartistid': '' /* string */,
                'musicbrainztrackid': '' /* string */,
                'playcount': 0 /* integer */,
                'songid': -1 /* integer, required, id: Library.Id, minimum: 1 */,
                'track': 0 /* integer */,  
                'artist': '' /* string */,
                'musicbrainzalbumartistid': '' /* string */,
                'musicbrainzalbumid': '' /* string */,
                'rating': 0 /* integer */,
                'title': '' /* string */,
                'year': 0 /* integer */,
                'genre': '' /* string */,
                'fanart': '' /* string */,
                'thumbnail': '' /* string */,
                'label': undefined /* string, required */
             }
             }
         ]
          ]
         }
      }
    },
    "name": {
      "default": "",
      "minLength": 1,
      "type": "string"
     }
     }
}
  }
</syntaxhighlight>
}</syntaxhighlight>}}
===AudioLibrary.Scan===
 
Scans the audio sources for new library items
=== Array ===
====Permissions====
==== Array.Integer ====
UpdateData
'''Type:''' ''array''{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight lang="javascript" enclose="div">{
====Syntax====
  "items": {
<syntaxhighlight lang="javascript">
    "type": "integer"
{
  },
     'jsonrpc': '2.0',
  "type": "array",
    'method': 'AudioLibrary.Scan',
  "id": "Array.Integer"
    'id': undefined /* integer, required */,
}</syntaxhighlight>}}
    'params': {
 
        'directory': '' /* string */
==== Array.String ====
'''Type:''' ''array''{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight lang="javascript" enclose="div">{
  "items": {
     "minLength": 1,
    "type": "string"
  },
  "type": "array",
  "id": "Array.String"
}</syntaxhighlight>}}
 
=== Audio ===
==== Audio.Details.Album ====
'''Extends:'''
* ''[[#Audio.Details.Media|Audio.Details.Media]]''
<br />
'''Properties:'''
* [ ''string'' style = "" ]
* [ ''string'' mood = "" ]
* [ ''string'' albumlabel = "" ]
* [ ''string'' theme = "" ]
* ''[[#Library.Id|Library.Id]]'' albumid
* [ ''[[#Library.Id|Library.Id]]'' artistid = -1 ]
* [ ''string'' type = "" ]
* [ ''string'' description = "" ]
{{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",
  "id": "Audio.Details.Album",
  "properties": {
    "style": {
      "default": "",
      "type": "string"
    },
    "mood": {
      "default": "",
      "type": "string"
    },
    "albumlabel": {
      "default": "",
      "type": "string"
    },
    "theme": {
      "default": "",
      "type": "string"
    },
    "albumid": {
      "required": true,
      "$ref": "Library.Id"
    },
    "artistid": {
      "default": -1,
      "$ref": "Library.Id"
    },
    "type": {
      "default": "",
      "type": "string"
    },
    "description": {
      "default": "",
      "type": "string"
     }
     }
}
  }
</syntaxhighlight>
}</syntaxhighlight>}}
====Returns====
 
<syntaxhighlight lang="javascript">
==== Audio.Details.Artist ====
{
'''Extends:'''
    'jsonrpc': '2.0',
* ''[[#Audio.Details.Base|Audio.Details.Base]]''
    'method': 'AudioLibrary.Scan',
<br />
    'id': undefined /* integer, required */,
'''Properties:'''
    'result': undefined /* string */
* [ ''string'' style = "" ]
}
* [ ''string'' description = "" ]
</syntaxhighlight>
* [ ''string'' musicbrainzartistid = "" ]
===AudioLibrary.SetAlbumDetails===
* ''string'' artist
Update the given album with the given details
* [ ''string'' formed = "" ]
====Permissions====
* [ ''string'' disbanded = "" ]
UpdateData
* [ ''string'' born = "" ]
====Syntax====
* ''[[#Library.Id|Library.Id]]'' artistid
<syntaxhighlight lang="javascript">
* [ ''string'' yearsactive = "" ]
{
* [ ''string'' instrument = "" ]
    'jsonrpc': '2.0',  
* [ ''string'' died = "" ]
    'method': 'AudioLibrary.SetAlbumDetails',  
* [ ''string'' mood = "" ]
     'id': undefined /* integer, required */,  
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight lang="javascript" enclose="div">{
     'params': {
  "extends": "Audio.Details.Base",  
        'albumid': -1 /* integer, required, id: Library.Id, minimum: 1 */,  
  "id": "Audio.Details.Artist",  
        'title': undefined /* null */ or undefined /* string */,  
  "properties": {
        'artist': undefined /* null */ or [ /* array, id: Array.String */
     "style": {
            undefined /* string, minimum length: 1 */
      "default": "",  
        ],  
      "type": "string"
        'description': undefined /* null */ or undefined /* string */,  
    },  
        'genre': undefined /* null */ or [ /* array, id: Array.String */
     "description": {
            undefined /* string, minimum length: 1 */
      "default": "",  
        ],  
      "type": "string"
        'theme': undefined /* null */ or [ /* array, id: Array.String */
    },  
            undefined /* string, minimum length: 1 */
    "musicbrainzartistid": {
        ],  
      "default": "",  
        'mood': undefined /* null */ or [ /* array, id: Array.String */
      "type": "string"
            undefined /* string, minimum length: 1 */
    },  
        ],  
    "artist": {
        'style': undefined /* null */ or [ /* array, id: Array.String */
      "required": true,  
            undefined /* string, minimum length: 1 */
      "type": "string"
        ],  
    },  
        'type': undefined /* null */ or undefined /* string */,  
    "formed": {
        'albumlabel': undefined /* null */ or undefined /* string */,  
      "default": "",  
        'rating': undefined /* null */ or undefined /* integer, minimum: 0 */,
      "type": "string"
        'year': undefined /* null */ or undefined /* integer, minimum: 0 */
    },  
    "disbanded": {
      "default": "",  
      "type": "string"
    },  
    "born": {
      "default": "",  
      "type": "string"
    },  
    "artistid": {
      "required": true,  
      "$ref": "Library.Id"
    },  
    "yearsactive": {
      "default": "",  
      "type": "string"
    },  
    "instrument": {
      "default": "",  
      "type": "string"
    },  
    "died": {
      "default": "",  
      "type": "string"
    },  
    "mood": {
      "default": "",  
      "type": "string"
     }
     }
}
  }
</syntaxhighlight>
}</syntaxhighlight>}}
====Returns====
 
<syntaxhighlight lang="javascript">
==== Audio.Details.Base ====
{
'''Extends:'''
    'jsonrpc': '2.0',
* ''[[#Media.Details.Base|Media.Details.Base]]''
    'method': 'AudioLibrary.SetAlbumDetails',
<br />
    'id': undefined /* integer, required */,
'''Properties:'''
    'result': undefined /* string */
* [ ''string'' genre = "" ]
}
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight lang="javascript" enclose="div">{
</syntaxhighlight>
  "extends": "Media.Details.Base",  
===AudioLibrary.SetArtistDetails===
  "id": "Audio.Details.Base",  
Update the given artist with the given details
  "properties": {
====Permissions====
    "genre": {
UpdateData
      "default": "",  
====Syntax====
      "type": "string"
<syntaxhighlight lang="javascript">
{
    'jsonrpc': '2.0',
    'method': 'AudioLibrary.SetArtistDetails',  
    'id': undefined /* integer, required */,
    'params': {
        'artistid': -1 /* integer, required, id: Library.Id, minimum: 1 */,
        'artist': undefined /* null */ or undefined /* string */,
        'instrument': undefined /* null */ or [ /* array, id: Array.String */
            undefined /* string, minimum length: 1 */
        ],
        'style': undefined /* null */ or [ /* array, id: Array.String */
            undefined /* string, minimum length: 1 */
        ],
        'mood': undefined /* null */ or [ /* array, id: Array.String */
            undefined /* string, minimum length: 1 */
        ],
        'born': undefined /* null */ or undefined /* string */,
        'formed': undefined /* null */ or undefined /* string */,
        'description': undefined /* null */ or undefined /* string */,
        'genre': undefined /* null */ or [ /* array, id: Array.String */
            undefined /* string, minimum length: 1 */
        ],  
        'died': undefined /* null */ or undefined /* string */,
        'disbanded': undefined /* null */ or undefined /* string */,
        'yearsactive': undefined /* null */ or [ /* array, id: Array.String */
            undefined /* string, minimum length: 1 */
        ]
     }
     }
}
  }
</syntaxhighlight>
}</syntaxhighlight>}}
====Returns====
 
<syntaxhighlight lang="javascript">
==== Audio.Details.Media ====
{
'''Extends:'''
    'jsonrpc': '2.0',
* ''[[#Audio.Details.Base|Audio.Details.Base]]''
    'method': 'AudioLibrary.SetArtistDetails',
<br />
    'id': undefined /* integer, required */,
'''Properties:'''
    'result': undefined /* string */
* [ ''integer'' rating = 0 ]
}
* [ ''string'' title = "" ]
</syntaxhighlight>
* [ ''string'' artist = "" ]
===AudioLibrary.SetSongDetails===
* [ ''string'' musicbrainzalbumartistid = "" ]
Update the given song with the given details
* [ ''integer'' year = 0 ]
====Permissions====
* [ ''string'' musicbrainzalbumid = "" ]
UpdateData
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight lang="javascript" enclose="div">{
====Syntax====
  "extends": "Audio.Details.Base",  
<syntaxhighlight lang="javascript">
  "id": "Audio.Details.Media",  
{
  "properties": {
    'jsonrpc': '2.0',  
     "rating": {
    'method': 'AudioLibrary.SetSongDetails',  
      "default": 0,  
    'id': undefined /* integer, required */,
      "type": "integer"
     'params': {
    },  
        'songid': -1 /* integer, required, id: Library.Id, minimum: 1 */,  
    "title": {
        'title': undefined /* null */ or undefined /* string */,
      "default": "",  
        'artist': undefined /* null */ or [ /* array, id: Array.String */
      "type": "string"
            undefined /* string, minimum length: 1 */
    },  
        ],  
    "artist": {
        'albumartist': undefined /* null */ or [ /* array, id: Array.String */
      "default": "",  
            undefined /* string, minimum length: 1 */
      "type": "string"
        ],  
    },  
        'genre': undefined /* null */ or [ /* array, id: Array.String */
    "musicbrainzalbumartistid": {
            undefined /* string, minimum length: 1 */
      "default": "",  
        ],  
      "type": "string"
        'year': undefined /* null */ or undefined /* integer, minimum: 0 */,
    },  
        'rating': undefined /* null */ or undefined /* integer, minimum: 0 */,  
    "year": {
        'album': undefined /* null */ or undefined /* string */,  
      "default": 0,  
        'track': undefined /* null */ or undefined /* integer, minimum: 0 */,  
      "type": "integer"
        'duration': undefined /* null */ or undefined /* integer, minimum: 0 */,
    },  
        'comment': undefined /* null */ or undefined /* string */,  
    "musicbrainzalbumid": {
        'musicbrainztrackid': undefined /* null */ or undefined /* string */,
      "default": "",  
        'musicbrainzartistid': undefined /* null */ or undefined /* string */,  
      "type": "string"
        'musicbrainzalbumid': undefined /* null */ or undefined /* string */,
        'musicbrainzalbumartistid': undefined /* null */ or undefined /* string */
     }
     }
}
  }
</syntaxhighlight>
}</syntaxhighlight>}}
====Returns====
 
<syntaxhighlight lang="javascript">
==== Audio.Details.Song ====
{
'''Extends:'''
    'jsonrpc': '2.0',
* ''[[#Audio.Details.Media|Audio.Details.Media]]''
    'method': 'AudioLibrary.SetSongDetails',
<br />
    'id': undefined /* integer, required */,
'''Properties:'''
    'result': undefined /* string */
* [ ''string'' album = "" ]
}
* [ ''string'' comment = "" ]
</syntaxhighlight>
* ''[[#Library.Id|Library.Id]]'' songid
=VideoLibrary=
* [ ''string'' musicbrainzartistid = "" ]
Video Library information
* [ ''string'' lyrics = "" ]
==Notifications==
* [ ''integer'' track = 0 ]
===VideoLibrary.OnRemove===
* [ ''string'' musicbrainztrackid = "" ]
A video item has been removed.
* [ ''[[#Library.Id|Library.Id]]'' albumid = -1 ]
====Returns====
* [ ''[[#Library.Id|Library.Id]]'' artistid = -1 ]
<syntaxhighlight lang="javascript">
* [ ''string'' albumartist = "" ]
{
* [ ''string'' file = "" ]
     'jsonrpc': '2.0',  
* [ ''integer'' duration = 0 ]
     'method': 'VideoLibrary.OnRemove',  
* [ ''integer'' playcount = 0 ]
    'params': undefined /* string, required */ or { /* required */
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight lang="javascript" enclose="div">{
        'id': -1 /* integer, required, id: Library.Id, minimum: 1 */,  
  "extends": "Audio.Details.Media",
        'type': undefined /* required */
  "id": "Audio.Details.Song",
  "properties": {
    "album": {
      "default": "",
      "type": "string"
    },
    "comment": {
      "default": "",
      "type": "string"
     },
    "songid": {
      "required": true,
      "$ref": "Library.Id"
    },
    "musicbrainzartistid": {
      "default": "",
      "type": "string"
    },
    "lyrics": {
      "default": "",
      "type": "string"
    },
    "track": {
      "default": 0,
      "type": "integer"
    },  
     "musicbrainztrackid": {
      "default": "",  
      "type": "string"
    },  
    "albumid": {
      "default": -1,  
      "$ref": "Library.Id"
    },
    "artistid": {
      "default": -1,  
      "$ref": "Library.Id"
    },
    "albumartist": {
      "default": "",
      "type": "string"
    },  
    "file": {
      "default": "",
      "type": "string"
    },
    "duration": {
      "default": 0,
      "type": "integer"
    },
    "playcount": {
      "default": 0,  
      "type": "integer"
     }
     }
}
  }
</syntaxhighlight>
}</syntaxhighlight>}}
===VideoLibrary.OnScanFinished===
 
Scanning the video library has been finished.
==== Audio.Fields.Album ====
====Returns====
'''Extends:'''
<syntaxhighlight lang="javascript">
* ''[[#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">{
     'jsonrpc': '2.0',  
  "items": {
     'method': 'VideoLibrary.OnScanFinished',  
    "enums": [
     'params': undefined /* string, required */ or undefined /* null, required */
      "title",
}
      "description",
</syntaxhighlight>
      "artist",
===VideoLibrary.OnUpdate===
      "genre",
A video item has been updated.
      "theme",
====Returns====
      "mood",
<syntaxhighlight lang="javascript">
      "style",
{
      "type",
     'jsonrpc': '2.0',  
      "albumlabel",
     'method': 'VideoLibrary.OnUpdate',  
      "rating",
     'params': undefined /* string, required */ or { /* required */
      "year",
        'id': -1 /* integer, required, id: Library.Id, minimum: 1 */,
      "musicbrainzalbumid",
        'playcount': -1 /* integer, minimum: 0 */,
      "musicbrainzalbumartistid",
        'type': undefined /* string ('movie', 'tvshow', 'episode', 'musicvideo'), required, id: Notifications.Library.Video.Type */
      "fanart",
      "thumbnail",
      "artistid"
    ],
    "type": "string"
  },
  "extends": "Item.Fields.Base",
  "id": "Audio.Fields.Album"
}</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">{
  "items": {
     "enums": [
      "instrument",
      "style",
      "mood",
      "born",
      "formed",
      "description",
      "genre",
      "died",
      "disbanded",
      "yearsactive",
      "musicbrainzartistid",
      "fanart",  
      "thumbnail"
     ],  
     "type": "string"
  },  
  "extends": "Item.Fields.Base",  
  "id": "Audio.Fields.Artist"
}</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">{
  "items": {
     "enums": [
      "title",
      "artist",
      "albumartist",
      "genre",
      "year",
      "rating",
      "album",
      "track",
      "duration",
      "comment",
      "lyrics",
      "musicbrainztrackid",
      "musicbrainzartistid",
      "musicbrainzalbumid",
      "musicbrainzalbumartistid",
      "playcount",
      "fanart",
      "thumbnail",
      "file",
      "artistid",  
      "albumid"
     ],  
     "type": "string"
  },  
  "extends": "Item.Fields.Base",  
  "id": "Audio.Fields.Song"
}</syntaxhighlight>}}
 
=== Configuration ===
==== Configuration ====
'''Type:''' ''object''<br />
'''Properties:'''
* ''[[#Configuration.Notifications|Configuration.Notifications]]'' notifications
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight lang="javascript" enclose="div">{
  "required": true,  
  "type": "object",  
  "id": "Configuration",  
  "properties": {
    "notifications": {
      "required": true,  
      "$ref": "Configuration.Notifications"
     }
     }
}
  }
</syntaxhighlight>
}</syntaxhighlight>}}
==Methods==
 
===VideoLibrary.Clean===
==== Configuration.Notifications ====
Cleans the video library from non-existent items
'''Type:''' ''object''<br />
====Permissions====
'''Properties:'''
RemoveData
* ''boolean'' gui
====Syntax====
* ''boolean'' system
<syntaxhighlight lang="javascript">
* ''boolean'' player
{
* ''boolean'' audiolibrary
    'jsonrpc': '2.0',
* ''boolean'' other
    'method': 'VideoLibrary.Clean',
* ''boolean'' videolibrary
    'id': undefined /* integer, required */
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight lang="javascript" enclose="div">{
}
  "additionalProperties": false,
</syntaxhighlight>
  "type": "object",  
====Returns====
  "id": "Configuration.Notifications",  
<syntaxhighlight lang="javascript">
  "properties": {
{
     "gui": {
    'jsonrpc': '2.0',  
      "required": true,  
    'method': 'VideoLibrary.Clean',  
      "type": "boolean"
     'id': undefined /* integer, required */,  
    },
    'result': undefined /* string */
    "system": {
}
      "required": true,
</syntaxhighlight>
      "type": "boolean"
===VideoLibrary.Export===
    },
Exports all items from the video library
    "player": {
====Permissions====
      "required": true,  
WriteFile
      "type": "boolean"
====Syntax====
     },  
<syntaxhighlight lang="javascript">
     "audiolibrary": {
{
      "required": true,  
    'jsonrpc': '2.0',  
      "type": "boolean"
     'method': 'VideoLibrary.Export',  
     },
     'id': undefined /* integer, required */,  
    "other": {
     'params': {
      "required": true,  
        'options': { /* no additional properties allowed */
      "type": "boolean"
            'path': undefined /* string, required, minimum length: 1, Path to the directory to where the data should be exported */
    },
        } or { /* no additional properties allowed */
    "videolibrary": {
            'actorthumbs': false /* boolean, Whether to export actor thumbnails */,
      "required": true,  
            'images': false /* boolean, Whether to export thumbnails and fanart images */,  
      "type": "boolean"
            'overwrite': false /* boolean, Whether to overwrite existing exported files */
        }
     }
     }
}
  }
</syntaxhighlight>
}</syntaxhighlight>}}
====Returns====
 
<syntaxhighlight lang="javascript">
=== Files ===
{
==== Files.Media ====
     'jsonrpc': '2.0',  
'''Type:''' ''string''{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight lang="javascript" enclose="div">{
     'method': 'VideoLibrary.Export',  
  "default": "video",
     'id': undefined /* integer, required */,  
  "enums": [
     'result': undefined /* string */
     "video",  
}
     "music",  
</syntaxhighlight>
     "pictures",  
===VideoLibrary.GetEpisodeDetails===
    "files",  
Retrieve details about a specific tv show episode
     "programs"
====Permissions====
  ],
ReadData
  "type": "string",
====Syntax====
  "id": "Files.Media"
<syntaxhighlight lang="javascript">
}</syntaxhighlight>}}
{
 
     'jsonrpc': '2.0',  
=== Global ===
     'method': 'VideoLibrary.GetEpisodeDetails',  
==== Global.Time ====
    'id': undefined /* integer, required */,  
'''Type:''' ''object''<br />
     'params': {
'''Properties:'''
        'episodeid': -1 /* integer, required, id: Library.Id, minimum: 1 */,  
* ''integer'' hours
        'properties': [ /* id: Video.Fields.Episode */
* ''integer'' seconds
            undefined /* string, Requesting the cast and/or resume field will result in increased response times */
* ''integer'' minutes
        ]
* ''integer'' milliseconds
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight lang="javascript" enclose="div">{
  "additionalProperties": false,
  "type": "object",
  "id": "Global.Time",
  "properties": {
     "hours": {
      "minimum": 0,
      "type": "integer",
      "maximum": 23,
      "required": true
    },  
     "seconds": {
      "minimum": 0,  
      "type": "integer",  
      "maximum": 59,
      "required": true
    },  
     "minutes": {
      "minimum": 0,
      "type": "integer",
      "maximum": 59,  
      "required": true
    },  
    "milliseconds": {
      "minimum": 0,  
      "type": "integer",
      "maximum": 999,  
      "required": true
     }
     }
}
  }
</syntaxhighlight>
}</syntaxhighlight>}}
====Returns====
 
<syntaxhighlight lang="javascript">
=== Item ===
{
==== Item.Details.Base ====
    'jsonrpc': '2.0',
'''Type:''' ''object''<br />
    'method': 'VideoLibrary.GetEpisodeDetails',
'''Properties:'''
    'id': undefined /* integer, required */,
* ''string'' label
    'result': {
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight lang="javascript" enclose="div">{
        'episodedetails': { /* id: Video.Details.Episode */
  "type": "object",  
            'cast': [ /* array, id: Video.Cast */
  "id": "Item.Details.Base",  
                { /* no additional properties allowed */
  "properties": {
                    'name': undefined /* string, required */,
    "label": {
                    'role': undefined /* string, required */,
      "required": true,  
                    'thumbnail': '' /* string */
      "type": "string"
                }
            ],
            'episode': 0 /* integer */,
            'episodeid': -1 /* integer, required, id: Library.Id, minimum: 1 */,
            'firstaired': '' /* string */,
            'originaltitle': '' /* string */,
            'productioncode': '' /* string */,
            'rating': 0 /* number */,
            'season': 0 /* integer */,
            'showtitle': '' /* string */,
            'tvshowid': -1 /* integer, id: Library.Id, minimum: 1 */,
            'votes': '' /* string */,  
            'writer': '' /* string */,
            'director': '' /* string */,
            'resume': { /* id: Video.Resume, no additional properties allowed */
                'position': 0 /* number, minimum: 0 */,
                'total': 0 /* number, minimum: 0 */
            },
            'runtime': '' /* string */,
            'streamdetails': { /* id: Video.Streams, no additional properties allowed */
                'audio': [ /* array, minimum items: 1 */
                    { /* no additional properties allowed */
                        'channels': 0 /* integer */,
                        'codec': '' /* string */,
                        'language': '' /* string */
                    }
                ],
                'subtitle': [ /* array, minimum items: 1 */
                    { /* no additional properties allowed */
                        'language': '' /* string */
                    }
                ],
                'video': [ /* array, minimum items: 1 */
                    { /* no additional properties allowed */
                        'aspect': 0 /* number */,  
                        'codec': '' /* string */,
                        'duration': 0 /* integer */,
                        'height': 0 /* integer */,
                        'width': 0 /* integer */
                    }
                ]
            },
            'dateadded': '' /* string */,
            'file': '' /* string */,
            'lastplayed': '' /* string */,
            'plot': '' /* string */,
            'title': '' /* string */,
            'playcount': 0 /* integer */,
            'fanart': '' /* string */,
            'thumbnail': '' /* string */,
            'label': undefined /* string, required */
        }
     }
     }
}
  }
</syntaxhighlight>
}</syntaxhighlight>}}
===VideoLibrary.GetEpisodes===
 
Retrieve all tv show episodes
==== Item.Fields.Base ====
====Permissions====
'''Type:''' ''array''{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight lang="javascript" enclose="div">{
ReadData
  "uniqueItems": true,
====Syntax====
  "items": {
<syntaxhighlight lang="javascript">
     "type": "string"
{
  },  
     'jsonrpc': '2.0',  
  "type": "array",  
    'method': 'VideoLibrary.GetEpisodes',  
  "id": "Item.Fields.Base"
    'id': undefined /* integer, required */,
}</syntaxhighlight>}}
    'params': {
 
        'tvshowid': -1 /* integer, id: Library.Id, minimum: 1 */,
=== Library ===
        'season': -1 /* integer, minimum: 0 */,
==== Library.Details.Genre ====
        'properties': [ /* id: Video.Fields.Episode */
'''Extends:'''
            undefined /* string, Requesting the cast and/or resume field will result in increased response times */
* ''[[#Item.Details.Base|Item.Details.Base]]''
        ],
<br />
        'limits': { /* id: List.Limits, no additional properties allowed */
'''Properties:'''
            'end': -1 /* integer, minimum: 0, The number of items in the list being returned */,  
* ''[[#Library.Id|Library.Id]]'' genreid
            'start': 0 /* integer, minimum: 0 */
* [ ''string'' thumbnail = "" ]
        },  
* [ ''string'' title = "" ]
        'sort': { /* id: List.Sort */
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight lang="javascript" enclose="div">{
            'ignorearticle': false /* boolean */,  
  "extends": "Item.Details.Base",
            'method': 'none' /* string */,  
  "id": "Library.Details.Genre",  
            'order': 'ascending' /* string */
  "properties": {
        }
    "genreid": {
      "required": true,  
      "$ref": "Library.Id"
    },  
    "thumbnail": {
      "default": "",
      "type": "string"
    },  
    "title": {
      "default": "",  
      "type": "string"
     }
     }
}
  }
</syntaxhighlight>
}</syntaxhighlight>}}
====Returns====
 
<syntaxhighlight lang="javascript">
==== Library.Fields.Genre ====
{
'''Extends:'''
     'jsonrpc': '2.0',  
* ''[[#Item.Fields.Base|Item.Fields.Base]]''
    'method': 'VideoLibrary.GetEpisodes',  
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight lang="javascript" enclose="div">{
    'id': undefined /* integer, required */,
  "items": {
    'result': {
     "enums": [
        'episodes': [ /* array */
      "title",
            { /* id: Video.Details.Episode */
      "thumbnail"
                'cast': [ /* array, id: Video.Cast */
    ],
                    { /* no additional properties allowed */
    "type": "string"
                        'name': undefined /* string, required */,
  },
                        'role': undefined /* string, required */,
  "extends": "Item.Fields.Base",
                        'thumbnail': '' /* string */
  "id": "Library.Fields.Genre"
                    }
}</syntaxhighlight>}}
                ],
 
                'episode': 0 /* integer */,
==== Library.Id ====
                'episodeid': -1 /* integer, required, id: Library.Id, minimum: 1 */,
'''Type:''' ''integer''{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight lang="javascript" enclose="div">{
                'firstaired': '' /* string */,
  "default": -1,  
                'originaltitle': '' /* string */,
  "minimum": 1,
                'productioncode': '' /* string */,
  "type": "integer",
                'rating': 0 /* number */,
  "id": "Library.Id"
                'season': 0 /* integer */,
}</syntaxhighlight>}}
                'showtitle': '' /* string */,
 
                'tvshowid': -1 /* integer, id: Library.Id, minimum: 1 */,
=== List ===
                'votes': '' /* string */,
==== List.Amount ====
                'writer': '' /* string */,
'''Type:''' ''integer''{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight lang="javascript" enclose="div">{
                'director': '' /* string */,
  "default": -1,  
                'resume': { /* id: Video.Resume, no additional properties allowed */
  "minimum": 0,
                    'position': 0 /* number, minimum: 0 */,  
  "type": "integer",  
                    'total': 0 /* number, minimum: 0 */
  "id": "List.Amount"
                },  
}</syntaxhighlight>}}
                'runtime': '' /* string */,  
 
                'streamdetails': { /* id: Video.Streams, no additional properties allowed */
==== List.Fields.All ====
                    'audio': [ /* array, minimum items: 1 */
'''Extends:'''
                        { /* no additional properties allowed */
* ''[[#Item.Fields.Base|Item.Fields.Base]]''
                            'channels': 0 /* integer */,  
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight lang="javascript" enclose="div">{
                            'codec': '' /* string */,  
  "items": {
                            'language': '' /* string */
    "enums": [
                        }
      "title",
                    ],  
      "artist",
                    'subtitle': [ /* array, minimum items: 1 */
      "albumartist",
                        { /* no additional properties allowed */
      "genre",
                            'language': '' /* string */
      "year",
                        }
      "rating",
                    ],  
      "album",
                    'video': [ /* array, minimum items: 1 */
      "track",
                        { /* no additional properties allowed */
      "duration",
                            'aspect': 0 /* number */,  
      "comment",
                            'codec': '' /* string */,  
      "lyrics",
                            'duration': 0 /* integer */,  
      "musicbrainztrackid",
                            'height': 0 /* integer */,  
      "musicbrainzartistid",
                            'width': 0 /* integer */
      "musicbrainzalbumid",
                        }
      "musicbrainzalbumartistid",
                    ]
      "playcount",
                },  
      "fanart",
                'dateadded': '' /* string */,  
      "director",
                'file': '' /* string */,  
      "trailer",
                'lastplayed': '' /* string */,  
      "tagline",
                'plot': '' /* string */,  
      "plot",
                'title': '' /* string */,  
      "plotoutline",
                'playcount': 0 /* integer */,  
      "originaltitle",
                'fanart': '' /* string */,  
      "lastplayed",
                'thumbnail': '' /* string */,  
      "writer",
                'label': undefined /* string, required */
      "studio",
            }
      "mpaa",
        ],  
      "cast",
        'limits': { /* required, id: List.LimitsReturned, no additional properties allowed */
      "country",
            'end': -1 /* integer, minimum: 0 */,  
      "imdbnumber",
            'start': 0 /* integer, minimum: 0 */,  
      "premiered",
            'total': undefined /* integer, required, minimum: 0 */
      "productioncode",
        }
      "runtime",
      "set",
      "showlink",
      "streamdetails",
      "top250",
      "votes",
      "firstaired",
      "season",
      "episode",
      "showtitle",
      "thumbnail",
      "file",
      "resume",
      "artistid",
      "albumid",
      "tvshowid",
      "setid"
    ],
    "type": "string"
  },
  "extends": "Item.Fields.Base",
  "id": "List.Fields.All"
}</syntaxhighlight>}}
 
==== List.Item.All ====
'''Extends:'''
* ''[[#Video.Details.File|Video.Details.File]]''
* ''[[#Audio.Details.Media|Audio.Details.Media]]''
<br />
'''Properties:'''
* [ ''string'' comment = "" ]
* [ ''[[#Library.Id|Library.Id]]'' tvshowid = -1 ]
* [ ''[[#Array.String|Array.String]]'' set ]
* [ ''string'' lyrics = "" ]
* [ ''string'' albumartist = "" ]
* [ ''integer'' duration = 0 ]
* [ ''[[#Array.Integer|Array.Integer]]'' setid ]
* [ ''[[#Library.Id|Library.Id]]'' id = -1 ]
* [ ''string'' album = "" ]
* [ ''string'' votes = "" ]
* [ ''string'' mpaa = "" ]
* [ ''string'' writer = "" ]
* [ ''[[#Library.Id|Library.Id]]'' albumid = -1 ]
* [ ''string'' type = "unknown" ]
* [ ''string'' plotoutline = "" ]
* [ ''integer'' track = 0 ]
* [ ''integer'' season = 0 ]
* [ ''string'' musicbrainztrackid = "" ]
* [ ''string'' imdbnumber = "" ]
* [ ''string'' studio = "" ]
* [ ''string'' showlink = "" ]
* [ ''string'' showtitle = "" ]
* [ ''integer'' episode = 0 ]
* [ ''string'' musicbrainzartistid = "" ]
* [ ''string'' productioncode = "" ]
* [ ''string'' country = "" ]
* [ ''string'' premiered = "" ]
* [ ''string'' originaltitle = "" ]
* [ ''[[#Video.Cast|Video.Cast]]'' cast ]
* [ ''[[#Library.Id|Library.Id]]'' artistid = -1 ]
* [ ''string'' firstaired = "" ]
* [ ''string'' tagline = "" ]
* [ ''integer'' top250 = 0 ]
* [ ''string'' trailer = "" ]
{{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"
  ],
  "id": "List.Item.All",  
  "properties": {
    "comment": {
      "default": "",
      "type": "string"
    },
    "tvshowid": {
      "default": -1,
      "$ref": "Library.Id"
    },  
    "set": {
      "$ref": "Array.String"
    },  
    "lyrics": {
      "default": "",  
      "type": "string"
    },  
    "albumartist": {
      "default": "",
      "type": "string"
    },
    "duration": {
      "default": 0,
      "type": "integer"
    },  
    "setid": {
      "$ref": "Array.Integer"
    },
    "id": {
      "default": -1,
      "$ref": "Library.Id"
    },  
    "album": {
      "default": "",  
      "type": "string"
    },
    "votes": {
      "default": "",  
      "type": "string"
    },
    "mpaa": {
      "default": "",  
      "type": "string"
    },
    "writer": {
      "default": "",  
      "type": "string"
    },  
    "albumid": {
      "default": -1,
      "$ref": "Library.Id"
    },
    "type": {
      "default": "unknown",
      "enums": [
        "unknown",
        "movie",
        "episode",
        "musicvideo",
        "song",
        "picture"
      ],  
      "type": "string"
    },  
    "plotoutline": {
      "default": "",  
      "type": "string"
    },  
    "track": {
      "default": 0,
      "type": "integer"
    },  
    "season": {
      "default": 0,  
      "type": "integer"
    },
    "musicbrainztrackid": {
      "default": "",
      "type": "string"
    },  
    "imdbnumber": {
      "default": "",
      "type": "string"
    },
    "studio": {
      "default": "",  
      "type": "string"
    },
    "showlink": {
      "default": "",  
      "type": "string"
    },  
    "showtitle": {
      "default": "",  
      "type": "string"
    },  
    "episode": {
      "default": 0,
      "type": "integer"
    },
    "musicbrainzartistid": {
      "default": "",  
      "type": "string"
    },
    "productioncode": {
      "default": "",  
      "type": "string"
    },
    "country": {
      "default": "",  
      "type": "string"
    },
    "premiered": {
      "default": "",  
      "type": "string"
    },
    "originaltitle": {
      "default": "",
      "type": "string"
    },  
    "cast": {
      "$ref": "Video.Cast"
    },  
    "artistid": {
      "default": -1,  
      "$ref": "Library.Id"
    },  
    "firstaired": {
      "default": "",  
      "type": "string"
    },  
    "tagline": {
      "default": "",  
      "type": "string"
    },  
    "top250": {
      "default": 0,
      "type": "integer"
    },
    "trailer": {
      "default": "",
      "type": "string"
     }
     }
}
  }
</syntaxhighlight>
}</syntaxhighlight>}}
===VideoLibrary.GetGenres===
 
Retrieve all genres
==== List.Item.File ====
====Permissions====
'''Extends:'''
ReadData
* ''[[#List.Item.All|List.Item.All]]''
====Syntax====
<br />
<syntaxhighlight lang="javascript">
'''Properties:'''
{
* ''string'' filetype
    'jsonrpc': '2.0',
* ''string'' file
    'method': 'VideoLibrary.GetGenres',
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight lang="javascript" enclose="div">{
    'id': undefined /* integer, required */,
  "extends": "List.Item.All",  
    'params': {
  "id": "List.Item.File",  
        'type': undefined /* string, required */,
  "properties": {
        'properties': [ /* id: Library.Fields.Genre */
    "filetype": {
            undefined /* string */
      "enums": [
        ],  
        "file",  
        'limits': { /* id: List.Limits, no additional properties allowed */
        "directory"
            'end': -1 /* integer, minimum: 0, The number of items in the list being returned */,  
      ],  
            'start': 0 /* integer, minimum: 0 */
      "type": "string",  
        },  
      "required": true
        'sort': { /* id: List.Sort */
    },  
            'ignorearticle': false /* boolean */,
    "file": {
            'method': 'none' /* string */,  
      "required": true,  
            'order': 'ascending' /* string */
      "type": "string"
        }
     }
     }
}
  }
</syntaxhighlight>
}</syntaxhighlight>}}
====Returns====
 
<syntaxhighlight lang="javascript">
==== List.Items.Sources ====
{
'''Type:''' ''array''{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight lang="javascript" enclose="div">{
    'jsonrpc': '2.0',
  "items": {
    'method': 'VideoLibrary.GetGenres',
    "extends": "Item.Details.Base",  
    'id': undefined /* integer, required */,
    "properties": {
    'result': {
      "file": {
        'genres': [ /* array, required */
         "required": true,  
            { /* id: Library.Details.Genre */
        "type": "string"
                'genreid': -1 /* integer, required, id: Library.Id, minimum: 1 */,  
      }
                'thumbnail': '' /* string */,
                'title': '' /* string */,
                'label': undefined /* string, required */
            }
         ],
        'limits': { /* required, id: List.LimitsReturned, no additional properties allowed */
            'end': -1 /* integer, minimum: 0 */,
            'start': 0 /* integer, minimum: 0 */,
            'total': undefined /* integer, required, minimum: 0 */
        }
     }
     }
}
  },
</syntaxhighlight>
  "type": "array",
===VideoLibrary.GetMovieDetails===
  "id": "List.Items.Sources"
Retrieve details about a specific movie
}</syntaxhighlight>}}
====Permissions====
 
ReadData
==== List.Limits ====
====Syntax====
'''Type:''' ''object''<br />
<syntaxhighlight lang="javascript">
'''Properties:'''
{
* [ ''integer'' start = 0 ]
     'jsonrpc': '2.0',  
* [ ''integer'' end = -1 ]
    'method': 'VideoLibrary.GetMovieDetails',  
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight lang="javascript" enclose="div">{
    'id': undefined /* integer, required */,  
  "additionalProperties": false,
     'params': {
  "type": "object",
        'movieid': -1 /* integer, required, id: Library.Id, minimum: 1 */,  
  "id": "List.Limits",
        'properties': [ /* id: Video.Fields.Movie */
  "properties": {
            undefined /* string, Requesting the cast, set, showling and/or resume field will result in increased response times */
     "start": {
        ]
      "default": 0,  
      "minimum": 0,  
      "type": "integer"
    },  
     "end": {
      "default": -1,  
      "minimum": 0,  
      "type": "integer"
     }
     }
}
  }
</syntaxhighlight>
}</syntaxhighlight>}}
====Returns====
 
<syntaxhighlight lang="javascript">
==== List.LimitsReturned ====
{
'''Type:''' ''object''<br />
    'jsonrpc': '2.0',
'''Properties:'''
    'method': 'VideoLibrary.GetMovieDetails',
* [ ''integer'' start = 0 ]
    'id': undefined /* integer, required */,
* ''integer'' total
    'result': {
* [ ''integer'' end = -1 ]
        'moviedetails': { /* id: Video.Details.Movie */
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight lang="javascript" enclose="div">{
            'cast': [ /* array, id: Video.Cast */
  "additionalProperties": false,  
                { /* no additional properties allowed */
  "type": "object",  
                    'name': undefined /* string, required */,
  "id": "List.LimitsReturned",  
                    'role': undefined /* string, required */,
  "properties": {
                    'thumbnail': '' /* string */
    "start": {
                }
      "default": 0,  
            ],
      "minimum": 0,  
            'country': '' /* string */,
      "type": "integer"
            'genre': '' /* string */,
    },  
            'imdbnumber': '' /* string */,
    "total": {
            'movieid': -1 /* integer, required, id: Library.Id, minimum: 1 */,
      "minimum": 0,  
            'mpaa': '' /* string */,
      "type": "integer",  
            'originaltitle': '' /* string */,
      "required": true
            'plotoutline': '' /* string */,
    },  
            'premiered': '' /* string */,
    "end": {
            'productioncode': '' /* string */,  
      "default": -1,  
            'rating': 0 /* number */,  
      "minimum": 0,  
            'set': [ /* array, id: Array.String */
      "type": "integer"
                undefined /* string, minimum length: 1 */
            ],
            'setid': [ /* array, id: Array.Integer */
                undefined /* integer */
            ],
            'showlink': '' /* string */,
            'sorttitle': '' /* string */,
            'studio': '' /* string */,
            'tagline': '' /* string */,
            'top250': 0 /* integer */,  
            'trailer': '' /* string */,
            'votes': '' /* string */,
            'writer': '' /* string */,
            'year': 0 /* integer */,
            'director': '' /* string */,
            'resume': { /* id: Video.Resume, no additional properties allowed */
                'position': 0 /* number, minimum: 0 */,  
                'total': 0 /* number, minimum: 0 */
            },  
            'runtime': '' /* string */,
            'streamdetails': { /* id: Video.Streams, no additional properties allowed */
                'audio': [ /* array, minimum items: 1 */
                    { /* no additional properties allowed */
                        'channels': 0 /* integer */,  
                        'codec': '' /* string */,  
                        'language': '' /* string */
                    }
                ],  
                'subtitle': [ /* array, minimum items: 1 */
                    { /* no additional properties allowed */
                        'language': '' /* string */
                    }
                ],  
                'video': [ /* array, minimum items: 1 */
                    { /* no additional properties allowed */
                        'aspect': 0 /* number */,  
                        'codec': '' /* string */,
                        'duration': 0 /* integer */,
                        'height': 0 /* integer */,
                        'width': 0 /* integer */
                    }
                ]
            },
            'dateadded': '' /* string */,
            'file': '' /* string */,
            'lastplayed': '' /* string */,
            'plot': '' /* string */,
            'title': '' /* string */,
            'playcount': 0 /* integer */,
            'fanart': '' /* string */,
            'thumbnail': '' /* string */,
            'label': undefined /* string, required */
        }
     }
     }
}
  }
</syntaxhighlight>
}</syntaxhighlight>}}
===VideoLibrary.GetMovieSetDetails===
 
Retrieve details about a specific movie set
==== List.Sort ====
====Permissions====
'''Type:''' ''object''<br />
ReadData
'''Properties:'''
====Syntax====
* [ ''string'' order = "ascending" ]
<syntaxhighlight lang="javascript">
* [ ''boolean'' ignorearticle = False ]
{
* [ ''string'' method = "none" ]
    'jsonrpc': '2.0',  
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight lang="javascript" enclose="div">{
     'method': 'VideoLibrary.GetMovieSetDetails',  
  "type": "object",
    'id': undefined /* integer, required */,  
  "id": "List.Sort",  
     'params': {
  "properties": {
        'setid': -1 /* integer, required, id: Library.Id, minimum: 1 */,  
     "order": {
         'properties': [ /* id: Video.Fields.MovieSet */
      "default": "ascending",  
            undefined /* string */
      "enums": [
         ],  
        "ascending",
         'movies': {
        "descending"
            'limits': { /* id: List.Limits, no additional properties allowed */
      ],  
                'end': -1 /* integer, minimum: 0, The number of items in the list being returned */,  
      "type": "string"
                'start': 0 /* integer, minimum: 0 */
    },  
            },  
     "ignorearticle": {
            'properties': [ /* id: Video.Fields.Movie */
      "default": false,  
                undefined /* string, Requesting the cast, set, showling and/or resume field will result in increased response times */
      "type": "boolean"
            ],  
    },  
            'sort': { /* id: List.Sort */
    "method": {
                'ignorearticle': false /* boolean */,  
      "default": "none",  
                'method': 'none' /* string */,  
      "enums": [
                'order': 'ascending' /* string */
        "none",
            }
        "label",
         }
        "date",
        "size",
        "file",
        "drivetype",
        "track",  
         "duration",
        "title",
         "artist",  
         "album",
        "genre",  
        "year",  
        "videorating",  
        "programcount",  
        "playlist",  
        "episode",  
        "videotitle",
        "sorttitle",  
        "productioncode",  
        "songrating",  
        "mpaarating",  
        "videoruntime",
        "studio",  
        "fullpath",  
        "lastplayed",
        "unsorted",
         "max"
      ],
      "type": "string"
     }
     }
}
  }
</syntaxhighlight>
}</syntaxhighlight>}}
====Returns====
 
<syntaxhighlight lang="javascript">
=== Media ===
{
==== Media.Details.Base ====
    'jsonrpc': '2.0',
'''Extends:'''
    'method': 'VideoLibrary.GetMovieSetDetails',
* ''[[#Item.Details.Base|Item.Details.Base]]''
    'id': undefined /* integer, required */,
<br />
    'result': {
'''Properties:'''
        'setdetails': { /* id: Video.Details.MovieSet.Extended */
* [ ''string'' fanart = "" ]
            'movies': [ /* array */
* [ ''string'' thumbnail = "" ]
                { /* id: Video.Details.Movie */
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight lang="javascript" enclose="div">{
                    'cast': [ /* array, id: Video.Cast */
  "extends": "Item.Details.Base",  
                        { /* no additional properties allowed */
  "id": "Media.Details.Base",  
                            'name': undefined /* string, required */,
  "properties": {
                            'role': undefined /* string, required */,
    "fanart": {
                            'thumbnail': '' /* string */
      "default": "",  
                        }
      "type": "string"
                    ],
    },  
                    'country': '' /* string */,
    "thumbnail": {
                    'genre': '' /* string */,
      "default": "",  
                    'imdbnumber': '' /* string */,
      "type": "string"
                    'movieid': -1 /* integer, required, id: Library.Id, minimum: 1 */,
                    'mpaa': '' /* string */,
                    'originaltitle': '' /* string */,
                    'plotoutline': '' /* string */,
                    'premiered': '' /* string */,
                    'productioncode': '' /* string */,
                    'rating': 0 /* number */,
                    'set': [ /* array, id: Array.String */
                        undefined /* string, minimum length: 1 */
                    ],
                    'setid': [ /* array, id: Array.Integer */
                        undefined /* integer */
                    ],  
                    'showlink': '' /* string */,
                    'sorttitle': '' /* string */,
                    'studio': '' /* string */,
                    'tagline': '' /* string */,
                    'top250': 0 /* integer */,
                    'trailer': '' /* string */,
                    'votes': '' /* string */,
                    'writer': '' /* string */,
                    'year': 0 /* integer */,
                    'director': '' /* string */,
                    'resume': { /* id: Video.Resume, no additional properties allowed */
                        'position': 0 /* number, minimum: 0 */,
                        'total': 0 /* number, minimum: 0 */
                    },
                    'runtime': '' /* string */,
                    'streamdetails': { /* id: Video.Streams, no additional properties allowed */
                        'audio': [ /* array, minimum items: 1 */
                            { /* no additional properties allowed */
                                'channels': 0 /* integer */,
                                'codec': '' /* string */,
                                'language': '' /* string */
                            }
                        ],
                        'subtitle': [ /* array, minimum items: 1 */
                            { /* no additional properties allowed */
                                'language': '' /* string */
                            }
                        ],
                        'video': [ /* array, minimum items: 1 */
                            { /* no additional properties allowed */
                                'aspect': 0 /* number */,  
                                'codec': '' /* string */,
                                'duration': 0 /* integer */,
                                'height': 0 /* integer */,
                                'width': 0 /* integer */
                            }
                        ]
                    },  
                    'dateadded': '' /* string */,
                    'file': '' /* string */,
                    'lastplayed': '' /* string */,
                    'plot': '' /* string */,
                    'title': '' /* string */,
                    'playcount': 0 /* integer */,
                    'fanart': '' /* string */,
                    'thumbnail': '' /* string */,
                    'label': undefined /* string, required */
                }
            ],
            'setid': -1 /* integer, required, id: Library.Id, minimum: 1 */,
            'title': '' /* string */,
            'playcount': 0 /* integer */,
            'fanart': '' /* string */,
            'thumbnail': '' /* string */,
            'label': undefined /* string, required */
        }
     }
     }
}
  }
</syntaxhighlight>
}</syntaxhighlight>}}
===VideoLibrary.GetMovieSets===
 
Retrieve all movie sets
=== Optional ===
====Permissions====
==== Optional.Boolean ====
ReadData
'''Type:''' ''mixed''{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight lang="javascript" enclose="div">{
====Syntax====
  "default": null,  
<syntaxhighlight lang="javascript">
  "type": [
{
     {
    'jsonrpc': '2.0',  
      "type": "null"
    'method': 'VideoLibrary.GetMovieSets',
    },  
     'id': undefined /* integer, required */,
    {
    'params': {
      "type": "boolean"
        'properties': [ /* id: Video.Fields.MovieSet */
            undefined /* string */
        ],
        'limits': { /* id: List.Limits, no additional properties allowed */
            'end': -1 /* integer, minimum: 0, The number of items in the list being returned */,
            'start': 0 /* integer, minimum: 0 */
        },  
        'sort': { /* id: List.Sort */
            'ignorearticle': false /* boolean */,
            'method': 'none' /* string */,
            'order': 'ascending' /* string */
        }
     }
     }
}
  ],
</syntaxhighlight>
  "id": "Optional.Boolean"
====Returns====
}</syntaxhighlight>}}
<syntaxhighlight lang="javascript">
 
{
=== Player ===
    'jsonrpc': '2.0',
==== Player.Audio.Stream ====
    'method': 'VideoLibrary.GetMovieSets',
'''Type:''' ''object''<br />
    'id': undefined /* integer, required */,
'''Properties:'''
    'result': {
* ''integer'' index
        'limits': { /* required, id: List.LimitsReturned, no additional properties allowed */
* ''string'' name
            'end': -1 /* integer, minimum: 0 */,  
* ''string'' language
            'start': 0 /* integer, minimum: 0 */,  
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight lang="javascript" enclose="div">{
            'total': undefined /* integer, required, minimum: 0 */
  "type": "object",  
        },  
  "id": "Player.Audio.Stream",  
        'sets': [ /* array */
  "properties": {
            { /* id: Video.Details.MovieSet */
    "index": {
                'setid': -1 /* integer, required, id: Library.Id, minimum: 1 */,  
      "minimum": 0,  
                'title': '' /* string */,
      "type": "integer",  
                'playcount': 0 /* integer */,  
      "required": true
                'fanart': '' /* string */,
    },  
                'thumbnail': '' /* string */,  
    "name": {
                'label': undefined /* string, required */
      "required": true,  
            }
      "type": "string"
        ]
    },  
    "language": {
      "required": true,  
      "type": "string"
     }
     }
}
  }
</syntaxhighlight>
}</syntaxhighlight>}}
===VideoLibrary.GetMovies===
 
Retrieve all movies
==== Player.Audio.Stream.Extended ====
====Permissions====
'''Extends:'''
ReadData
* ''[[#Player.Audio.Stream|Player.Audio.Stream]]''
====Syntax====
<br />
<syntaxhighlight lang="javascript">
'''Properties:'''
{
* ''integer'' channels
    'jsonrpc': '2.0',
* ''string'' codec
    'method': 'VideoLibrary.GetMovies',
* ''integer'' bitrate
    'id': undefined /* integer, required */,
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight lang="javascript" enclose="div">{
    'params': {
  "extends": "Player.Audio.Stream",  
        'properties': [ /* id: Video.Fields.Movie */
  "id": "Player.Audio.Stream.Extended",  
            undefined /* string, Requesting the cast, set, showling and/or resume field will result in increased response times */
  "properties": {
        ],
    "channels": {
        'limits': { /* id: List.Limits, no additional properties allowed */
      "required": true,  
            'end': -1 /* integer, minimum: 0, The number of items in the list being returned */,  
      "type": "integer"
            'start': 0 /* integer, minimum: 0 */
    },  
        },  
    "codec": {
        'sort': { /* id: List.Sort */
      "required": true,  
            'ignorearticle': false /* boolean */,  
      "type": "string"
            'method': 'none' /* string */,  
    },  
            'order': 'ascending' /* string */
    "bitrate": {
        }
      "required": true,
      "type": "integer"
     }
     }
}
  }
</syntaxhighlight>
}</syntaxhighlight>}}
====Returns====
 
<syntaxhighlight lang="javascript">
==== Player.Id ====
{
'''Type:''' ''integer''{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight lang="javascript" enclose="div">{
    'jsonrpc': '2.0',
  "default": -1,  
    'method': 'VideoLibrary.GetMovies',
  "minimum": 0,  
    'id': undefined /* integer, required */,
  "type": "integer",  
    'result': {
  "id": "Player.Id",  
        'limits': { /* required, id: List.LimitsReturned, no additional properties allowed */
  "maximum": 2
            'end': -1 /* integer, minimum: 0 */,  
}</syntaxhighlight>}}
            'start': 0 /* integer, minimum: 0 */,  
 
            'total': undefined /* integer, required, minimum: 0 */
==== Player.Notifications.Data ====
        },  
'''Type:''' ''object''<br />
        'movies': [ /* array */
'''Properties:'''
            { /* id: Video.Details.Movie */
* ''[[#Player.Notifications.Item|Player.Notifications.Item]]'' item
                'cast': [ /* array, id: Video.Cast */
* ''[[#Player.Notifications.Player|Player.Notifications.Player]]'' player
                    { /* no additional properties allowed */
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight lang="javascript" enclose="div">{
                        'name': undefined /* string, required */,
  "type": "object",  
                        'role': undefined /* string, required */,
  "id": "Player.Notifications.Data",  
                        'thumbnail': '' /* string */
  "properties": {
                    }
    "item": {
                ],
      "required": true,  
                'country': '' /* string */,
      "$ref": "Player.Notifications.Item"
                'genre': '' /* string */,
    },  
                'imdbnumber': '' /* string */,
    "player": {
                'movieid': -1 /* integer, required, id: Library.Id, minimum: 1 */,
      "required": true,  
                'mpaa': '' /* string */,
      "$ref": "Player.Notifications.Player"
                'originaltitle': '' /* string */,
                'plotoutline': '' /* string */,
                'premiered': '' /* string */,
                'productioncode': '' /* string */,
                'rating': 0 /* number */,
                'set': [ /* array, id: Array.String */
                    undefined /* string, minimum length: 1 */
                ],
                'setid': [ /* array, id: Array.Integer */
                    undefined /* integer */
                ],
                'showlink': '' /* string */,
                'sorttitle': '' /* string */,
                'studio': '' /* string */,
                'tagline': '' /* string */,
                'top250': 0 /* integer */,
                'trailer': '' /* string */,
                'votes': '' /* string */,
                'writer': '' /* string */,  
                'year': 0 /* integer */,
                'director': '' /* string */,
                'resume': { /* id: Video.Resume, no additional properties allowed */
                    'position': 0 /* number, minimum: 0 */,
                    'total': 0 /* number, minimum: 0 */
                },
                'runtime': '' /* string */,
                'streamdetails': { /* id: Video.Streams, no additional properties allowed */
                    'audio': [ /* array, minimum items: 1 */
                        { /* no additional properties allowed */
                            'channels': 0 /* integer */,
                            'codec': '' /* string */,
                            'language': '' /* string */
                        }
                    ],
                    'subtitle': [ /* array, minimum items: 1 */
                        { /* no additional properties allowed */
                            'language': '' /* string */
                        }
                    ],
                    'video': [ /* array, minimum items: 1 */
                        { /* no additional properties allowed */
                            'aspect': 0 /* number */,  
                            'codec': '' /* string */,
                            'duration': 0 /* integer */,
                            'height': 0 /* integer */,
                            'width': 0 /* integer */
                        }
                    ]
                },  
                'dateadded': '' /* string */,
                'file': '' /* string */,  
                'lastplayed': '' /* string */,
                'plot': '' /* string */,
                'title': '' /* string */,
                'playcount': 0 /* integer */,
                'fanart': '' /* string */,
                'thumbnail': '' /* string */,
                'label': undefined /* string, required */
            }
        ]
     }
     }
}
  }
</syntaxhighlight>
}</syntaxhighlight>}}
===VideoLibrary.GetMusicVideoDetails===
 
Retrieve details about a specific music video
==== Player.Notifications.Item ====
====Permissions====
'''Type:''' ''mixed''{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight lang="javascript" enclose="div">{
ReadData
  "type": [
====Syntax====
     {
<syntaxhighlight lang="javascript">
      "type": "object",  
{
      "description": "An unknown item does not have any additional information.",  
    'jsonrpc': '2.0',
      "properties": {
    'method': 'VideoLibrary.GetMusicVideoDetails',
        "type": {
    'id': undefined /* integer, required */,
          "required": true,  
    'params': {
          "$ref": "Player.Notifications.Item.Type"
        'musicvideoid': -1 /* integer, required, id: Library.Id, minimum: 1 */,
        'properties': [ /* id: Video.Fields.MusicVideo */
            undefined /* string, Requesting the resume field will result in increased response times */
        ]
    }
}
</syntaxhighlight>
====Returns====
<syntaxhighlight lang="javascript">
{
    'jsonrpc': '2.0',
    'method': 'VideoLibrary.GetMusicVideoDetails',
     'id': undefined /* integer, required */,
    'result': {
        'musicvideodetails': { /* id: Video.Details.MusicVideo */
            'album': '' /* string */,  
            'artist': '' /* string */,
            'genre': '' /* string */,
            'musicvideoid': -1 /* integer, required, id: Library.Id, minimum: 1 */,
            'studio': '' /* string */,
            'track': 0 /* integer */,
            'year': 0 /* integer */,
            'director': '' /* string */,
            'resume': { /* id: Video.Resume, no additional properties allowed */
                'position': 0 /* number, minimum: 0 */,
                'total': 0 /* number, minimum: 0 */
            },
            'runtime': '' /* string */,
            'streamdetails': { /* id: Video.Streams, no additional properties allowed */
                'audio': [ /* array, minimum items: 1 */
                    { /* no additional properties allowed */
                        'channels': 0 /* integer */,
                        'codec': '' /* string */,
                        'language': '' /* string */
                    }
                ],
                'subtitle': [ /* array, minimum items: 1 */
                    { /* no additional properties allowed */
                        'language': '' /* string */
                    }
                ],
                'video': [ /* array, minimum items: 1 */
                    { /* no additional properties allowed */
                        'aspect': 0 /* number */,  
                        'codec': '' /* string */,
                        'duration': 0 /* integer */,
                        'height': 0 /* integer */,
                        'width': 0 /* integer */
                    }
                ]
            },
            'dateadded': '' /* string */,
            'file': '' /* string */,
            'lastplayed': '' /* string */,
            'plot': '' /* string */,
            'title': '' /* string */,
            'playcount': 0 /* integer */,
            'fanart': '' /* string */,
            'thumbnail': '' /* string */,
            'label': undefined /* string, required */
         }
         }
    }
      }
}
    },
</syntaxhighlight>
    {
===VideoLibrary.GetMusicVideos===
      "type": "object",  
Retrieve all music videos
      "description": "An item known to the database has an identification.",  
====Permissions====
      "properties": {
ReadData
         "type": {
====Syntax====
          "required": true,  
<syntaxhighlight lang="javascript">
          "$ref": "Player.Notifications.Item.Type"
{
    'jsonrpc': '2.0',  
    'method': 'VideoLibrary.GetMusicVideos',  
    'id': undefined /* integer, required */,
    'params': {
         'artistid': -1 /* integer, id: Library.Id, minimum: 1 */,
        'albumid': -1 /* integer, id: Library.Id, minimum: 1 */,  
        'properties': [ /* id: Video.Fields.MusicVideo */
            undefined /* string, Requesting the resume field will result in increased response times */
        ],
        'limits': { /* id: List.Limits, no additional properties allowed */
            'end': -1 /* integer, minimum: 0, The number of items in the list being returned */,
            'start': 0 /* integer, minimum: 0 */
         },  
         },  
         'sort': { /* id: List.Sort */
         "id": {
            'ignorearticle': false /* boolean */,  
          "required": true,  
            'method': 'none' /* string */,
          "$ref": "Library.Id"
            'order': 'ascending' /* string */
         }
         }
    }
      }
}
    },
</syntaxhighlight>
    {
====Returns====
      "type": "object",  
<syntaxhighlight lang="javascript">
      "description": "A movie item has a title and may have a release year.",  
{
      "properties": {
    'jsonrpc': '2.0',  
         "year": {
    'method': 'VideoLibrary.GetMusicVideos',  
          "default": 0,  
    'id': undefined /* integer, required */,
          "type": "integer"
    'result': {
         'limits': { /* required, id: List.LimitsReturned, no additional properties allowed */
            'end': -1 /* integer, minimum: 0 */,  
            'start': 0 /* integer, minimum: 0 */,
            'total': undefined /* integer, required, minimum: 0 */
         },  
         },  
         'musicvideos': [ /* array */
         "type": {
            { /* id: Video.Details.MusicVideo */
          "required": true,  
                'album': '' /* string */,
          "$ref": "Player.Notifications.Item.Type"
                'artist': '' /* string */,
                'genre': '' /* string */,
                'musicvideoid': -1 /* integer, required, id: Library.Id, minimum: 1 */,  
                'studio': '' /* string */,
                'track': 0 /* integer */,
                'year': 0 /* integer */,
                'director': '' /* string */,
                'resume': { /* id: Video.Resume, no additional properties allowed */
                    'position': 0 /* number, minimum: 0 */,
                    'total': 0 /* number, minimum: 0 */
                },
                'runtime': '' /* string */,
                'streamdetails': { /* id: Video.Streams, no additional properties allowed */
                    'audio': [ /* array, minimum items: 1 */
                        { /* no additional properties allowed */
                            'channels': 0 /* integer */,
                            'codec': '' /* string */,
                            'language': '' /* string */
                        }
                    ],
                    'subtitle': [ /* array, minimum items: 1 */
                        { /* no additional properties allowed */
                            'language': '' /* string */
                        }
                    ],
                    'video': [ /* array, minimum items: 1 */
                        { /* no additional properties allowed */
                            'aspect': 0 /* number */,
                            'codec': '' /* string */,
                            'duration': 0 /* integer */,
                            'height': 0 /* integer */,
                            'width': 0 /* integer */
                        }
                    ]
                },
                'dateadded': '' /* string */,
                'file': '' /* string */,
                'lastplayed': '' /* string */,
                'plot': '' /* string */,
                'title': '' /* string */,
                'playcount': 0 /* integer */,
                'fanart': '' /* string */,
                'thumbnail': '' /* string */,
                'label': undefined /* string, required */
            }
        ]
    }
}
</syntaxhighlight>
===VideoLibrary.GetRecentlyAddedEpisodes===
Retrieve all recently added tv episodes
====Permissions====
ReadData
====Syntax====
<syntaxhighlight lang="javascript">
{
    'jsonrpc': '2.0',
    'method': 'VideoLibrary.GetRecentlyAddedEpisodes',
    'id': undefined /* integer, required */,
    'params': {
        'properties': [ /* id: Video.Fields.Episode */
            undefined /* string, Requesting the cast and/or resume field will result in increased response times */
        ],
        'limits': { /* id: List.Limits, no additional properties allowed */
            'end': -1 /* integer, minimum: 0, The number of items in the list being returned */,
            'start': 0 /* integer, minimum: 0 */
         },  
         },  
         'sort': { /* id: List.Sort */
         "title": {
            'ignorearticle': false /* boolean */,
          "required": true,  
            'method': 'none' /* string */,  
          "type": "string"
            'order': 'ascending' /* string */
         }
         }
    }
      }
}
    },  
</syntaxhighlight>
     {
====Returns====
      "type": "object",  
<syntaxhighlight lang="javascript">
      "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": {
    'jsonrpc': '2.0',
        "season": {
    'method': 'VideoLibrary.GetRecentlyAddedEpisodes',  
          "default": 0,  
     'id': undefined /* integer, required */,
          "type": "integer"
    'result': {
        },  
        'episodes': [ /* array */
        "type": {
            { /* id: Video.Details.Episode */
          "required": true,  
                'cast': [ /* array, id: Video.Cast */
          "$ref": "Player.Notifications.Item.Type"
                    { /* no additional properties allowed */
        },  
                        'name': undefined /* string, required */,
        "episode": {
                        'role': undefined /* string, required */,
          "default": 0,  
                        'thumbnail': '' /* string */
          "type": "integer"
                    }
        },  
                ],
        "showtitle": {
                'episode': 0 /* integer */,
          "default": "",  
                'episodeid': -1 /* integer, required, id: Library.Id, minimum: 1 */,
          "type": "string"
                'firstaired': '' /* string */,
        },  
                'originaltitle': '' /* string */,
         "title": {
                'productioncode': '' /* string */,
          "required": true,  
                'rating': 0 /* number */,  
          "type": "string"
                'season': 0 /* integer */,
                'showtitle': '' /* string */,
                'tvshowid': -1 /* integer, id: Library.Id, minimum: 1 */,  
                'votes': '' /* string */,
                'writer': '' /* string */,
                'director': '' /* string */,
                'resume': { /* id: Video.Resume, no additional properties allowed */
                    'position': 0 /* number, minimum: 0 */,  
                    'total': 0 /* number, minimum: 0 */
                },  
                'runtime': '' /* string */,
                'streamdetails': { /* id: Video.Streams, no additional properties allowed */
                    'audio': [ /* array, minimum items: 1 */
                        { /* no additional properties allowed */
                            'channels': 0 /* integer */,
                            'codec': '' /* string */,
                            'language': '' /* string */
                        }
                    ],  
                    'subtitle': [ /* array, minimum items: 1 */
                        { /* no additional properties allowed */
                            'language': '' /* string */
                        }
                    ],
                    'video': [ /* array, minimum items: 1 */
                        { /* no additional properties allowed */
                            'aspect': 0 /* number */,  
                            'codec': '' /* string */,
                            'duration': 0 /* integer */,
                            'height': 0 /* integer */,
                            'width': 0 /* integer */
                        }
                    ]
                },  
                'dateadded': '' /* string */,
                'file': '' /* string */,  
                'lastplayed': '' /* string */,
                'plot': '' /* string */,
                'title': '' /* string */,
                'playcount': 0 /* integer */,
                'fanart': '' /* string */,
                'thumbnail': '' /* string */,
                'label': undefined /* string, required */
            }
        ],  
         'limits': { /* required, id: List.LimitsReturned, no additional properties allowed */
            'end': -1 /* integer, minimum: 0 */,
            'start': 0 /* integer, minimum: 0 */,
            'total': undefined /* integer, required, minimum: 0 */
         }
         }
    }
      }
}
    },
</syntaxhighlight>
    {
===VideoLibrary.GetRecentlyAddedMovies===
      "type": "object",  
Retrieve all recently added movies
      "description": "A music video has a title and may have an album and an artist.",  
====Permissions====
      "properties": {
ReadData
        "album": {
====Syntax====
          "default": "",
<syntaxhighlight lang="javascript">
          "type": "string"
{
         },  
    'jsonrpc': '2.0',  
         "title": {
    'method': 'VideoLibrary.GetRecentlyAddedMovies',  
          "required": true,  
    'id': undefined /* integer, required */,
          "type": "string"
    'params': {
        },  
        'properties': [ /* id: Video.Fields.Movie */
        "type": {
            undefined /* string, Requesting the cast, set, showling and/or resume field will result in increased response times */
          "required": true,  
         ],  
          "$ref": "Player.Notifications.Item.Type"
         'limits': { /* id: List.Limits, no additional properties allowed */
            'end': -1 /* integer, minimum: 0, The number of items in the list being returned */,
            'start': 0 /* integer, minimum: 0 */
         },  
         },  
         'sort': { /* id: List.Sort */
         "artist": {
            'ignorearticle': false /* boolean */,
          "default": "",  
            'method': 'none' /* string */,  
          "type": "string"
            'order': 'ascending' /* string */
         }
         }
    }
      }
}
    },
</syntaxhighlight>
    {
====Returns====
      "type": "object",  
<syntaxhighlight lang="javascript">
      "description": "A song has a title and may have an album, an artist and a track number.",  
{
      "properties": {
    'jsonrpc': '2.0',  
        "album": {
    'method': 'VideoLibrary.GetRecentlyAddedMovies',  
          "default": "",  
    'id': undefined /* integer, required */,
          "type": "string"
    'result': {
        },  
        'limits': { /* required, id: List.LimitsReturned, no additional properties allowed */
        "track": {
            'end': -1 /* integer, minimum: 0 */,  
          "default": 0,  
            'start': 0 /* integer, minimum: 0 */,
          "type": "integer"
            'total': undefined /* integer, required, minimum: 0 */
        },  
        "title": {
          "required": true,  
          "type": "string"
         },  
         },  
         'movies': [ /* array */
         "type": {
            { /* id: Video.Details.Movie */
          "required": true,  
                'cast': [ /* array, id: Video.Cast */
          "$ref": "Player.Notifications.Item.Type"
                    { /* no additional properties allowed */
                        'name': undefined /* string, required */,
                        'role': undefined /* string, required */,
                        'thumbnail': '' /* string */
                    }
                ],
                'country': '' /* string */,
                'genre': '' /* string */,
                'imdbnumber': '' /* string */,
                'movieid': -1 /* integer, required, id: Library.Id, minimum: 1 */,
                'mpaa': '' /* string */,
                'originaltitle': '' /* string */,  
                'plotoutline': '' /* string */,
                'premiered': '' /* string */,
                'productioncode': '' /* string */,
                'rating': 0 /* number */,
                'set': [ /* array, id: Array.String */
                    undefined /* string, minimum length: 1 */
                ],
                'setid': [ /* array, id: Array.Integer */
                    undefined /* integer */
                ],
                'showlink': '' /* string */,
                'sorttitle': '' /* string */,
                'studio': '' /* string */,
                'tagline': '' /* string */,
                'top250': 0 /* integer */,
                'trailer': '' /* string */,
                'votes': '' /* string */,
                'writer': '' /* string */,
                'year': 0 /* integer */,
                'director': '' /* string */,
                'resume': { /* id: Video.Resume, no additional properties allowed */
                    'position': 0 /* number, minimum: 0 */,
                    'total': 0 /* number, minimum: 0 */
                },
                'runtime': '' /* string */,
                'streamdetails': { /* id: Video.Streams, no additional properties allowed */
                    'audio': [ /* array, minimum items: 1 */
                        { /* no additional properties allowed */
                            'channels': 0 /* integer */,
                            'codec': '' /* string */,
                            'language': '' /* string */
                        }
                    ],
                    'subtitle': [ /* array, minimum items: 1 */
                        { /* no additional properties allowed */
                            'language': '' /* string */
                        }
                    ],
                    'video': [ /* array, minimum items: 1 */
                        { /* no additional properties allowed */
                            'aspect': 0 /* number */,
                            'codec': '' /* string */,
                            'duration': 0 /* integer */,
                            'height': 0 /* integer */,
                            'width': 0 /* integer */
                        }
                    ]
                },
                'dateadded': '' /* string */,
                'file': '' /* string */,
                'lastplayed': '' /* string */,
                'plot': '' /* string */,
                'title': '' /* string */,
                'playcount': 0 /* integer */,
                'fanart': '' /* string */,
                'thumbnail': '' /* string */,
                'label': undefined /* string, required */
            }
        ]
    }
}
</syntaxhighlight>
===VideoLibrary.GetRecentlyAddedMusicVideos===
Retrieve all recently added music videos
====Permissions====
ReadData
====Syntax====
<syntaxhighlight lang="javascript">
{
    'jsonrpc': '2.0',
    'method': 'VideoLibrary.GetRecentlyAddedMusicVideos',
    'id': undefined /* integer, required */,
    'params': {
        'properties': [ /* id: Video.Fields.MusicVideo */
            undefined /* string, Requesting the resume field will result in increased response times */
        ],
        'limits': { /* id: List.Limits, no additional properties allowed */
            'end': -1 /* integer, minimum: 0, The number of items in the list being returned */,
            'start': 0 /* integer, minimum: 0 */
         },  
         },  
         'sort': { /* id: List.Sort */
         "artist": {
            'ignorearticle': false /* boolean */,
          "default": "",  
            'method': 'none' /* string */,  
          "type": "string"
            'order': 'ascending' /* string */
         }
         }
      }
    }
  ],
  "id": "Player.Notifications.Item"
}</syntaxhighlight>}}
==== Player.Notifications.Item.Type ====
'''Type:''' ''string''{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight lang="javascript" enclose="div">{
  "default": "unknown",
  "enums": [
    "unknown",
    "movie",
    "episode",
    "musicvideo",
    "song"
  ],
  "type": "string",
  "id": "Player.Notifications.Item.Type"
}</syntaxhighlight>}}
==== Player.Notifications.Player ====
'''Type:''' ''object''<br />
'''Properties:'''
* ''[[#Player.Id|Player.Id]]'' playerid
* [ ''integer'' speed = 0 ]
{{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",
  "id": "Player.Notifications.Player",
  "properties": {
    "playerid": {
      "required": true,
      "$ref": "Player.Id"
    },
    "speed": {
      "default": 0,
      "type": "integer"
     }
     }
}
  }
</syntaxhighlight>
}</syntaxhighlight>}}
====Returns====
 
<syntaxhighlight lang="javascript">
==== Player.Notifications.Player.Seek ====
{
'''Extends:'''
    'jsonrpc': '2.0',
* ''[[#Player.Notifications.Player|Player.Notifications.Player]]''
    'method': 'VideoLibrary.GetRecentlyAddedMusicVideos',
<br />
    'id': undefined /* integer, required */,
'''Properties:'''
    'result': {
* [ ''[[#Global.Time|Global.Time]]'' seekoffset ]
        'limits': { /* required, id: List.LimitsReturned, no additional properties allowed */
* [ ''[[#Global.Time|Global.Time]]'' time ]
            'end': -1 /* integer, minimum: 0 */,
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight lang="javascript" enclose="div">{
            'start': 0 /* integer, minimum: 0 */,
  "extends": "Player.Notifications.Player",  
            'total': undefined /* integer, required, minimum: 0 */
  "id": "Player.Notifications.Player.Seek",  
        },
  "properties": {
        'musicvideos': [ /* array */
    "seekoffset": {
            { /* id: Video.Details.MusicVideo */
      "$ref": "Global.Time"
                'album': '' /* string */,
    },  
                'artist': '' /* string */,
    "time": {
                'genre': '' /* string */,
      "$ref": "Global.Time"
                'musicvideoid': -1 /* integer, required, id: Library.Id, minimum: 1 */,
                'studio': '' /* string */,
                'track': 0 /* integer */,
                'year': 0 /* integer */,
                'director': '' /* string */,
                'resume': { /* id: Video.Resume, no additional properties allowed */
                    'position': 0 /* number, minimum: 0 */,
                    'total': 0 /* number, minimum: 0 */
                },
                'runtime': '' /* string */,
                'streamdetails': { /* id: Video.Streams, no additional properties allowed */
                    'audio': [ /* array, minimum items: 1 */
                        { /* no additional properties allowed */
                            'channels': 0 /* integer */,
                            'codec': '' /* string */,
                            'language': '' /* string */
                        }
                    ],
                    'subtitle': [ /* array, minimum items: 1 */
                        { /* no additional properties allowed */
                            'language': '' /* string */
                        }
                    ],  
                    'video': [ /* array, minimum items: 1 */
                        { /* no additional properties allowed */
                            'aspect': 0 /* number */,
                            'codec': '' /* string */,
                            'duration': 0 /* integer */,
                            'height': 0 /* integer */,
                            'width': 0 /* integer */
                        }
                    ]
                },  
                'dateadded': '' /* string */,
                'file': '' /* string */,
                'lastplayed': '' /* string */,
                'plot': '' /* string */,
                'title': '' /* string */,
                'playcount': 0 /* integer */,
                'fanart': '' /* string */,
                'thumbnail': '' /* string */,
                'label': undefined /* string, required */
            }
        ]
     }
     }
}
  }
</syntaxhighlight>
}</syntaxhighlight>}}
===VideoLibrary.GetSeasons===
 
Retrieve all tv seasons
==== Player.Position.Percentage ====
====Permissions====
'''Type:''' ''number''{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight lang="javascript" enclose="div">{
ReadData
  "default": 0,
====Syntax====
  "minimum": 0,
<syntaxhighlight lang="javascript">
  "type": "number",
{
  "id": "Player.Position.Percentage",
     'jsonrpc': '2.0',
  "maximum": 100
    'method': 'VideoLibrary.GetSeasons',
}</syntaxhighlight>}}
    'id': undefined /* integer, required */,
 
    'params': {
==== Player.Property.Name ====
        'tvshowid': -1 /* integer, required, id: Library.Id, minimum: 1 */,
'''Type:''' ''string''{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight lang="javascript" enclose="div">{
        'properties': [ /* id: Video.Fields.Season */
  "default": "type",
            undefined /* string */
  "enums": [
        ],
    "type",
        'limits': { /* id: List.Limits, no additional properties allowed */
    "partymode",
            'end': -1 /* integer, minimum: 0, The number of items in the list being returned */,  
    "speed",
            'start': 0 /* integer, minimum: 0 */
    "time",
         },  
    "percentage",
        'sort': { /* id: List.Sort */
    "totaltime",
            'ignorearticle': false /* boolean */,  
    "playlistid",
            'method': 'none' /* string */,  
    "position",
            'order': 'ascending' /* string */
    "repeat",
         }
    "shuffled",
    "canseek",
    "canchangespeed",
    "canmove",
    "canzoom",
    "canrotate",
    "canshuffle",
    "canrepeat",
    "currentaudiostream",
    "audiostreams",
    "subtitleenabled",
    "currentsubtitle",
     "subtitles"
  ],
  "type": "string",
  "id": "Player.Property.Name"
}</syntaxhighlight>}}
 
==== Player.Property.Value ====
'''Type:''' ''object''<br />
'''Properties:'''
* [ ''boolean'' canrotate = False ]
* [ ''boolean'' canrepeat = False ]
* [ ''integer'' speed = 0 ]
* [ ''boolean'' canshuffle = False ]
* [ ''boolean'' shuffled = False ]
* [ ''boolean'' canmove = False ]
* [ ''boolean'' subtitleenabled = False ]
* [ ''[[#Player.Position.Percentage|Player.Position.Percentage]]'' percentage = 0 ]
* [ ''[[#Player.Type|Player.Type]]'' type = "video" ]
* [ ''[[#Player.Repeat|Player.Repeat]]'' repeat = "off" ]
* [ ''boolean'' canseek = False ]
* [ ''[[#Player.Subtitle|Player.Subtitle]]'' currentsubtitle ]
* [ ''[[#Player.Subtitle|Player.Subtitle]]''[] subtitles ]
* [ ''[[#Global.Time|Global.Time]]'' totaltime ]
* [ ''boolean'' canzoom = False ]
* [ ''[[#Player.Audio.Stream.Extended|Player.Audio.Stream.Extended]]'' currentaudiostream ]
* [ ''[[#Playlist.Id|Playlist.Id]]'' playlistid = -1 ]
* [ ''[[#Player.Audio.Stream.Extended|Player.Audio.Stream.Extended]]''[] audiostreams ]
* [ ''boolean'' partymode = False ]
* [ ''[[#Global.Time|Global.Time]]'' time ]
* [ ''[[#Playlist.Position|Playlist.Position]]'' position = -1 ]
* [ ''boolean'' canchangespeed = False ]
{{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",
  "id": "Player.Property.Value",  
  "properties": {
    "canrotate": {
      "default": false,
      "type": "boolean"
    },  
    "canrepeat": {
      "default": false,  
      "type": "boolean"
    },  
    "speed": {
      "default": 0,
      "type": "integer"
    },
    "canshuffle": {
      "default": false,
      "type": "boolean"
    },  
    "shuffled": {
      "default": false,
      "type": "boolean"
    },
    "canmove": {
      "default": false,
      "type": "boolean"
    },
    "subtitleenabled": {
      "default": false,
      "type": "boolean"
    },
    "percentage": {
      "default": 0,
      "$ref": "Player.Position.Percentage"
    },
    "type": {
      "default": "video",
      "$ref": "Player.Type"
    },
    "repeat": {
      "default": "off",
      "$ref": "Player.Repeat"
    },
    "canseek": {
      "default": false,
      "type": "boolean"
    },
    "currentsubtitle": {
      "$ref": "Player.Subtitle"
    },
    "subtitles": {
      "items": {
         "$ref": "Player.Subtitle"
      },  
      "type": "array"
    },
    "totaltime": {
      "$ref": "Global.Time"
    },
    "canzoom": {
      "default": false,
      "type": "boolean"
    },
    "currentaudiostream": {
      "$ref": "Player.Audio.Stream.Extended"
    },
    "playlistid": {
      "default": -1,  
      "$ref": "Playlist.Id"
    },  
    "audiostreams": {
      "items": {
         "$ref": "Player.Audio.Stream.Extended"
      },
      "type": "array"
    },
    "partymode": {
      "default": false,
      "type": "boolean"
    },
    "time": {
      "$ref": "Global.Time"
    },
    "position": {
      "default": -1,
      "$ref": "Playlist.Position"
    },
    "canchangespeed": {
      "default": false,
      "type": "boolean"
     }
     }
}
  }
</syntaxhighlight>
}</syntaxhighlight>}}
====Returns====
 
<syntaxhighlight lang="javascript">
==== Player.Repeat ====
{
'''Type:''' ''string''{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight lang="javascript" enclose="div">{
    'jsonrpc': '2.0',  
  "default": "off",  
     'method': 'VideoLibrary.GetSeasons',  
  "enums": [
     'id': undefined /* integer, required */,  
     "off",  
     'result': {
     "one",  
        'limits': { /* required, id: List.LimitsReturned, no additional properties allowed */
     "all"
            'end': -1 /* integer, minimum: 0 */,
  ],
            'start': 0 /* integer, minimum: 0 */,
  "type": "string",  
            'total': undefined /* integer, required, minimum: 0 */
  "id": "Player.Repeat"
        },
}</syntaxhighlight>}}
        'seasons': [ /* array */
 
            { /* id: Video.Details.Season */
==== Player.Speed ====
                'episode': 0 /* integer */,
'''Type:''' ''object''<br />
                'season': undefined /* integer, required */,
'''Properties:'''
                'showtitle': '' /* string */,
* [ ''integer'' speed = 0 ]
                'tvshowid': -1 /* integer, id: Library.Id, minimum: 1 */,  
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight lang="javascript" enclose="div">{
                'watchedepisodes': 0 /* integer */,  
  "required": true,  
                'playcount': 0 /* integer */,  
  "type": "object",  
                'fanart': '' /* string */,
  "id": "Player.Speed",  
                'thumbnail': '' /* string */,
  "properties": {
                'label': undefined /* string, required */
    "speed": {
            }
      "default": 0,  
        ]
      "type": "integer"
     }
     }
}
  }
</syntaxhighlight>
}</syntaxhighlight>}}
===VideoLibrary.GetTVShowDetails===
 
Retrieve details about a specific tv show
==== Player.Subtitle ====
====Permissions====
'''Type:''' ''object''<br />
ReadData
'''Properties:'''
====Syntax====
* ''integer'' index
<syntaxhighlight lang="javascript">
* ''string'' name
{
* ''string'' language
    'jsonrpc': '2.0',  
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight lang="javascript" enclose="div">{
     'method': 'VideoLibrary.GetTVShowDetails',  
  "type": "object",
    'id': undefined /* integer, required */,  
  "id": "Player.Subtitle",  
     'params': {
  "properties": {
        'tvshowid': -1 /* integer, required, id: Library.Id, minimum: 1 */,  
     "index": {
        'properties': [ /* id: Video.Fields.TVShow */
      "minimum": 0,  
            undefined /* string, Requesting the cast field will result in increased response times */
      "type": "integer",  
        ]
      "required": true
    },  
     "name": {
      "required": true,  
      "type": "string"
    },  
    "language": {
      "required": true,
      "type": "string"
     }
     }
}
  }
</syntaxhighlight>
}</syntaxhighlight>}}
====Returns====
 
<syntaxhighlight lang="javascript">
==== Player.Type ====
{
'''Type:''' ''string''{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight lang="javascript" enclose="div">{
     'jsonrpc': '2.0',
  "default": "video",
    'method': 'VideoLibrary.GetTVShowDetails',  
  "enums": [
    'id': undefined /* integer, required */,
    "video",
    'result': {
    "audio",
        'tvshowdetails': { /* id: Video.Details.TVShow */
     "picture"
            'cast': [ /* array, id: Video.Cast */
  ],
                { /* no additional properties allowed */
  "type": "string",
                    'name': undefined /* string, required */,  
  "id": "Player.Type"
                    'role': undefined /* string, required */,  
}</syntaxhighlight>}}
                    'thumbnail': '' /* string */
 
                }
=== Playlist ===
            ],  
==== Playlist.Id ====
            'episode': 0 /* integer */,  
'''Type:''' ''integer''{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight lang="javascript" enclose="div">{
            'episodeguide': '' /* string */,  
  "default": -1,
            'genre': '' /* string */,  
  "minimum": 0,  
            'imdbnumber': '' /* string */,  
  "type": "integer",
            'mpaa': '' /* string */,  
  "id": "Playlist.Id",  
            'originaltitle': '' /* string */,  
  "maximum": 2
            'premiered': '' /* string */,  
}</syntaxhighlight>}}
            'rating': 0 /* number */,  
 
            'season': 0 /* integer */,  
==== Playlist.Item ====
            'sorttitle': '' /* string */,  
'''Type:''' ''mixed''{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight lang="javascript" enclose="div">{
            'studio': '' /* string */,
  "type": [
            'tvshowid': -1 /* integer, required, id: Library.Id, minimum: 1 */,  
    {
            'votes': '' /* string */,  
      "additionalProperties": false,  
            'watchedepisodes': 0 /* integer */,  
      "type": "object",
            'year': 0 /* integer */,  
      "properties": {
            'dateadded': '' /* string */,  
        "file": {
            'file': '' /* string */,  
          "required": true,  
            'lastplayed': '' /* string */,  
          "type": "string",  
            'plot': '' /* string */,  
          "description": "Path to a file (not a directory) to be added to the playlist"
            'title': '' /* string */,  
        }
            'playcount': 0 /* integer */,  
      }
            'fanart': '' /* string */,  
    },  
            'thumbnail': '' /* string */,  
    {
            'label': undefined /* string, required */
      "additionalProperties": false,  
      "type": "object",  
      "properties": {
        "directory": {
          "required": true,  
          "type": "string"
        }
      }
    },  
    {
      "additionalProperties": false,  
      "type": "object",  
      "properties": {
        "movieid": {
          "required": true,  
          "$ref": "Library.Id"
        }
      }
    },  
    {
      "additionalProperties": false,  
      "type": "object",  
      "properties": {
        "episodeid": {
          "required": true,  
          "$ref": "Library.Id"
        }
      }
    },  
    {
      "additionalProperties": false,
      "type": "object",  
      "properties": {
        "musicvideoid": {
          "required": true,  
          "$ref": "Library.Id"
        }
      }
    },  
    {
      "additionalProperties": false,  
      "type": "object",  
      "properties": {
        "artistid": {
          "required": true,  
          "$ref": "Library.Id"
        }
      }
    },  
    {
      "additionalProperties": false,  
      "type": "object",  
      "properties": {
        "albumid": {
          "required": true,  
          "$ref": "Library.Id"
        }
      }
    },  
    {
      "additionalProperties": false,  
      "type": "object",  
      "properties": {
        "songid": {
          "required": true,
          "$ref": "Library.Id"
         }
         }
    }
      }
}
    },
</syntaxhighlight>
    {
===VideoLibrary.GetTVShows===
      "additionalProperties": false,  
Retrieve all tv shows
      "type": "object",  
====Permissions====
      "properties": {
ReadData
         "genreid": {
====Syntax====
          "required": true,  
<syntaxhighlight lang="javascript">
          "description": "Identification of a genre from the AudioLibrary",  
{
          "$ref": "Library.Id"
    'jsonrpc': '2.0',  
    'method': 'VideoLibrary.GetTVShows',  
    'id': undefined /* integer, required */,
    'params': {
         'properties': [ /* id: Video.Fields.TVShow */
            undefined /* string, Requesting the cast field will result in increased response times */
        ],
        'limits': { /* id: List.Limits, no additional properties allowed */
            'end': -1 /* integer, minimum: 0, The number of items in the list being returned */,  
            'start': 0 /* integer, minimum: 0 */
        },
        'sort': { /* id: List.Sort */
            'ignorearticle': false /* boolean */,
            'method': 'none' /* string */,
            'order': 'ascending' /* string */
         }
         }
      }
     }
     }
}
  ],
</syntaxhighlight>
  "id": "Playlist.Item"
====Returns====
}</syntaxhighlight>}}
<syntaxhighlight lang="javascript">
 
{
==== Playlist.Position ====
    'jsonrpc': '2.0',
'''Type:''' ''integer''{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight lang="javascript" enclose="div">{
    'method': 'VideoLibrary.GetTVShows',
  "default": -1,  
    'id': undefined /* integer, required */,
  "minimum": 0,  
    'result': {
  "type": "integer",  
        'limits': { /* required, id: List.LimitsReturned, no additional properties allowed */
  "id": "Playlist.Position"
            'end': -1 /* integer, minimum: 0 */,  
}</syntaxhighlight>}}
            'start': 0 /* integer, minimum: 0 */,
 
            'total': undefined /* integer, required, minimum: 0 */
==== Playlist.Property.Name ====
        },
'''Type:''' ''string''{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight lang="javascript" enclose="div">{
        'tvshows': [ /* array */
  "default": "type",  
            { /* id: Video.Details.TVShow */
  "enums": [
                'cast': [ /* array, id: Video.Cast */
    "type",  
                    { /* no additional properties allowed */
    "size"
                        'name': undefined /* string, required */,
  ],  
                        'role': undefined /* string, required */,
  "type": "string",  
                        'thumbnail': '' /* string */
  "id": "Playlist.Property.Name"
                    }
}</syntaxhighlight>}}
                ],  
 
                'episode': 0 /* integer */,  
==== Playlist.Property.Value ====
                'episodeguide': '' /* string */,  
'''Type:''' ''object''<br />
                'genre': '' /* string */,  
'''Properties:'''
                'imdbnumber': '' /* string */,
* [ ''[[#Playlist.Type|Playlist.Type]]'' type = "unknown" ]
                'mpaa': '' /* string */,
* [ ''integer'' size = 0 ]
                'originaltitle': '' /* string */,
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight lang="javascript" enclose="div">{
                'premiered': '' /* string */,
  "type": "object",  
                'rating': 0 /* number */,
  "id": "Playlist.Property.Value",  
                'season': 0 /* integer */,
  "properties": {
                'sorttitle': '' /* string */,
    "type": {
                'studio': '' /* string */,
      "default": "unknown",  
                'tvshowid': -1 /* integer, required, id: Library.Id, minimum: 1 */,
      "$ref": "Playlist.Type"
                'votes': '' /* string */,  
    },  
                'watchedepisodes': 0 /* integer */,  
    "size": {
                'year': 0 /* integer */,
      "default": 0,  
                'dateadded': '' /* string */,
      "minimum": 0,  
                'file': '' /* string */,  
      "type": "integer"
                'lastplayed': '' /* string */,
                'plot': '' /* string */,  
                'title': '' /* string */,
                'playcount': 0 /* integer */,  
                'fanart': '' /* string */,  
                'thumbnail': '' /* string */,
                'label': undefined /* string, required */
            }
        ]
     }
     }
}
  }
</syntaxhighlight>
}</syntaxhighlight>}}
===VideoLibrary.RemoveEpisode===
 
Removes the given episode from the library
==== Playlist.Type ====
====Permissions====
'''Type:''' ''string''{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight lang="javascript" enclose="div">{
RemoveData
  "default": "unknown",
====Syntax====
  "enums": [
<syntaxhighlight lang="javascript">
    "unknown",
{
    "video",
     'jsonrpc': '2.0',
    "audio",
    'method': 'VideoLibrary.RemoveEpisode',
    "picture",
    'id': undefined /* integer, required */,
    "mixed"
    'params': {
  ],
        'episodeid': -1 /* integer, required, id: Library.Id, minimum: 1 */
  "type": "string",
  "id": "Playlist.Type"
}</syntaxhighlight>}}
 
=== System ===
==== System.Property.Name ====
'''Type:''' ''string''{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight lang="javascript" enclose="div">{
  "default": "canshutdown",
  "enums": [
    "canshutdown",
    "cansuspend",
    "canhibernate",
     "canreboot"
  ],
  "type": "string",
  "id": "System.Property.Name"
}</syntaxhighlight>}}
 
==== System.Property.Value ====
'''Type:''' ''object''<br />
'''Properties:'''
* [ ''boolean'' canreboot = False ]
* [ ''boolean'' cansuspend = False ]
* [ ''boolean'' canhibernate = False ]
* [ ''boolean'' canshutdown = False ]
{{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",  
  "id": "System.Property.Value",
  "properties": {
    "canreboot": {
      "default": false,
      "type": "boolean"
    },
    "cansuspend": {
      "default": false,
      "type": "boolean"
    },  
    "canhibernate": {
      "default": false,
      "type": "boolean"
    },
    "canshutdown": {
      "default": false,
      "type": "boolean"
     }
     }
}
  }
</syntaxhighlight>
}</syntaxhighlight>}}
====Returns====
 
<syntaxhighlight lang="javascript">
=== Video ===
{
==== Video.Cast ====
    'jsonrpc': '2.0',
'''Type:''' ''array''{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight lang="javascript" enclose="div">{
    'method': 'VideoLibrary.RemoveEpisode',
  "items": {
    'id': undefined /* integer, required */,
     "additionalProperties": false,  
    'result': undefined /* string */
     "type": "object",  
}
     "properties": {
</syntaxhighlight>
      "role": {
===VideoLibrary.RemoveMovie===
        "required": true,  
Removes the given movie from the library
        "type": "string"
====Permissions====
      },  
RemoveData
      "name": {
====Syntax====
         "required": true,  
<syntaxhighlight lang="javascript">
        "type": "string"
{
      },  
     'jsonrpc': '2.0',  
      "thumbnail": {
     'method': 'VideoLibrary.RemoveMovie',  
        "default": "",  
     'id': undefined /* integer, required */,  
        "type": "string"
    'params': {
      }
         'movieid': -1 /* integer, required, id: Library.Id, minimum: 1 */
     }
     }
}
  },
</syntaxhighlight>
  "type": "array",
====Returns====
  "id": "Video.Cast"
<syntaxhighlight lang="javascript">
}</syntaxhighlight>}}
{
 
    'jsonrpc': '2.0',
==== Video.Details.Base ====
    'method': 'VideoLibrary.RemoveMovie',
'''Extends:'''
    'id': undefined /* integer, required */,
* ''[[#Media.Details.Base|Media.Details.Base]]''
    'result': undefined /* string */
<br />
}
'''Properties:'''
</syntaxhighlight>
* [ ''integer'' playcount = 0 ]
===VideoLibrary.RemoveMusicVideo===
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight lang="javascript" enclose="div">{
Removes the given music video from the library
  "extends": "Media.Details.Base",  
====Permissions====
  "id": "Video.Details.Base",  
RemoveData
  "properties": {
====Syntax====
     "playcount": {
<syntaxhighlight lang="javascript">
      "default": 0,  
{
      "type": "integer"
    'jsonrpc': '2.0',  
    'method': 'VideoLibrary.RemoveMusicVideo',  
    'id': undefined /* integer, required */,
     'params': {
        'musicvideoid': -1 /* integer, required, id: Library.Id, minimum: 1 */
     }
     }
}
  }
</syntaxhighlight>
}</syntaxhighlight>}}
====Returns====
 
<syntaxhighlight lang="javascript">
==== Video.Details.Episode ====
{
'''Extends:'''
    'jsonrpc': '2.0',
* ''[[#Video.Details.File|Video.Details.File]]''
    'method': 'VideoLibrary.RemoveMusicVideo',
<br />
    'id': undefined /* integer, required */,
'''Properties:'''
    'result': undefined /* string */
* [ ''number'' rating = 0 ]
}
* [ ''[[#Library.Id|Library.Id]]'' tvshowid = -1 ]
</syntaxhighlight>
* [ ''string'' votes = "" ]
===VideoLibrary.RemoveTVShow===
* [ ''integer'' episode = 0 ]
Removes the given tv show from the library
* [ ''string'' productioncode = "" ]
====Permissions====
* [ ''integer'' season = 0 ]
RemoveData
* [ ''string'' writer = "" ]
====Syntax====
* ''[[#Library.Id|Library.Id]]'' episodeid
<syntaxhighlight lang="javascript">
* [ ''string'' originaltitle = "" ]
{
* [ ''[[#Video.Cast|Video.Cast]]'' cast ]
     'jsonrpc': '2.0',  
* [ ''string'' firstaired = "" ]
     'method': 'VideoLibrary.RemoveTVShow',  
* [ ''string'' showtitle = "" ]
     'id': undefined /* integer, required */,  
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight lang="javascript" enclose="div">{
     'params': {
  "extends": "Video.Details.File",
        'tvshowid': -1 /* integer, required, id: Library.Id, minimum: 1 */
  "id": "Video.Details.Episode",
  "properties": {
     "rating": {
      "default": 0,
      "type": "number"
    },  
     "tvshowid": {
      "default": -1,
      "$ref": "Library.Id"
    },
    "votes": {
      "default": "",
      "type": "string"
    },  
     "episode": {
      "default": 0,
      "type": "integer"
    },
    "productioncode": {
      "default": "",  
      "type": "string"
    },  
     "season": {
      "default": 0,
      "type": "integer"
    },  
    "writer": {
      "default": "",
      "type": "string"
    },
    "episodeid": {
      "required": true,  
      "$ref": "Library.Id"
    },
    "originaltitle": {
      "default": "",  
      "type": "string"
    },
    "cast": {
      "$ref": "Video.Cast"
    },
    "firstaired": {
      "default": "",
      "type": "string"
    },
    "showtitle": {
      "default": "",
      "type": "string"
     }
     }
}
  }
</syntaxhighlight>
}</syntaxhighlight>}}
====Returns====
 
<syntaxhighlight lang="javascript">
==== Video.Details.File ====
{
'''Extends:'''
    'jsonrpc': '2.0',
* ''[[#Video.Details.Item|Video.Details.Item]]''
    'method': 'VideoLibrary.RemoveTVShow',
<br />
    'id': undefined /* integer, required */,
'''Properties:'''
    'result': undefined /* string */
* [ ''string'' director = "" ]
}
* [ ''[[#Video.Streams|Video.Streams]]'' streamdetails ]
</syntaxhighlight>
* [ ''string'' runtime = "" ]
===VideoLibrary.Scan===
* [ ''[[#Video.Resume|Video.Resume]]'' resume ]
Scans the video sources for new library items
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight lang="javascript" enclose="div">{
====Permissions====
  "extends": "Video.Details.Item",
UpdateData
  "id": "Video.Details.File",
====Syntax====
  "properties": {
<syntaxhighlight lang="javascript">
     "director": {
{
      "default": "",
     'jsonrpc': '2.0',  
      "type": "string"
     'method': 'VideoLibrary.Scan',  
    },  
     'id': undefined /* integer, required */,  
     "streamdetails": {
     'params': {
      "$ref": "Video.Streams"
        'directory': '' /* string */
    },  
     "runtime": {
      "default": "",  
      "type": "string"
    },  
     "resume": {
      "$ref": "Video.Resume"
     }
     }
}
  }
</syntaxhighlight>
}</syntaxhighlight>}}
====Returns====
 
<syntaxhighlight lang="javascript">
==== Video.Details.Item ====
{
'''Extends:'''
    'jsonrpc': '2.0',
* ''[[#Video.Details.Media|Video.Details.Media]]''
    'method': 'VideoLibrary.Scan',
<br />
    'id': undefined /* integer, required */,
'''Properties:'''
    'result': undefined /* string */
* [ ''string'' plot = "" ]
}
* [ ''string'' lastplayed = "" ]
</syntaxhighlight>
* [ ''string'' file = "" ]
===VideoLibrary.SetEpisodeDetails===
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight lang="javascript" enclose="div">{
Update the given episode with the given details
  "extends": "Video.Details.Media",  
====Permissions====
  "id": "Video.Details.Item",
UpdateData
  "properties": {
====Syntax====
    "plot": {
<syntaxhighlight lang="javascript">
      "default": "",  
{
      "type": "string"
    'jsonrpc': '2.0',
    },  
    'method': 'VideoLibrary.SetEpisodeDetails',
    "lastplayed": {
    'id': undefined /* integer, required */,
      "default": "",  
    'params': {
      "type": "string"
        'episodeid': -1 /* integer, required, id: Library.Id, minimum: 1 */,
    },  
        'title': undefined /* null */ or undefined /* string */,
    "file": {
        'playcount': undefined /* null */ or undefined /* integer, minimum: 0 */,
      "default": "",  
        'runtime': undefined /* null */ or undefined /* string */,  
      "type": "string"
        'director': undefined /* null */ or [ /* array, id: Array.String */
            undefined /* string, minimum length: 1 */
        ],
        'plot': undefined /* null */ or undefined /* string */,
        'rating': undefined /* null */ or undefined /* number, minimum: 2.2250738585072014e-308 */,  
        'votes': undefined /* null */ or undefined /* string */,  
        'lastplayed': undefined /* null */ or undefined /* string */,
        'writer': undefined /* null */ or [ /* array, id: Array.String */
            undefined /* string, minimum length: 1 */
        ],
        'firstaired': undefined /* null */ or undefined /* string */,
        'productioncode': undefined /* null */ or undefined /* string */,  
        'season': undefined /* null */ or undefined /* integer, minimum: 0 */,
        'episode': undefined /* null */ or undefined /* integer, minimum: 0 */,  
        'originaltitle': undefined /* null */ or undefined /* string */
     }
     }
}
  }
</syntaxhighlight>
}</syntaxhighlight>}}
====Returns====
 
<syntaxhighlight lang="javascript">
==== Video.Details.Media ====
{
'''Extends:'''
    'jsonrpc': '2.0',
* ''[[#Video.Details.Base|Video.Details.Base]]''
    'method': 'VideoLibrary.SetEpisodeDetails',
<br />
    'id': undefined /* integer, required */,
'''Properties:'''
    'result': undefined /* string */
* [ ''string'' title = "" ]
}
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight lang="javascript" enclose="div">{
</syntaxhighlight>
  "extends": "Video.Details.Base",  
===VideoLibrary.SetMovieDetails===
  "id": "Video.Details.Media",  
Update the given movie with the given details
  "properties": {
====Permissions====
    "title": {
UpdateData
      "default": "",  
====Syntax====
      "type": "string"
<syntaxhighlight lang="javascript">
{
    'jsonrpc': '2.0',
    'method': 'VideoLibrary.SetMovieDetails',
    'id': undefined /* integer, required */,
    'params': {
        'movieid': -1 /* integer, required, id: Library.Id, minimum: 1 */,
        'title': undefined /* null */ or undefined /* string */,
        'playcount': undefined /* null */ or undefined /* integer, minimum: 0 */,
        'runtime': undefined /* null */ or undefined /* string */,
        'director': undefined /* null */ or [ /* array, id: Array.String */
            undefined /* string, minimum length: 1 */
        ],
        'studio': undefined /* null */ or [ /* array, id: Array.String */
            undefined /* string, minimum length: 1 */
        ],
        'year': undefined /* null */ or undefined /* integer, minimum: 0 */,
        'plot': undefined /* null */ or undefined /* string */,
        'genre': undefined /* null */ or [ /* array, id: Array.String */
            undefined /* string, minimum length: 1 */
        ],
        'rating': undefined /* null */ or undefined /* number, minimum: 2.2250738585072014e-308 */,
        'mpaa': undefined /* null */ or undefined /* string */,
        'imdbnumber': undefined /* null */ or undefined /* string */,
        'votes': undefined /* null */ or undefined /* string */,  
        'lastplayed': undefined /* null */ or undefined /* string */,
        'originaltitle': undefined /* null */ or undefined /* string */,
        'trailer': undefined /* null */ or undefined /* string */,
        'tagline': undefined /* null */ or undefined /* string */,
        'plotoutline': undefined /* null */ or undefined /* string */,
        'writer': undefined /* null */ or [ /* array, id: Array.String */
            undefined /* string, minimum length: 1 */
        ],
        'country': undefined /* null */ or [ /* array, id: Array.String */
            undefined /* string, minimum length: 1 */
        ],
        'top250': undefined /* null */ or undefined /* integer, minimum: 0 */,
        'sorttitle': undefined /* null */ or undefined /* string */,
        'set': undefined /* null */ or [ /* array, id: Array.String */
            undefined /* string, minimum length: 1 */
        ],
        'showlink': undefined /* null */ or [ /* array, id: Array.String */
            undefined /* string, minimum length: 1 */
        ]
     }
     }
}
  }
</syntaxhighlight>
}</syntaxhighlight>}}
====Returns====
 
<syntaxhighlight lang="javascript">
==== Video.Details.Movie ====
{
'''Extends:'''
    'jsonrpc': '2.0',
* ''[[#Video.Details.File|Video.Details.File]]''
    'method': 'VideoLibrary.SetMovieDetails',
<br />
    'id': undefined /* integer, required */,
'''Properties:'''
    'result': undefined /* string */
* [ ''number'' rating = 0 ]
}
* [ ''[[#Array.String|Array.String]]'' set ]
</syntaxhighlight>
* [ ''integer'' year = 0 ]
===VideoLibrary.SetMusicVideoDetails===
* [ ''[[#Array.Integer|Array.Integer]]'' setid ]
Update the given music video with the given details
* [ ''string'' votes = "" ]
====Permissions====
* [ ''string'' tagline = "" ]
UpdateData
* [ ''string'' writer = "" ]
====Syntax====
* [ ''string'' plotoutline = "" ]
<syntaxhighlight lang="javascript">
* [ ''string'' sorttitle = "" ]
{
* [ ''string'' imdbnumber = "" ]
     'jsonrpc': '2.0',  
* [ ''string'' studio = "" ]
     'method': 'VideoLibrary.SetMusicVideoDetails',  
* [ ''string'' showlink = "" ]
     'id': undefined /* integer, required */,  
* [ ''string'' genre = "" ]
     'params': {
* ''[[#Library.Id|Library.Id]]'' movieid
        'musicvideoid': -1 /* integer, required, id: Library.Id, minimum: 1 */,  
* [ ''string'' productioncode = "" ]
        'title': undefined /* null */ or undefined /* string */,  
* [ ''string'' country = "" ]
        'playcount': undefined /* null */ or undefined /* integer, minimum: 0 */,  
* [ ''string'' premiered = "" ]
        'runtime': undefined /* null */ or undefined /* string */,  
* [ ''string'' originaltitle = "" ]
        'director': undefined /* null */ or [ /* array, id: Array.String */
* [ ''[[#Video.Cast|Video.Cast]]'' cast ]
            undefined /* string, minimum length: 1 */
* [ ''string'' mpaa = "" ]
        ],  
* [ ''integer'' top250 = 0 ]
        'studio': undefined /* null */ or [ /* array, id: Array.String */
* [ ''string'' trailer = "" ]
            undefined /* string, minimum length: 1 */
* [ ''array''  streamdetails = "" ]
        ],  
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight lang="javascript" enclose="div">{
        'year': undefined /* null */ or undefined /* integer, minimum: 0 */,  
  "extends": "Video.Details.File",
        'plot': undefined /* null */ or undefined /* string */,  
  "id": "Video.Details.Movie",
        'album': undefined /* null */ or undefined /* string */,  
  "properties": {
        'artist': undefined /* null */ or [ /* array, id: Array.String */
     "rating": {
            undefined /* string, minimum length: 1 */
      "default": 0,
        ],  
      "type": "number"
        'genre': undefined /* null */ or [ /* array, id: Array.String */
    },  
            undefined /* string, minimum length: 1 */
     "set": {
        ],  
      "$ref": "Array.String"
        'track': undefined /* null */ or undefined /* integer, minimum: 0 */,  
    },  
        'lastplayed': undefined /* null */ or undefined /* string */
     "year": {
      "default": 0,
      "type": "integer"
    },  
    "setid": {
      "$ref": "Array.Integer"
    },  
     "votes": {
      "default": "",
      "type": "string"
    },  
    "tagline": {
      "default": "",  
      "type": "string"
    },  
    "writer": {
      "default": "",  
      "type": "string"
    },
    "plotoutline": {
      "default": "",  
      "type": "string"
    },  
    "sorttitle": {
      "default": "",  
      "type": "string"
    },
    "imdbnumber": {
      "default": "",  
      "type": "string"
    },  
    "studio": {
      "default": "",
      "type": "string"
    },  
    "showlink": {
      "default": "",  
      "type": "string"
    },  
    "genre": {
      "default": "",
      "type": "string"
    },  
    "movieid": {
      "required": true,  
      "$ref": "Library.Id"
    },  
    "productioncode": {
      "default": "",  
      "type": "string"
    },
    "country": {
      "default": "",  
      "type": "string"
    },  
    "premiered": {
      "default": "",  
      "type": "string"
    },  
    "originaltitle": {
      "default": "",  
      "type": "string"
    },  
    "cast": {
      "$ref": "Video.Cast"
    },
    "mpaa": {
      "default": "",
      "type": "string"
    },  
    "top250": {
      "default": 0,  
      "type": "integer"
    },  
    "trailer": {
      "default": "",  
      "type": "string"
     }
     }
}
  }
</syntaxhighlight>
}</syntaxhighlight>}}
====Returns====
 
<syntaxhighlight lang="javascript">
==== Video.Details.MovieSet ====
{
'''Extends:'''
    'jsonrpc': '2.0',
* ''[[#Video.Details.Media|Video.Details.Media]]''
    'method': 'VideoLibrary.SetMusicVideoDetails',
<br />
    'id': undefined /* integer, required */,
'''Properties:'''
    'result': undefined /* string */
* ''[[#Library.Id|Library.Id]]'' setid
}
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight lang="javascript" enclose="div">{
</syntaxhighlight>
  "extends": "Video.Details.Media",  
===VideoLibrary.SetTVShowDetails===
  "id": "Video.Details.MovieSet",  
Update the given tvshow with the given details
  "properties": {
====Permissions====
    "setid": {
UpdateData
      "required": true,  
====Syntax====
      "$ref": "Library.Id"
<syntaxhighlight lang="javascript">
{
    'jsonrpc': '2.0',
    'method': 'VideoLibrary.SetTVShowDetails',
    'id': undefined /* integer, required */,
    'params': {
        'tvshowid': -1 /* integer, required, id: Library.Id, minimum: 1 */,
        'title': undefined /* null */ or undefined /* string */,
        'playcount': undefined /* null */ or undefined /* integer, minimum: 0 */,
        'studio': undefined /* null */ or [ /* array, id: Array.String */
            undefined /* string, minimum length: 1 */
        ],  
        'year': undefined /* null */ or undefined /* integer, minimum: 0 */,
        'plot': undefined /* null */ or undefined /* string */,
        'genre': undefined /* null */ or [ /* array, id: Array.String */
            undefined /* string, minimum length: 1 */
        ],
        'rating': undefined /* null */ or undefined /* number, minimum: 2.2250738585072014e-308 */,  
        'mpaa': undefined /* null */ or undefined /* string */,
        'imdbnumber': undefined /* null */ or undefined /* string */,
        'premiered': undefined /* null */ or undefined /* string */,  
        'votes': undefined /* null */ or undefined /* string */,
        'lastplayed': undefined /* null */ or undefined /* string */,
        'originaltitle': undefined /* null */ or undefined /* string */,
        'sorttitle': undefined /* null */ or undefined /* string */,
        'episodeguide': undefined /* null */ or undefined /* string */
     }
     }
}
  }
</syntaxhighlight>
}</syntaxhighlight>}}
====Returns====
 
<syntaxhighlight lang="javascript">
==== Video.Details.MovieSet.Extended ====
{
'''Extends:'''
    'jsonrpc': '2.0',
* ''[[#Video.Details.MovieSet|Video.Details.MovieSet]]''
    'method': 'VideoLibrary.SetTVShowDetails',
<br />
    'id': undefined /* integer, required */,
'''Properties:'''
    'result': undefined /* string */
* [ ''[[#Video.Details.Movie|Video.Details.Movie]]''[] movies ]
}
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight lang="javascript" enclose="div">{
</syntaxhighlight>
  "extends": "Video.Details.MovieSet",  
=Input=
  "id": "Video.Details.MovieSet.Extended",  
Allows limited navigation within XBMC
  "properties": {
==Methods==
     "movies": {
===Input.Back===
      "items": {
Goes back in GUI
        "$ref": "Video.Details.Movie"
====Permissions====
      },  
Navigate
      "type": "array"
====Syntax====
<syntaxhighlight lang="javascript">
{
    'jsonrpc': '2.0',
    'method': 'Input.Back',
    'id': undefined /* integer, required */
}
</syntaxhighlight>
====Returns====
<syntaxhighlight lang="javascript">
{
    'jsonrpc': '2.0',
    'method': 'Input.Back',
    'id': undefined /* integer, required */,
    'result': undefined /* string */
}
</syntaxhighlight>
===Input.ContextMenu===
Shows the context menu
====Permissions====
Navigate
====Syntax====
<syntaxhighlight lang="javascript">
{
    'jsonrpc': '2.0',
    'method': 'Input.ContextMenu',
    'id': undefined /* integer, required */
}
</syntaxhighlight>
====Returns====
<syntaxhighlight lang="javascript">
{
    'jsonrpc': '2.0',
    'method': 'Input.ContextMenu',
    'id': undefined /* integer, required */,
    'result': undefined /* string */
}
</syntaxhighlight>
===Input.Down===
Navigate down in GUI
====Permissions====
Navigate
====Syntax====
<syntaxhighlight lang="javascript">
{
    'jsonrpc': '2.0',
    'method': 'Input.Down',
    'id': undefined /* integer, required */
}
</syntaxhighlight>
====Returns====
<syntaxhighlight lang="javascript">
{
    'jsonrpc': '2.0',
    'method': 'Input.Down',
    'id': undefined /* integer, required */,
    'result': undefined /* string */
}
</syntaxhighlight>
===Input.Home===
Goes to home window in GUI
====Permissions====
Navigate
====Syntax====
<syntaxhighlight lang="javascript">
{
    'jsonrpc': '2.0',
    'method': 'Input.Home',
    'id': undefined /* integer, required */
}
</syntaxhighlight>
====Returns====
<syntaxhighlight lang="javascript">
{
    'jsonrpc': '2.0',
    'method': 'Input.Home',
    'id': undefined /* integer, required */,
    'result': undefined /* string */
}
</syntaxhighlight>
===Input.Info===
Shows the information dialog
====Permissions====
Navigate
====Syntax====
<syntaxhighlight lang="javascript">
{
    'jsonrpc': '2.0',
    'method': 'Input.Info',
    'id': undefined /* integer, required */
}
</syntaxhighlight>
====Returns====
<syntaxhighlight lang="javascript">
{
    'jsonrpc': '2.0',
    'method': 'Input.Info',  
    'id': undefined /* integer, required */,
    'result': undefined /* string */
}
</syntaxhighlight>
===Input.Left===
Navigate left in GUI
====Permissions====
Navigate
====Syntax====
<syntaxhighlight lang="javascript">
{
    'jsonrpc': '2.0',
    'method': 'Input.Left',
    'id': undefined /* integer, required */
}
</syntaxhighlight>
====Returns====
<syntaxhighlight lang="javascript">
{
    'jsonrpc': '2.0',
    'method': 'Input.Left',
    'id': undefined /* integer, required */,
    'result': undefined /* string */
}
</syntaxhighlight>
===Input.Right===
Navigate right in GUI
====Permissions====
Navigate
====Syntax====
<syntaxhighlight lang="javascript">
{
    'jsonrpc': '2.0',
    'method': 'Input.Right',
    'id': undefined /* integer, required */
}
</syntaxhighlight>
====Returns====
<syntaxhighlight lang="javascript">
{
     'jsonrpc': '2.0',
    'method': 'Input.Right',
    'id': undefined /* integer, required */,
    'result': undefined /* string */
}
</syntaxhighlight>
===Input.Select===
Select current item in GUI
====Permissions====
Navigate
====Syntax====
<syntaxhighlight lang="javascript">
{
    'jsonrpc': '2.0',
    'method': 'Input.Select',
    'id': undefined /* integer, required */
}
</syntaxhighlight>
====Returns====
<syntaxhighlight lang="javascript">
{
    'jsonrpc': '2.0',
    'method': 'Input.Select',
    'id': undefined /* integer, required */,
    'result': undefined /* string */
}
</syntaxhighlight>
===Input.Up===
Navigate up in GUI
====Permissions====
Navigate
====Syntax====
<syntaxhighlight lang="javascript">
{
    'jsonrpc': '2.0',
    'method': 'Input.Up',
    'id': undefined /* integer, required */
}
</syntaxhighlight>
====Returns====
<syntaxhighlight lang="javascript">
{
    'jsonrpc': '2.0',
    'method': 'Input.Up',
    'id': undefined /* integer, required */,
    'result': undefined /* string */
}
</syntaxhighlight>
=Application=
Application information and control
==Notifications==
===Application.OnVolumeChanged===
The volume of the application has changed.
====Returns====
<syntaxhighlight lang="javascript">
{
    'jsonrpc': '2.0',
    'method': 'Application.OnVolumeChanged',
    'params': undefined /* string, required */ or { /* required */
        'muted': undefined /* boolean, required */,
        'volume': undefined /* integer, required, minimum: 0, maximum: 100 */
     }
     }
}
  }
</syntaxhighlight>
}</syntaxhighlight>}}
==Methods==
 
===Application.GetProperties===
==== Video.Details.MusicVideo ====
Retrieves the values of the given properties
'''Extends:'''
====Permissions====
* ''[[#Video.Details.File|Video.Details.File]]''
ReadData
<br />
====Syntax====
'''Properties:'''
<syntaxhighlight lang="javascript">
* [ ''string'' album = "" ]
{
* [ ''string'' artist = "" ]
     'jsonrpc': '2.0',  
* [ ''integer'' track = 0 ]
     'method': 'Application.GetProperties',  
* [ ''string'' studio = "" ]
     'id': undefined /* integer, required */,  
* [ ''integer'' year = 0 ]
     'params': {
* [ ''string'' genre = "" ]
        'properties': [ /* array, required, all items must be unique */
* ''[[#Library.Id|Library.Id]]'' musicvideoid
            'volume' /* string, id: Application.Property.Name */
{{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",
  "id": "Video.Details.MusicVideo",
  "properties": {
     "album": {
      "default": "",
      "type": "string"
    },  
     "artist": {
      "default": "",
      "type": "string"
    },  
     "track": {
      "default": 0,
      "type": "integer"
    },
    "studio": {
      "default": "",  
      "type": "string"
    },  
     "year": {
      "default": 0,
      "type": "integer"
    },  
    "genre": {
      "default": "",  
      "type": "string"
    },  
    "musicvideoid": {
      "required": true,
      "$ref": "Library.Id"
     }
     }
}
  }
</syntaxhighlight>
}</syntaxhighlight>}}
====Returns====
 
<syntaxhighlight lang="javascript">
==== Video.Details.Season ====
{
'''Extends:'''
    'jsonrpc': '2.0',
* ''[[#Video.Details.Base|Video.Details.Base]]''
    'method': 'Application.GetProperties',
<br />
    'id': undefined /* integer, required */,
'''Properties:'''
    'result': { /* id: Application.Property.Value */
* ''integer'' season
        'muted': false /* boolean */,
* [ ''[[#Library.Id|Library.Id]]'' tvshowid = -1 ]
        'name': '' /* string, minimum length: 1 */,  
* [ ''integer'' episode = 0 ]
        'version': {
* [ ''string'' showtitle = "" ]
            'major': undefined /* integer, required, minimum: 0 */,  
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight lang="javascript" enclose="div">{
            'minor': undefined /* integer, required, minimum: 0 */,  
  "extends": "Video.Details.Base",  
            'revision': undefined /* string */ or undefined /* integer, minimum: 0 */,  
  "id": "Video.Details.Season",  
            'tag': undefined /* string, required */
  "properties": {
        },  
    "season": {
        'volume': 0 /* integer, minimum: 0, maximum: 100 */
      "required": true,  
      "type": "integer"
    },  
    "tvshowid": {
      "default": -1,  
      "$ref": "Library.Id"
    },  
    "episode": {
      "default": 0,  
      "type": "integer"
    },  
    "showtitle": {
      "default": "",  
      "type": "string"
     }
     }
}
  }
</syntaxhighlight>
}</syntaxhighlight>}}
===Application.Quit===
 
Quit application
==== Video.Details.TVShow ====
====Permissions====
'''Extends:'''
ControlPower
* ''[[#Video.Details.Item|Video.Details.Item]]''
====Syntax====
<br />
<syntaxhighlight lang="javascript">
'''Properties:'''
{
* [ ''string'' episodeguide = "" ]
     'jsonrpc': '2.0',  
* ''[[#Library.Id|Library.Id]]'' tvshowid
     'method': 'Application.Quit',  
* [ ''integer'' episode = 0 ]
     'id': undefined /* integer, required */
* [ ''string'' imdbnumber = "" ]
}
* [ ''number'' rating = 0 ]
</syntaxhighlight>
* [ ''string'' mpaa = "" ]
====Returns====
* [ ''integer'' year = 0 ]
<syntaxhighlight lang="javascript">
* [ ''string'' votes = "" ]
{
* [ ''string'' premiered = "" ]
    'jsonrpc': '2.0',  
* [ ''string'' originaltitle = "" ]
     'method': 'Application.Quit',  
* [ ''[[#Video.Cast|Video.Cast]]'' cast ]
     'id': undefined /* integer, required */,  
* [ ''string'' studio = "" ]
    'result': undefined /* string */
* [ ''string'' sorttitle = "" ]
}
* [ ''string'' genre = "" ]
</syntaxhighlight>
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight lang="javascript" enclose="div">{
===Application.SetMute===
  "extends": "Video.Details.Item",
Toggle mute/unmute
  "id": "Video.Details.TVShow",
====Permissions====
  "properties": {
ControlPlayback
     "episodeguide": {
====Syntax====
      "default": "",
<syntaxhighlight lang="javascript">
      "type": "string"
{
    },  
    'jsonrpc': '2.0',  
     "tvshowid": {
     'method': 'Application.SetMute',  
      "required": true,
     'id': undefined /* integer, required */,  
      "$ref": "Library.Id"
     'params': {
    },  
        'mute': undefined /* boolean */ or undefined /* string */
     "episode": {
      "default": 0,
      "type": "integer"
    },
    "imdbnumber": {
      "default": "",
      "type": "string"
    },
    "rating": {
      "default": 0,
      "type": "number"
    },  
     "mpaa": {
      "default": "",
      "type": "string"
    },  
     "year": {
      "default": 0,
      "type": "integer"
    },  
    "votes": {
      "default": "",  
      "type": "string"
    },
    "premiered": {
      "default": "",
      "type": "string"
    },
    "originaltitle": {
      "default": "",
      "type": "string"
    },
    "cast": {
      "$ref": "Video.Cast"
    },  
     "studio": {
      "default": "",
      "type": "string"
    },  
     "sorttitle": {
      "default": "",  
      "type": "string"
    },  
     "genre": {
      "default": "",
      "type": "string"
     }
     }
}
  }
</syntaxhighlight>
}</syntaxhighlight>}}
====Returns====
 
<syntaxhighlight lang="javascript">
==== Video.Fields.Episode ====
{
'''Extends:'''
     'jsonrpc': '2.0',  
* ''[[#Item.Fields.Base|Item.Fields.Base]]''
     'method': 'Application.SetMute',  
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight lang="javascript" enclose="div">{
     'id': undefined /* integer, required */,  
  "items": {
     'result': undefined /* boolean, Mute state */
     "enums": [
}
      "title",
</syntaxhighlight>
      "plot",
===Application.SetVolume===
      "votes",
Set the current volume
      "rating",
====Permissions====
      "writer",
ControlPlayback
      "firstaired",
====Syntax====
      "playcount",
<syntaxhighlight lang="javascript">
      "runtime",
{
      "director",
     'jsonrpc': '2.0',
      "productioncode",
    'method': 'Application.SetVolume',
      "season",
    'id': undefined /* integer, required */,  
      "episode",
     'params': {
      "originaltitle",
        'volume': undefined /* integer, minimum: 0, maximum: 100 */ or 'increment' /* string, id: Global.IncrementDecrement */
      "showtitle",
      "cast",
      "streamdetails",
      "lastplayed",
      "fanart",
      "thumbnail",
      "file",
      "resume",
      "tvshowid"
    ],
    "type": "string",
    "description": "Requesting the cast and/or resume field will result in increased response times"
  },
  "extends": "Item.Fields.Base",
  "id": "Video.Fields.Episode"
}</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">{
  "items": {
    "enums": [
      "title",
      "genre",
      "year",
      "rating",
      "director",
      "trailer",
      "tagline",
      "plot",
      "plotoutline",
      "originaltitle",
      "lastplayed",
      "playcount",
      "writer",
      "studio",
      "mpaa",
      "cast",
      "country",
      "imdbnumber",
      "premiered",
      "productioncode",
      "runtime",
      "set",
      "showlink",
      "streamdetails",
      "top250",
      "votes",
      "fanart",
      "thumbnail",
      "file",
      "sorttitle",
      "resume",
      "setid"
    ],
    "type": "string",  
     "description": "Requesting the cast, set, showling and/or resume field will result in increased response times"
  },
  "extends": "Item.Fields.Base",
  "id": "Video.Fields.Movie"
}</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">{
  "items": {
    "enums": [
      "title",  
      "playcount",
      "fanart",
      "thumbnail"
     ],
    "type": "string"
  },
  "extends": "Item.Fields.Base",
  "id": "Video.Fields.MovieSet"
}</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">{
  "items": {
    "enums": [
      "title",
      "playcount",
      "runtime",
      "director",
      "studio",
      "year",
      "plot",
      "album",
      "artist",
      "genre",
      "track",
      "streamdetails",
      "lastplayed",
      "fanart",
      "thumbnail",
      "file",  
      "resume"
    ],
    "type": "string",  
     "description": "Requesting the resume field will result in increased response times"
  },
  "extends": "Item.Fields.Base",  
  "id": "Video.Fields.MusicVideo"
}</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">{
  "items": {
    "enums": [
      "season",
      "showtitle",
      "playcount",
      "episode",
      "fanart",
      "thumbnail",
      "tvshowid"
    ],
    "type": "string"
  },
  "extends": "Item.Fields.Base",
  "id": "Video.Fields.Season"
}</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">{
  "items": {
     "enums": [
      "title",
      "genre",
      "year",
      "rating",
      "plot",
      "studio",
      "mpaa",
      "cast",
      "playcount",
      "episode",
      "imdbnumber",
      "premiered",
      "votes",
      "lastplayed",
      "fanart",
      "thumbnail",
      "file",
      "originaltitle",
      "sorttitle",
      "episodeguide"
    ],
    "type": "string",
    "description": "Requesting the cast field will result in increased response times"
  },
  "extends": "Item.Fields.Base",
  "id": "Video.Fields.TVShow"
}</syntaxhighlight>}}
 
==== Video.Resume ====
'''Type:''' ''object''<br />
'''Properties:'''
* [ ''number'' position = 0 ]
* [ ''number'' total = 0 ]
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight lang="javascript" enclose="div">{
  "additionalProperties": false,
  "type": "object",  
  "id": "Video.Resume",  
  "properties": {
     "position": {
      "default": 0,  
      "minimum": 0,
      "type": "number"
    },
    "total": {
      "default": 0,  
      "minimum": 0,  
      "type": "number"
     }
     }
}
  }
</syntaxhighlight>
}</syntaxhighlight>}}
====Returns====
 
<syntaxhighlight lang="javascript">
==== Video.Streams ====
{
'''Type:''' ''object''<br />
    'jsonrpc': '2.0',
'''Properties:'''
    'method': 'Application.SetVolume',
* [ ''array''[1..X] video ]
    'id': undefined /* integer, required */,
* [ ''array''[1..X] audio ]
    'result': undefined /* integer, minimum: 0 */
* [ ''array''[1..X] subtitle ]
}
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight lang="javascript" enclose="div">{
</syntaxhighlight>
  "additionalProperties": false,  
=System=
  "type": "object",  
System controls and information
  "id": "Video.Streams",  
==Notifications==
  "properties": {
===System.OnLowBattery===
    "video": {
The system is on low battery.
      "minItems": 1,
====Returns====
      "items": {
<syntaxhighlight lang="javascript">
        "additionalProperties": false,
{
        "type": "object",
    'jsonrpc': '2.0',
        "properties": {
    'method': 'System.OnLowBattery',
          "duration": {
    'params': undefined /* string, required */ or undefined /* null, required */
            "default": 0,  
}
            "type": "integer"
</syntaxhighlight>
          },
===System.OnQuit===
          "width": {
XBMC will be closed.
            "default": 0,
====Returns====
            "type": "integer"
<syntaxhighlight lang="javascript">
          },
{
          "codec": {
    'jsonrpc': '2.0',  
            "default": "",  
    'method': 'System.OnQuit',  
            "type": "string"
    'params': undefined /* string, required */ or undefined /* null, required */
          },
}
          "aspect": {
</syntaxhighlight>
            "default": 0,
===System.OnRestart===
            "type": "number"
The system will be restarted.
          },
====Returns====
          "height": {
<syntaxhighlight lang="javascript">
            "default": 0,  
{
            "type": "integer"
    'jsonrpc': '2.0',
          }
    'method': 'System.OnRestart',  
        }
    'params': undefined /* string, required */ or undefined /* null, required */
      },
}
      "type": "array"
</syntaxhighlight>
    },
===System.OnSleep===
    "audio": {
The system will be suspended.
      "minItems": 1,
====Returns====
      "items": {
<syntaxhighlight lang="javascript">
        "additionalProperties": false,
{
        "type": "object",
    'jsonrpc': '2.0',  
        "properties": {
    'method': 'System.OnSleep',
          "channels": {
    'params': undefined /* string, required */ or undefined /* null, required */
            "default": 0,  
}
            "type": "integer"
</syntaxhighlight>
          },
===System.OnWake===
          "codec": {
The system woke up from suspension.
            "default": "",  
====Returns====
            "type": "string"
<syntaxhighlight lang="javascript">
          },  
{
          "language": {
    'jsonrpc': '2.0',  
            "default": "",  
    'method': 'System.OnWake',
            "type": "string"
    'params': undefined /* string, required */ or undefined /* null, required */
          }
}
        }
</syntaxhighlight>
      },
==Methods==
      "type": "array"
===System.EjectOpticalDrive===
    },
Ejects or closes the optical disc drive (if available)
    "subtitle": {
====Permissions====
      "minItems": 1,
ControlSystem
      "items": {
====Syntax====
        "additionalProperties": false,  
<syntaxhighlight lang="javascript">
        "type": "object",  
{
        "properties": {
    'jsonrpc': '2.0',
          "language": {
    'method': 'System.EjectOpticalDrive',  
            "default": "",  
    'id': undefined /* integer, required */
             "type": "string"
}
          }
</syntaxhighlight>
        }
====Returns====
      },  
<syntaxhighlight lang="javascript">
      "type": "array"
{
    'jsonrpc': '2.0',  
    'method': 'System.EjectOpticalDrive',  
    'id': undefined /* integer, required */,  
    'result': undefined /* string */
}
</syntaxhighlight>
===System.GetProperties===
Retrieves the values of the given properties
====Permissions====
ReadData
====Syntax====
<syntaxhighlight lang="javascript">
{
    'jsonrpc': '2.0',  
    'method': 'System.GetProperties',  
    'id': undefined /* integer, required */,
    'params': {
        'properties': [ /* array, required, all items must be unique */
             'canshutdown' /* string, id: System.Property.Name */
        ]
     }
     }
}
  }
</syntaxhighlight>
}</syntaxhighlight>}}
====Returns====
 
<syntaxhighlight lang="javascript">
 
{
== Notifications ==
    'jsonrpc': '2.0',
=== AudioLibrary ===
    'method': 'System.GetProperties',
==== AudioLibrary.OnRemove ====
    'id': undefined /* integer, required */,  
An audio item has been removed.<br />
    'result': { /* id: System.Property.Value */
'''Parameters:'''
         'canhibernate': false /* boolean */,  
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
         'canreboot': false /* boolean */,  
# ''string'' sender
        'canshutdown': false /* boolean */,
# ''object'' data<br />
         'cansuspend': false /* boolean */
'''Properties:'''
* ''[[#Notifications.Library.Audio.Type|Notifications.Library.Audio.Type]]'' type
* ''[[#Library.Id|Library.Id]]'' id
 
</div>
 
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight lang="javascript" enclose="div">{
  "params": [
    {
      "required": true,
      "type": "string",
      "name": "sender"
    },  
    {
      "required": true,
      "type": "object",
      "name": "data",  
      "properties": {
        "type": {
          "required": true,
          "$ref": "Notifications.Library.Audio.Type"
         },  
         "id": {
          "required": true,  
          "$ref": "Library.Id"
         }
      }
     }
     }
}
  ],
</syntaxhighlight>
  "description": "An audio item has been removed."
===System.Hibernate===
}</syntaxhighlight>}}
Puts the system running XBMC into hibernate mode
 
====Permissions====
==== AudioLibrary.OnUpdate ====
ControlPower
An audio item has been updated.<br />
====Syntax====
'''Parameters:'''  
<syntaxhighlight lang="javascript">
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
{
# ''string'' sender
    'jsonrpc': '2.0',
# ''object'' data<br />
    'method': 'System.Hibernate',
'''Properties:'''
    'id': undefined /* integer, required */
* ''string'' type
}
* ''[[#Library.Id|Library.Id]]'' id
</syntaxhighlight>
 
====Returns====
</div>
<syntaxhighlight lang="javascript">
 
{
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight lang="javascript" enclose="div">{
    'jsonrpc': '2.0',
  "params": [
    'method': 'System.Hibernate',
     {
    'id': undefined /* integer, required */,
      "required": true,  
    'result': undefined /* string */
      "type": "string",  
}
      "name": "sender"
</syntaxhighlight>
     },  
===System.Reboot===
     {
Reboots the system running XBMC
      "required": true,  
====Permissions====
      "type": "object",  
ControlPower
      "name": "data",  
====Syntax====
      "properties": {
<syntaxhighlight lang="javascript">
        "type": {
{
          "enum": [
    'jsonrpc': '2.0',
            "song"
    'method': 'System.Reboot',
          ],
    'id': undefined /* integer, required */
          "type": "string",  
}
          "id": "Notifications.Library.Audio.Type",  
</syntaxhighlight>
          "required": true
====Returns====
        },
<syntaxhighlight lang="javascript">
        "id": {
{
          "required": true,  
    'jsonrpc': '2.0',
          "$ref": "Library.Id"
    'method': 'System.Reboot',
         }
    'id': undefined /* integer, required */,
      }
    'result': undefined /* string */
}
</syntaxhighlight>
===System.Shutdown===
Shuts the system running XBMC down
====Permissions====
ControlPower
====Syntax====
<syntaxhighlight lang="javascript">
{
    'jsonrpc': '2.0',
     'method': 'System.Shutdown',
    'id': undefined /* integer, required */
}
</syntaxhighlight>
====Returns====
<syntaxhighlight lang="javascript">
{
    'jsonrpc': '2.0',  
    'method': 'System.Shutdown',
     'id': undefined /* integer, required */,  
     'result': undefined /* string */
}
</syntaxhighlight>
===System.Suspend===
Suspends the system running XBMC
====Permissions====
ControlPower
====Syntax====
<syntaxhighlight lang="javascript">
{
    'jsonrpc': '2.0',  
    'method': 'System.Suspend',  
    'id': undefined /* integer, required */
}
</syntaxhighlight>
====Returns====
<syntaxhighlight lang="javascript">
{
    'jsonrpc': '2.0',  
    'method': 'System.Suspend',  
    'id': undefined /* integer, required */,
    'result': undefined /* string */
}
</syntaxhighlight>
=XBMC=
Dumping ground for very XBMC specific operations
==Methods==
===XBMC.GetInfoBooleans===
Retrieve info booleans about XBMC and the system
====Permissions====
ReadData
====Syntax====
<syntaxhighlight lang="javascript">
{
    'jsonrpc': '2.0',  
    'method': 'XBMC.GetInfoBooleans',
    'id': undefined /* integer, required */,
    'params': {
         'booleans': [ /* array, required, minimum items: 1 */
            undefined /* string */
        ]
     }
     }
}
  ],
</syntaxhighlight>
  "description": "An audio item has been updated."
====Returns====
}</syntaxhighlight>}}
<syntaxhighlight lang="javascript">
 
{
=== Player ===
    'jsonrpc': '2.0',  
==== Player.OnPause ====
    'method': 'XBMC.GetInfoBooleans',  
Playback of a media item has been paused. If there is no ID available extra information will be provided.<br />
     'id': undefined /* integer, required */,  
'''Parameters:'''
    'result': { /* List of key-value pairs of the retrieved info booleans */
<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">{
  "params": [
    {
      "required": true,  
      "type": "string",  
      "name": "sender"
     },  
    {
      "required": true,  
      "name": "data",
      "$ref": "Player.Notifications.Data"
     }
     }
}
  ],
</syntaxhighlight>
  "description": "Playback of a media item has been paused. If there is no ID available extra information will be provided."
===XBMC.GetInfoLabels===
}</syntaxhighlight>}}
Retrieve info labels about XBMC and the system
 
====Permissions====
==== Player.OnPlay ====
ReadData
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 />
====Syntax====
'''Parameters:'''
<syntaxhighlight lang="javascript">
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
{
# ''string'' sender
    'jsonrpc': '2.0',  
# ''[[#Player.Notifications.Data|Player.Notifications.Data]]'' data
    'method': 'XBMC.GetInfoLabels',  
</div>
     'id': undefined /* integer, required */,  
 
     'params': {
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight lang="javascript" enclose="div">{
        'labels': [ /* array, required, minimum items: 1, See http://wiki.xbmc.org/index.php?title=InfoLabels for a list of possible info labels */
  "params": [
            undefined /* string */
    {
        ]
      "required": true,  
      "type": "string",  
      "name": "sender"
     },  
     {
      "required": true,  
      "name": "data",  
      "$ref": "Player.Notifications.Data"
     }
     }
}
  ],
</syntaxhighlight>
  "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."
====Returns====
}</syntaxhighlight>}}
<syntaxhighlight lang="javascript">
 
{
==== Player.OnSeek ====
    'jsonrpc': '2.0',
The playback position has been changed. If there is no ID available extra information will be provided.<br />
    'method': 'XBMC.GetInfoLabels',
'''Parameters:'''
    'id': undefined /* integer, required */,  
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
    'result': { /* List of key-value pairs of the retrieved info labels */
# ''string'' sender
          
# ''object'' data<br />
'''Properties:'''
* [ ''[[#Player.Notifications.Item|Player.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">{
  "params": [
    {
      "required": true,
      "type": "string",
      "name": "sender"
    },  
    {
      "required": true,
      "type": "object",
      "name": "data",
      "properties": {
        "item": {
          "$ref": "Player.Notifications.Item"
        },  
        "player": {
          "required": true,
          "$ref": "Player.Notifications.Player.Seek"
         }
      }
     }
     }
}
  ],
</syntaxhighlight>
  "description": "The playback position has been changed. If there is no ID available extra information will be provided."
=GUI=
}</syntaxhighlight>}}
==Methods==
 
===GUI.GetProperties===
==== Player.OnSpeedChanged ====
Retrieves the values of the given properties
Speed of the playback of a media item has been changed. If there is no ID available extra information will be provided.<br />
====Permissions====
'''Parameters:'''
ReadData
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
====Syntax====
# ''string'' sender
<syntaxhighlight lang="javascript">
# ''[[#Player.Notifications.Data|Player.Notifications.Data]]'' data
{
</div>
    'jsonrpc': '2.0',  
 
    'method': 'GUI.GetProperties',  
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight lang="javascript" enclose="div">{
     'id': undefined /* integer, required */,  
  "params": [
     'params': {
    {
        'properties': [ /* array, required, all items must be unique */
      "required": true,  
            'currentwindow' /* string, id: GUI.Property.Name */
      "type": "string",  
        ]
      "name": "sender"
     },  
     {
      "required": true,  
      "name": "data",  
      "$ref": "Player.Notifications.Data"
     }
     }
}
  ],
</syntaxhighlight>
  "description": "Speed of the playback of a media item has been changed. If there is no ID available extra information will be provided."
====Returns====
}</syntaxhighlight>}}
<syntaxhighlight lang="javascript">
 
{
==== Player.OnStop ====
    'jsonrpc': '2.0',
Playback of a media item has been stopped. If there is no ID available extra information will be provided.<br />
    'method': 'GUI.GetProperties',
'''Parameters:'''
    'id': undefined /* integer, required */,
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
    'result': { /* id: GUI.Property.Value */
# ''string'' sender
        'currentcontrol': {
# ''object'' data<br />
            'label': undefined /* string, required */
'''Properties:'''
        },
* [ ''[[#Player.Notifications.Item|Player.Notifications.Item]]'' item ]
        'currentwindow': {
 
            'id': undefined /* integer, required */,  
</div>
            'label': undefined /* string, required */
 
        },  
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight lang="javascript" enclose="div">{
        'fullscreen': false /* boolean */,  
  "params": [
        'skin': {
    {
            'id': undefined /* string, required, minimum length: 1 */,
      "required": true,  
            'name': '' /* string */
      "type": "string",  
      "name": "sender"
    },  
    {
      "required": true,  
      "type": "object",
      "name": "data",  
      "properties": {
        "item": {
          "$ref": "Player.Notifications.Item"
         }
         }
      }
    }
  ],
  "description": "Playback of a media item has been stopped. If there is no ID available extra information will be provided."
}</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
# ''null'' 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">{
  "params": [
    {
      "required": true,
      "type": "string",
      "name": "sender"
    },
    {
      "required": true,
      "type": "null",
      "name": "data"
    }
  ],
  "description": "The system is on low battery."
}</syntaxhighlight>}}
==== System.OnQuit ====
XBMC 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
# ''null'' 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">{
  "params": [
    {
      "required": true,
      "type": "string",
      "name": "sender"
    },
    {
      "required": true,
      "type": "null",
      "name": "data"
     }
     }
}
  ],
</syntaxhighlight>
  "description": "XBMC will be closed."
===GUI.SetFullscreen===
}</syntaxhighlight>}}
Toggle fullscreen/GUI
 
====Permissions====
==== System.OnRestart ====
ControlGUI
The system will be restarted.<br />
====Syntax====
'''Parameters:'''
<syntaxhighlight lang="javascript">
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
{
# ''string'' sender
    'jsonrpc': '2.0',  
# ''null'' data
    'method': 'GUI.SetFullscreen',  
</div>
     'id': undefined /* integer, required */,  
 
    'params': {
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight lang="javascript" enclose="div">{
        'fullscreen': undefined /* boolean */ or undefined /* string */
  "params": [
    {
      "required": true,
      "type": "string",
      "name": "sender"
    },
    {
      "required": true,
      "type": "null",
      "name": "data"
    }
  ],
  "description": "The system will be restarted."
}</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
# ''null'' 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">{
  "params": [
    {
      "required": true,  
      "type": "string",  
      "name": "sender"
     },  
    {
      "required": true,  
      "type": "null",
      "name": "data"
     }
     }
}
  ],
</syntaxhighlight>
  "description": "The system will be suspended."
====Returns====
}</syntaxhighlight>}}
<syntaxhighlight lang="javascript">
 
{
==== System.OnWake ====
    'jsonrpc': '2.0',
The system woke up from suspension.<br />
    'method': 'GUI.SetFullscreen',
'''Parameters:'''
    'id': undefined /* integer, required */,
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
    'result': undefined /* boolean, Fullscreen state */
# ''string'' sender
}
# ''null'' data
</syntaxhighlight>
</div>
===GUI.ShowNotification===
 
Shows a GUI notification
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight lang="javascript" enclose="div">{
====Permissions====
  "params": [
ControlGUI
    {
====Syntax====
      "required": true,  
<syntaxhighlight lang="javascript">
      "type": "string",  
{
      "name": "sender"
    'jsonrpc': '2.0',  
     },  
    'method': 'GUI.ShowNotification',  
     {
     'id': undefined /* integer, required */,  
      "required": true,  
     'params': {
      "type": "null",  
        'title': undefined /* string, required */,
      "name": "data"
        'message': undefined /* string, required */,  
        'image': undefined /* string */ or undefined /* string */,  
        'displaytime': 5000 /* integer, minimum: 1500, The time in milliseconds the notification will be visible */
     }
     }
}
  ],
</syntaxhighlight>
  "description": "The system woke up from suspension."
====Returns====
}</syntaxhighlight>}}
<syntaxhighlight lang="javascript">
 
{
=== VideoLibrary ===
    'jsonrpc': '2.0',
==== VideoLibrary.OnRemove ====
    'method': 'GUI.ShowNotification',
A video item has been removed.<br />
    'id': undefined /* integer, required */,  
'''Parameters:'''
    'result': { /* id: System.Property.Value */
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
         'canhibernate': false /* boolean */,  
# ''string'' sender
         'canreboot': false /* boolean */,  
# ''object'' data<br />
        'canshutdown': false /* boolean */,
'''Properties:'''
         'cansuspend': false /* boolean */
* ''[[#Notifications.Library.Video.Type|Notifications.Library.Video.Type]]'' type
* ''[[#Library.Id|Library.Id]]'' id
 
</div>
 
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight lang="javascript" enclose="div">{
  "params": [
    {
      "required": true,
      "type": "string",
      "name": "sender"
    },  
    {
      "required": true,
      "type": "object",
      "name": "data",  
      "properties": {
        "type": {
          "required": true,
          "$ref": "Notifications.Library.Video.Type"
         },  
         "id": {
          "required": true,  
          "$ref": "Library.Id"
         }
      }
     }
     }
}
  ],
</syntaxhighlight>
  "description": "A video item has been removed."
}</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<br />
'''Properties:'''
* [ ''integer'' playcount = -1 ]
* ''string'' type
* ''[[#Library.Id|Library.Id]]'' id
 
</div>


=JSON-RPC 2.0 compatibility=
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight lang="javascript" enclose="div">{
{| class="wikitable" style="margin-right: 0;"
  "params": [
!style="padding-left: 5px; width: 7em; text-align: left;"|Version
    {
!style="padding-left: 10px; padding-right: 10px;"|Method calls
      "required": true,
!style="padding-left: 10px; padding-right: 10px;"|Notifications<br />(server-side)
      "type": "string",
!style="padding-left: 10px; padding-right: 10px;"|Notifications<br />(client-side)
      "name": "sender"
!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
      "required": true,
|-
      "type": "object",
|style="padding-left: 5px;"|Version 4
      "name": "data",
|{{yes}}
      "properties": {
|{{yes}}
        "playcount": {
|{{yes}}
          "default": -1,
|{{yes}}
          "minimum": 0,
|{{yes}}
          "type": "integer"
|{{yes}}
        },
|-
        "type": {
|}
          "enum": [
            "movie",
            "tvshow",
            "episode",
            "musicvideo"
          ],
          "type": "string",
          "id": "Notifications.Library.Video.Type",
          "required": true
        },
        "id": {
          "required": true,
          "$ref": "Library.Id"
        }
      }
    }
  ],
  "description": "A video item has been updated."
}</syntaxhighlight>}}


=See also=
*[[JSON-RPC API]]
*[[JSON-RPC API/v2|JSON-RPC API v2 (Dharma)]]


=External links=
== External links ==
*[http://jsonrpc.org/spec.html JSON-RPC 2.0 specification]
* [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)]
* [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]]
[[Category:JSON-RPC]]

Latest revision as of 23:33, 27 August 2020

Version 4 is a stable version of XBMC's JSON-RPC API and is published with the release of Eden. It is a complete re-write and re-structuring of version 2 and therefore isn't backwards compatible to it. The main reason for this was the need to make this version fully compatible with all the functionality, features and requirements of the JSON-RPC 2.0 specification. This was a main concern during early development to make it easier for third party developers and applications to interact with XBMC's JSON-RPC API by using existing JSON-RPC libraries.

An rough and incomplete list of changes compared to version 2 can be found here. A more complete and detailed list can be found in the forum.

JSON-RPC 2.0 compatibility

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

Documentation (JSON Schema)

Starting with JSON-RPC API version 3 a new way of API documentation has been introduced. All methods and data types are described using JSON Schema. This provides third party developers with an always complete and up-to-date documentation by calling JSONRPC.Introspect even during periods of heavy development. Furthermore the same method and data type specification that can be used by third party developers as a documentation is used by XBMC to check and verify method parameters and their values on every JSON-RPC request and allows to provide detailed error messages in case of a bad or missing parameter.

Supported features of JSON Schema

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

Error message

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

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

Namespaces

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

JSONRPC          A variety of standard JSONRPC calls
Player           Manages all available players
Playlist         Playlist modification
Files            Shares information
AudioLibrary     Audio Library information
VideoLibrary     Video Library information
Input            Allows limited navigation within XBMC
Application      Application information and control
System           System controls and information
XBMC             Dumping ground for very Kodi specific operations

Methods

Application

Application.GetProperties

Retrieves the values of the given properties
Permissions:

  • ReadData

Parameters:

  1. Application.Property.Name[] properties

Returns: Application.Property.Value

Application.Quit

Quit application
Permissions:

  • ControlPower

Parameters: None
Returns: string

Application.SetMute

Toggle mute/unmute
Permissions:

  • ControlPlayback

Parameters:

  1. mixed mute

Returns: boolean

Application.SetVolume

Set the current volume
Permissions:

  • ControlPlayback

Parameters:

  1. integer volume

Returns: integer

AudioLibrary

AudioLibrary.Clean

Cleans the audio library from non-existent items
Permissions:

  • RemoveData

Parameters: None
Returns: string

AudioLibrary.Export

Exports all items from the audio library
Permissions:

  • WriteFile

Parameters:

  1. [ mixed options ]

Returns: string

AudioLibrary.GetAlbumDetails

Retrieve details about a specific album
Permissions:

  • ReadData

Parameters:

  1. Library.Id albumid
  2. [ Audio.Fields.Album properties ]

Returns:

Type: object
Properties:

AudioLibrary.GetAlbums

Retrieve all albums from specified artist or genre
Permissions:

  • ReadData

Parameters:

  1. [ Library.Id artistid = -1 ]
  2. [ Library.Id genreid = -1 ]
  3. [ Audio.Fields.Album properties ]
  4. [ List.Limits limits ]
  5. [ List.Sort sort ]

Returns:

Type: object
Properties:

AudioLibrary.GetArtistDetails

Retrieve details about a specific artist
Permissions:

  • ReadData

Parameters:

  1. Library.Id artistid
  2. [ Audio.Fields.Artist properties ]

Returns:

Type: object
Properties:

AudioLibrary.GetArtists

Retrieve all artists
Permissions:

  • ReadData

Parameters:

  1. [ Optional.Boolean albumartistsonly = null ]
  2. [ Library.Id genreid = -1 ]
  3. [ Audio.Fields.Artist properties ]
  4. [ List.Limits limits ]
  5. [ List.Sort sort ]

Returns:

Type: object
Properties:

AudioLibrary.GetGenres

Retrieve all genres
Permissions:

  • ReadData

Parameters:

  1. [ Library.Fields.Genre properties ]
  2. [ List.Limits limits ]
  3. [ List.Sort sort ]

Returns:

Type: object
Properties:

AudioLibrary.GetRecentlyAddedAlbums

Retrieve recently added albums
Permissions:

  • ReadData

Parameters:

  1. [ Audio.Fields.Album properties ]
  2. [ List.Limits limits ]
  3. [ List.Sort sort ]

Returns:

Type: object
Properties:

AudioLibrary.GetRecentlyAddedSongs

Retrieve recently added songs
Permissions:

  • ReadData

Parameters:

  1. [ List.Amount albumlimit = -1 ]
  2. [ Audio.Fields.Song properties ]
  3. [ List.Limits limits ]
  4. [ List.Sort sort ]

Returns:

Type: object
Properties:

AudioLibrary.GetSongDetails

Retrieve details about a specific song
Permissions:

  • ReadData

Parameters:

  1. Library.Id songid
  2. [ Audio.Fields.Song properties ]

Returns:

Type: object
Properties:

AudioLibrary.GetSongs

Retrieve all songs from specified album, artist or genre
Permissions:

  • ReadData

Parameters:

  1. [ Library.Id artistid = -1 ]
  2. [ Library.Id albumid = -1 ]
  3. [ Library.Id genreid = -1 ]
  4. [ Audio.Fields.Song properties ]
  5. [ List.Limits limits ]
  6. [ List.Sort sort ]

Returns:

Type: object
Properties:

AudioLibrary.Scan

Scans the audio sources for new library items
Permissions:

  • UpdateData

Parameters: None
Returns: string

Files

Files.Download

Provides a way to download a given file (e.g. providing an URL to the real file location)
Permissions:

  • ReadData

Parameters:

  1. string path

Returns:

Type: object
Properties:

  • string path

Files.GetDirectory

Get the directories and files in the given directory
Permissions:

  • ReadData

Parameters:

  1. string directory
  2. [ Files.Media media = "files" ]
  3. [ List.Fields.All properties ]
  4. [ List.Sort sort ]

Returns:

Type: object
Properties:

Files.GetSources

Get the sources of the media windows
Permissions:

  • ReadData

Parameters:

  1. Files.Media media
  2. [ List.Limits limits ]
  3. [ List.Sort sort ]

Returns:

Type: object
Properties:

Input

Input.Back

Goes back in GUI
Permissions:

  • Navigate

Parameters: None
Returns: string

Input.Down

Navigate down in GUI
Permissions:

  • Navigate

Parameters: None
Returns: string

Input.Home

Goes to home window in GUI
Permissions:

  • Navigate

Parameters: None
Returns: string

Input.Left

Navigate left in GUI
Permissions:

  • Navigate

Parameters: None
Returns: string

Input.Right

Navigate right in GUI
Permissions:

  • Navigate

Parameters: None
Returns: string

Input.Select

Select current item in GUI
Permissions:

  • Navigate

Parameters: None
Returns: string

Input.Up

Navigate up in GUI
Permissions:

  • Navigate

Parameters: None
Returns: string

JSONRPC

JSONRPC.Introspect

Enumerates all actions and descriptions
Permissions:

  • ReadData

Parameters:

  1. [ boolean getdescriptions = True ]
  2. [ boolean getmetadata = False ]
  3. [ boolean filterbytransport = True ]
  4. [ object filter ]

Properties:

  • string type
  • string id
  • [ boolean getreferences = True ]

Returns:

Type: object

JSONRPC.NotifyAll

Notify all other connected clients
Permissions:

  • ReadData

Parameters:

  1. string sender
  2. string message
  3. [ any data = null ]

Returns: any

JSONRPC.Permission

Retrieve the clients permissions
Permissions:

  • ReadData

Parameters: None
Returns:

Type: object
Properties:

  • boolean navigate
  • boolean removedata
  • boolean controlplayback
  • boolean readdata
  • boolean updatedata
  • boolean writefile
  • boolean controlnotify
  • boolean controlpower

JSONRPC.Ping

Ping responder
Permissions:

  • ReadData

Parameters: None
Returns: string

JSONRPC.Version

Retrieve the jsonrpc protocol version
Permissions:

  • ReadData

Parameters: None
Returns: string

Player

Player.GetActivePlayers

Returns all active players
Permissions:

  • ReadData

Parameters: None
Returns:

Type: array

Player.GetItem

Retrieves the currently played item
Permissions:

  • ReadData

Parameters:

  1. Player.Id playerid
  2. [ List.Fields.All properties ]

Returns:

Type: object
Properties:

Player.GetProperties

Retrieves the values of the given properties
Permissions:

  • ReadData

Parameters:

  1. Player.Id playerid
  2. Player.Property.Name[] properties

Returns: Player.Property.Value

Player.GoNext

Go to next item on the playlist
Permissions:

  • ControlPlayback

Parameters:

  1. Player.Id playerid

Returns: string

Player.GoPrevious

Go to previous item on the playlist
Permissions:

  • ControlPlayback

Parameters:

  1. Player.Id playerid

Returns: string

Player.GoTo

Go to item at the given position in the playlist
Permissions:

  • ControlPlayback

Parameters:

  1. Player.Id playerid
  2. Playlist.Position position

Returns: string

Player.MoveDown

If picture is zoomed move viewport down
Permissions:

  • ControlPlayback

Parameters:

  1. Player.Id playerid

Returns: string

Player.MoveLeft

If picture is zoomed move viewport left otherwise skip previous
Permissions:

  • ControlPlayback

Parameters:

  1. Player.Id playerid

Returns: string

Player.MoveRight

If picture is zoomed move viewport right otherwise skip next
Permissions:

  • ControlPlayback

Parameters:

  1. Player.Id playerid

Returns: string

Player.MoveUp

If picture is zoomed move viewport up
Permissions:

  • ControlPlayback

Parameters:

  1. Player.Id playerid

Returns: string

Player.Open

Start playback of either the playlist with the given ID, a slideshow with the pictures from the given directory or a single file or an item from the database.
Permissions:

  • ControlPlayback

Parameters:

  1. [ mixed item ]

Returns: string

Player.PlayPause

Pauses or unpause playback and returns the new state
Permissions:

  • ControlPlayback

Parameters:

  1. Player.Id playerid

Returns: Player.Speed

Player.Repeat

Set the repeat mode of the player
Permissions:

  • ControlPlayback

Parameters:

  1. Player.Id playerid
  2. Player.Repeat state

Returns: string

Player.Rotate

Rotates current picture
Permissions:

  • ControlPlayback

Parameters:

  1. Player.Id playerid

Returns: string

Player.Seek

Seek through the playing item
Permissions:

  • ControlPlayback

Parameters:

  1. Player.Id playerid
  2. mixed value

Returns:

Type: object
Properties:

Player.SetAudioStream

Set the audio stream played by the player
Permissions:

  • ControlPlayback

Parameters:

  1. Player.Id playerid
  2. mixed stream

Returns: string

Player.SetSpeed

Set the speed of the current playback
Permissions:

  • ControlPlayback

Parameters:

  1. Player.Id playerid
  2. mixed speed

Returns: Player.Speed

Player.SetSubtitle

Set the subtitle displayed by the player
Permissions:

  • ControlPlayback

Parameters:

  1. Player.Id playerid
  2. mixed subtitle

Returns: string

Player.Shuffle

Shuffle items in the player
Permissions:

  • ControlPlayback

Parameters:

  1. Player.Id playerid

Returns: string

Player.Stop

Stops playback
Permissions:

  • ControlPlayback

Parameters:

  1. Player.Id playerid

Returns: string

Player.UnShuffle

Unshuffle items in the player
Permissions:

  • ControlPlayback

Parameters:

  1. Player.Id playerid

Returns: string

Player.Zoom

Zooms current picture
Permissions:

  • ControlPlayback

Parameters:

  1. Player.Id playerid
  2. integer value

Returns: string

Player.ZoomIn

Zoom in once
Permissions:

  • ControlPlayback

Parameters:

  1. Player.Id playerid

Returns: string

Player.ZoomOut

Zoom out once
Permissions:

  • ControlPlayback

Parameters:

  1. Player.Id playerid

Returns: string

Playlist

Playlist.Add

Add item(s) to playlist
Permissions:

  • ControlPlayback

Parameters:

  1. Playlist.Id playlistid
  2. Playlist.Item item

Returns: string

Playlist.Clear

Clear playlist
Permissions:

  • ControlPlayback

Parameters:

  1. Playlist.Id playlistid

Returns: string

Playlist.GetItems

Get all items from playlist
Permissions:

  • ReadData

Parameters:

  1. Playlist.Id playlistid
  2. [ List.Fields.All properties ]
  3. [ List.Limits limits ]
  4. [ List.Sort sort ]

Returns:

Type: object
Properties:

Playlist.GetPlaylists

Returns all existing playlists
Permissions:

  • ReadData

Parameters: None
Returns:

Type: array

Playlist.GetProperties

Retrieves the values of the given properties
Permissions:

  • ReadData

Parameters:

  1. Playlist.Id playlistid
  2. Playlist.Property.Name[] properties

Returns: Playlist.Property.Value

Playlist.Insert

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

  • ControlPlayback

Parameters:

  1. Playlist.Id playlistid
  2. Playlist.Position position
  3. Playlist.Item item

Returns: string

Playlist.Remove

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

  • ControlPlayback

Parameters:

  1. Playlist.Id playlistid
  2. Playlist.Position position

Returns: string

Playlist.Swap

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

  • ControlPlayback

Parameters:

  1. Playlist.Id playlistid
  2. Playlist.Position position1
  3. Playlist.Position position2

Returns: string

System

System.GetProperties

Retrieves the values of the given properties
Permissions:

  • ReadData

Parameters:

  1. System.Property.Name[] properties

Returns: System.Property.Value

System.Hibernate

Puts the system running XBMC into hibernate mode
Permissions:

  • ControlPower

Parameters: None
Returns: string

System.Reboot

Reboots the system running XBMC
Permissions:

  • ControlPower

Parameters: None
Returns: string

System.Shutdown

Shuts the system running XBMC down
Permissions:

  • ControlPower

Parameters: None
Returns: string

System.Suspend

Suspends the system running XBMC
Permissions:

  • ControlPower

Parameters: None
Returns: string

VideoLibrary

VideoLibrary.Clean

Cleans the video library from non-existent items
Permissions:

  • RemoveData

Parameters: None
Returns: string

VideoLibrary.Export

Exports all items from the video library
Permissions:

  • WriteFile

Parameters:

  1. [ mixed options ]

Returns: string

VideoLibrary.GetEpisodeDetails

Retrieve details about a specific tv show episode
Permissions:

  • ReadData

Parameters:

  1. Library.Id episodeid
  2. [ Video.Fields.Episode properties ]

Returns:

Type: object
Properties:

VideoLibrary.GetEpisodes

Retrieve all tv show episodes
Permissions:

  • ReadData

Parameters:

  1. [ Library.Id tvshowid = -1 ]
  2. [ integer season = -1 ]
  3. [ Video.Fields.Episode properties ]
  4. [ List.Limits limits ]
  5. [ List.Sort sort ]

Returns:

Type: object
Properties:

VideoLibrary.GetGenres

Retrieve all genres
Permissions:

  • ReadData

Parameters:

  1. string type
  2. [ Library.Fields.Genre properties ]
  3. [ List.Limits limits ]
  4. [ List.Sort sort ]

Returns:

Type: object
Properties:

VideoLibrary.GetMovieDetails

Retrieve details about a specific movie
Permissions:

  • ReadData

Parameters:

  1. Library.Id movieid
  2. [ Video.Fields.Movie properties ]

Returns:

Type: object
Properties:

VideoLibrary.GetMovieSetDetails

Retrieve details about a specific movie set
Permissions:

  • ReadData

Parameters:

  1. Library.Id setid
  2. [ Video.Fields.MovieSet properties ]
  3. [ object movies ]

Properties:

Returns:

Type: object
Properties:

VideoLibrary.GetMovieSets

Retrieve all movie sets
Permissions:

  • ReadData

Parameters:

  1. [ Video.Fields.MovieSet properties ]
  2. [ List.Limits limits ]
  3. [ List.Sort sort ]

Returns:

Type: object
Properties:

VideoLibrary.GetMovies

Retrieve all movies
Permissions:

  • ReadData

Parameters:

  1. [ Video.Fields.Movie properties ]
  2. [ List.Limits limits ]
  3. [ List.Sort sort ]

Returns:

Type: object
Properties:

VideoLibrary.GetMusicVideoDetails

Retrieve details about a specific music video
Permissions:

  • ReadData

Parameters:

  1. Library.Id musicvideoid
  2. [ Video.Fields.MusicVideo properties ]

Returns:

Type: object
Properties:

VideoLibrary.GetMusicVideos

Retrieve all music videos
Permissions:

  • ReadData

Parameters:

  1. [ Library.Id artistid = -1 ]
  2. [ Library.Id albumid = -1 ]
  3. [ Video.Fields.MusicVideo properties ]
  4. [ List.Limits limits ]
  5. [ List.Sort sort ]

Returns:

Type: object
Properties:

VideoLibrary.GetRecentlyAddedEpisodes

Retrieve all recently added tv episodes
Permissions:

  • ReadData

Parameters:

  1. [ Video.Fields.Episode properties ]
  2. [ List.Limits limits ]
  3. [ List.Sort sort ]

Returns:

Type: object
Properties:

VideoLibrary.GetRecentlyAddedMovies

Retrieve all recently added movies
Permissions:

  • ReadData

Parameters:

  1. [ Video.Fields.Movie properties ]
  2. [ List.Limits limits ]
  3. [ List.Sort sort ]

Returns:

Type: object
Properties:

VideoLibrary.GetRecentlyAddedMusicVideos

Retrieve all recently added music videos
Permissions:

  • ReadData

Parameters:

  1. [ Video.Fields.MusicVideo properties ]
  2. [ List.Limits limits ]
  3. [ List.Sort sort ]

Returns:

Type: object
Properties:

VideoLibrary.GetSeasons

Retrieve all tv seasons
Permissions:

  • ReadData

Parameters:

  1. Library.Id tvshowid
  2. [ Video.Fields.Season properties ]
  3. [ List.Limits limits ]
  4. [ List.Sort sort ]

Returns:

Type: object
Properties:

VideoLibrary.GetTVShowDetails

Retrieve details about a specific tv show
Permissions:

  • ReadData

Parameters:

  1. Library.Id tvshowid
  2. [ Video.Fields.TVShow properties ]

Returns:

Type: object
Properties:

VideoLibrary.GetTVShows

Retrieve all tv shows
Permissions:

  • ReadData

Parameters:

  1. [ Video.Fields.TVShow properties ]
  2. [ List.Limits limits ]
  3. [ List.Sort sort ]

Returns:

Type: object
Properties:

VideoLibrary.Scan

Scans the video sources for new library items
Permissions:

  • UpdateData

Parameters: None
Returns: string

XBMC

XBMC.GetInfoBooleans

Retrieve info booleans about XBMC and the system
Permissions:

  • ReadData

Parameters:

  1. array[1..X] booleans

Returns:

Type: object

XBMC.GetInfoLabels

Retrieve info labels about XBMC and the system
Permissions:

  • ReadData

Parameters:

  1. array[1..X] labels

Returns:

Type: object


Global types

Application

Application.Property.Name

Type: string

Application.Property.Value

Type: object
Properties:

  • [ boolean muted = False ]
  • [ integer volume = 0 ]
  • [ object version ]

Properties:

    • integer major
    • string tag
    • integer minor
    • [ mixed revision = null ]
  • [ string name = "" ]

Array

Array.Integer

Type: array

Array.String

Type: array

Audio

Audio.Details.Album

Extends:


Properties:

  • [ string style = "" ]
  • [ string mood = "" ]
  • [ string albumlabel = "" ]
  • [ string theme = "" ]
  • Library.Id albumid
  • [ Library.Id artistid = -1 ]
  • [ string type = "" ]
  • [ string description = "" ]

Audio.Details.Artist

Extends:


Properties:

  • [ string style = "" ]
  • [ string description = "" ]
  • [ string musicbrainzartistid = "" ]
  • string artist
  • [ string formed = "" ]
  • [ string disbanded = "" ]
  • [ string born = "" ]
  • Library.Id artistid
  • [ string yearsactive = "" ]
  • [ string instrument = "" ]
  • [ string died = "" ]
  • [ string mood = "" ]

Audio.Details.Base

Extends:


Properties:

  • [ string genre = "" ]

Audio.Details.Media

Extends:


Properties:

  • [ integer rating = 0 ]
  • [ string title = "" ]
  • [ string artist = "" ]
  • [ string musicbrainzalbumartistid = "" ]
  • [ integer year = 0 ]
  • [ string musicbrainzalbumid = "" ]

Audio.Details.Song

Extends:


Properties:

  • [ string album = "" ]
  • [ string comment = "" ]
  • Library.Id songid
  • [ string musicbrainzartistid = "" ]
  • [ string lyrics = "" ]
  • [ integer track = 0 ]
  • [ string musicbrainztrackid = "" ]
  • [ Library.Id albumid = -1 ]
  • [ Library.Id artistid = -1 ]
  • [ string albumartist = "" ]
  • [ string file = "" ]
  • [ integer duration = 0 ]
  • [ integer playcount = 0 ]

Audio.Fields.Album

Extends:

Audio.Fields.Artist

Extends:

Audio.Fields.Song

Extends:

Configuration

Configuration

Type: object
Properties:

Configuration.Notifications

Type: object
Properties:

  • boolean gui
  • boolean system
  • boolean player
  • boolean audiolibrary
  • boolean other
  • boolean videolibrary

Files

Files.Media

Type: string

Global

Global.Time

Type: object
Properties:

  • integer hours
  • integer seconds
  • integer minutes
  • integer milliseconds

Item

Item.Details.Base

Type: object
Properties:

  • string label

Item.Fields.Base

Type: array

Library

Library.Details.Genre

Extends:


Properties:

  • Library.Id genreid
  • [ string thumbnail = "" ]
  • [ string title = "" ]

Library.Fields.Genre

Extends:

Library.Id

Type: integer

List

List.Amount

Type: integer

List.Fields.All

Extends:

List.Item.All

Extends:


Properties:

  • [ string comment = "" ]
  • [ Library.Id tvshowid = -1 ]
  • [ Array.String set ]
  • [ string lyrics = "" ]
  • [ string albumartist = "" ]
  • [ integer duration = 0 ]
  • [ Array.Integer setid ]
  • [ Library.Id id = -1 ]
  • [ string album = "" ]
  • [ string votes = "" ]
  • [ string mpaa = "" ]
  • [ string writer = "" ]
  • [ Library.Id albumid = -1 ]
  • [ string type = "unknown" ]
  • [ string plotoutline = "" ]
  • [ integer track = 0 ]
  • [ integer season = 0 ]
  • [ string musicbrainztrackid = "" ]
  • [ string imdbnumber = "" ]
  • [ string studio = "" ]
  • [ string showlink = "" ]
  • [ string showtitle = "" ]
  • [ integer episode = 0 ]
  • [ string musicbrainzartistid = "" ]
  • [ string productioncode = "" ]
  • [ string country = "" ]
  • [ string premiered = "" ]
  • [ string originaltitle = "" ]
  • [ Video.Cast cast ]
  • [ Library.Id artistid = -1 ]
  • [ string firstaired = "" ]
  • [ string tagline = "" ]
  • [ integer top250 = 0 ]
  • [ string trailer = "" ]

List.Item.File

Extends:


Properties:

  • string filetype
  • string file

List.Items.Sources

Type: array

List.Limits

Type: object
Properties:

  • [ integer start = 0 ]
  • [ integer end = -1 ]

List.LimitsReturned

Type: object
Properties:

  • [ integer start = 0 ]
  • integer total
  • [ integer end = -1 ]

List.Sort

Type: object
Properties:

  • [ string order = "ascending" ]
  • [ boolean ignorearticle = False ]
  • [ string method = "none" ]

Media

Media.Details.Base

Extends:


Properties:

  • [ string fanart = "" ]
  • [ string thumbnail = "" ]

Optional

Optional.Boolean

Type: mixed

Player

Player.Audio.Stream

Type: object
Properties:

  • integer index
  • string name
  • string language

Player.Audio.Stream.Extended

Extends:


Properties:

  • integer channels
  • string codec
  • integer bitrate

Player.Id

Type: integer

Player.Notifications.Data

Type: object
Properties:

Player.Notifications.Item

Type: mixed

Player.Notifications.Item.Type

Type: string

Player.Notifications.Player

Type: object
Properties:

Player.Notifications.Player.Seek

Extends:


Properties:

Player.Position.Percentage

Type: number

Player.Property.Name

Type: string

Player.Property.Value

Type: object
Properties:

Player.Repeat

Type: string

Player.Speed

Type: object
Properties:

  • [ integer speed = 0 ]

Player.Subtitle

Type: object
Properties:

  • integer index
  • string name
  • string language

Player.Type

Type: string

Playlist

Playlist.Id

Type: integer

Playlist.Item

Type: mixed

Playlist.Position

Type: integer

Playlist.Property.Name

Type: string

Playlist.Property.Value

Type: object
Properties:

Playlist.Type

Type: string

System

System.Property.Name

Type: string

System.Property.Value

Type: object
Properties:

  • [ boolean canreboot = False ]
  • [ boolean cansuspend = False ]
  • [ boolean canhibernate = False ]
  • [ boolean canshutdown = False ]

Video

Video.Cast

Type: array

Video.Details.Base

Extends:


Properties:

  • [ integer playcount = 0 ]

Video.Details.Episode

Extends:


Properties:

  • [ number rating = 0 ]
  • [ Library.Id tvshowid = -1 ]
  • [ string votes = "" ]
  • [ integer episode = 0 ]
  • [ string productioncode = "" ]
  • [ integer season = 0 ]
  • [ string writer = "" ]
  • Library.Id episodeid
  • [ string originaltitle = "" ]
  • [ Video.Cast cast ]
  • [ string firstaired = "" ]
  • [ string showtitle = "" ]

Video.Details.File

Extends:


Properties:

Video.Details.Item

Extends:


Properties:

  • [ string plot = "" ]
  • [ string lastplayed = "" ]
  • [ string file = "" ]

Video.Details.Media

Extends:


Properties:

  • [ string title = "" ]

Video.Details.Movie

Extends:


Properties:

  • [ number rating = 0 ]
  • [ Array.String set ]
  • [ integer year = 0 ]
  • [ Array.Integer setid ]
  • [ string votes = "" ]
  • [ string tagline = "" ]
  • [ string writer = "" ]
  • [ string plotoutline = "" ]
  • [ string sorttitle = "" ]
  • [ string imdbnumber = "" ]
  • [ string studio = "" ]
  • [ string showlink = "" ]
  • [ string genre = "" ]
  • Library.Id movieid
  • [ string productioncode = "" ]
  • [ string country = "" ]
  • [ string premiered = "" ]
  • [ string originaltitle = "" ]
  • [ Video.Cast cast ]
  • [ string mpaa = "" ]
  • [ integer top250 = 0 ]
  • [ string trailer = "" ]
  • [ array streamdetails = "" ]

Video.Details.MovieSet

Extends:


Properties:

Video.Details.MovieSet.Extended

Extends:


Properties:

Video.Details.MusicVideo

Extends:


Properties:

  • [ string album = "" ]
  • [ string artist = "" ]
  • [ integer track = 0 ]
  • [ string studio = "" ]
  • [ integer year = 0 ]
  • [ string genre = "" ]
  • Library.Id musicvideoid

Video.Details.Season

Extends:


Properties:

  • integer season
  • [ Library.Id tvshowid = -1 ]
  • [ integer episode = 0 ]
  • [ string showtitle = "" ]

Video.Details.TVShow

Extends:


Properties:

  • [ string episodeguide = "" ]
  • Library.Id tvshowid
  • [ integer episode = 0 ]
  • [ string imdbnumber = "" ]
  • [ number rating = 0 ]
  • [ string mpaa = "" ]
  • [ integer year = 0 ]
  • [ string votes = "" ]
  • [ string premiered = "" ]
  • [ string originaltitle = "" ]
  • [ Video.Cast cast ]
  • [ string studio = "" ]
  • [ string sorttitle = "" ]
  • [ string genre = "" ]

Video.Fields.Episode

Extends:

Video.Fields.Movie

Extends:

Video.Fields.MovieSet

Extends:

Video.Fields.MusicVideo

Extends:

Video.Fields.Season

Extends:

Video.Fields.TVShow

Extends:

Video.Resume

Type: object
Properties:

  • [ number position = 0 ]
  • [ number total = 0 ]

Video.Streams

Type: object
Properties:

  • [ array[1..X] video ]
  • [ array[1..X] audio ]
  • [ array[1..X] subtitle ]


Notifications

AudioLibrary

AudioLibrary.OnRemove

An audio item has been removed.
Parameters:

  1. string sender
  2. object data

Properties:

AudioLibrary.OnUpdate

An audio item has been updated.
Parameters:

  1. string sender
  2. object data

Properties:

Player

Player.OnPause

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

  1. string sender
  2. Player.Notifications.Data data

Player.OnPlay

Playback of a media item has been started or the playback speed has changed. If there is no ID available extra information will be provided.
Parameters:

  1. string sender
  2. Player.Notifications.Data data

Player.OnSeek

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

  1. string sender
  2. object data

Properties:

Player.OnSpeedChanged

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

  1. string sender
  2. Player.Notifications.Data data

Player.OnStop

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

  1. string sender
  2. object data

Properties:

System

System.OnLowBattery

The system is on low battery.
Parameters:

  1. string sender
  2. null data

System.OnQuit

XBMC will be closed.
Parameters:

  1. string sender
  2. null data

System.OnRestart

The system will be restarted.
Parameters:

  1. string sender
  2. null data

System.OnSleep

The system will be suspended.
Parameters:

  1. string sender
  2. null data

System.OnWake

The system woke up from suspension.
Parameters:

  1. string sender
  2. null data

VideoLibrary

VideoLibrary.OnRemove

A video item has been removed.
Parameters:

  1. string sender
  2. object data

Properties:

VideoLibrary.OnUpdate

A video item has been updated.
Parameters:

  1. string sender
  2. object data

Properties:

  • [ integer playcount = -1 ]
  • string type
  • Library.Id id


External links