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

From Official Kodi Wiki
Jump to navigation Jump to search
No edit summary
>Sam
(replaced almost everything)
Line 4: Line 4:
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 [[Eden API Changes|here]]. A more complete and detailed list can be found in the [http://forum.xbmc.org/showthread.php?t=98551 forum].


{{TOC right}}
{{TOC right|limit=4}}
==JSON-RPC 2.0 compatibility==
{| class="wikitable" 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|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.


Line 147: Line 128:
<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
{|
{|
Line 175: Line 156:
|}
|}


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


====Player.OnSpeedChanged====
=JSON-RPC 2.0 compatibility=
Speed of the playback of a media item has been changed. If there is no ID available extra information will be provided.<br />
{| class="wikitable" style="margin-right: 0;"
'''Parameters:'''
!style="padding-left: 5px; width: 7em; text-align: left;"|Version
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
!style="padding-left: 10px; padding-right: 10px;"|Method calls
#''string'' sender
!style="padding-left: 10px; padding-right: 10px;"|Notifications<br />(server-side)
#''[[#Player.Notifications.Data|Player.Notifications.Data]]'' data
!style="padding-left: 10px; padding-right: 10px;"|Notifications<br />(client-side)
</div>
!style="padding-left: 10px; padding-right: 10px;"|Parameters<br />by-name
 
!style="padding-left: 10px; padding-right: 10px;"|Parameters<br />by-position
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight lang="javascript">{
!style="padding-left: 10px; padding-right: 10px;"|Batch requests
  "params": [
|-
    {
|style="padding-left: 5px;"|Version 4
      "required": true,
|{{yes}}
      "type": "string",
|{{yes}}
      "name": "sender"
|{{yes}}
    },
|{{yes}}
    {
|{{yes}}
      "required": true,
|{{yes}}
      "name": "data",
|-
      "$ref": "Player.Notifications.Data"
|}
    }
  ],
  "description": "Speed of the playback of a media item has been changed. If there is no ID available extra information will be provided."
}</syntaxhighlight>}}
 
====Player.OnStop====
Playback of a media item has been stopped. If there is no ID available extra information will be provided.<br />
'''Parameters:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
#''string'' sender
#''object'' data<br />
'''Properties:'''
*[ ''[[#Player.Notifications.Item|Player.Notifications.Item]]'' item ]
 
</div>
 
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight lang="javascript">{
  "params": [
    {
      "required": true,
      "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">{
  "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">{
  "params": [
    {
      "required": true,
      "type": "string",
      "name": "sender"
    },
    {
      "required": true,
      "type": "null",
      "name": "data"
    }
  ],
  "description": "XBMC will be closed."
}</syntaxhighlight>}}
 
====System.OnRestart====
The system will be restarted.<br />
'''Parameters:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
#''string'' sender
#''null'' data
</div>
 
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight lang="javascript">{
  "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">{
  "params": [
    {
      "required": true,
      "type": "string",
      "name": "sender"
    },
    {
      "required": true,
      "type": "null",
      "name": "data"
    }
  ],
  "description": "The system will be suspended."
}</syntaxhighlight>}}
 
====System.OnWake====
The system woke up from suspension.<br />
'''Parameters:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
#''string'' sender
#''null'' data
</div>
 
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight lang="javascript">{
  "params": [
    {
      "required": true,
      "type": "string",
      "name": "sender"
    },
    {
      "required": true,
      "type": "null",
      "name": "data"
    }
  ],
  "description": "The system woke up from suspension."
}</syntaxhighlight>}}
 
===VideoLibrary===
====VideoLibrary.OnRemove====
A video item has been removed.<br />
'''Parameters:'''
<div style="margin-left: 20px; width: 60%; padding: 0px 5px 0px 5px; border-width: 1px; border-style: solid; border-color: #AAAAAA">
#''string'' sender
#''object'' data<br />
'''Properties:'''
*''[[#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">{
  "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"
        }
      }
    }
  ],
  "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>
 
{{hidden|style = width: 60%;|headerstyle = background: #cccccc;|contentstyle = text-align: left; border: 0px solid #AAAAAA;|JSON Schema Description|<syntaxhighlight lang="javascript">{
  "params": [
    {
      "required": true,
      "type": "string",
      "name": "sender"
    },
    {
      "required": true,
      "type": "object",
      "name": "data",
      "properties": {
        "playcount": {
          "default": -1,
          "minimum": 0,
          "type": "integer"
        },
        "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==
=See also=
*[[JSON-RPC API]]
*[[JSON-RPC API]]
*[[JSON-RPC API/v2|JSON-RPC API v2 (Dharma)]]
*[[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:Development]]

Revision as of 03:36, 21 June 2012

JSON-RPC Pages
Main JSON-RPC Page
- v8 (Krypton)
- v10 (Leia)
- v12 (Matrix)
- v13 (Nexus)
- v14 (Omega)
Examples
All JSON-RPC Pages

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.

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" }
          }
        }
      }
    }
  }
}

JSONRPC

A variety of standard JSONRPC calls

Methods

JSONRPC.Introspect

Enumerates all actions and descriptions

Permissions

ReadData

Syntax

{
    'jsonrpc': '2.0', 
    'method': 'JSONRPC.Introspect', 
    'id': undefined /* integer, required */, 
    'params': true /* boolean */ or false /* boolean */ or true /* boolean */ or {
        'getreferences': true /* boolean, Whether or not to print the schema for referenced types */, 
        'id': undefined /* string, required, Name of a namespace, method or type */, 
        'type': undefined /* string, required, Type of the given name */
    }
}

Returns

{
    'jsonrpc': '2.0', 
    'method': 'JSONRPC.Introspect', 
    'id': undefined /* integer, required */, 
    'result': {
        
    }
}

JSONRPC.NotifyAll

Notify all other connected clients

Permissions

ReadData

Syntax

{
    'jsonrpc': '2.0', 
    'method': 'JSONRPC.NotifyAll', 
    'id': undefined /* integer, required */, 
    'params': undefined /* string, required */ or undefined /* string, required */ or null /* any */
}

Returns

{
    'jsonrpc': '2.0', 
    'method': 'JSONRPC.NotifyAll', 
    'id': undefined /* integer, required */, 
    'result': undefined /* any */
}

JSONRPC.Permission

Retrieve the clients permissions

Permissions

ReadData

Syntax

{
    'jsonrpc': '2.0', 
    'method': 'JSONRPC.Permission', 
    'id': undefined /* integer, required */
}

Returns

{
    'jsonrpc': '2.0', 
    'method': 'JSONRPC.Permission', 
    'id': undefined /* integer, required */, 
    'result': {
        'controlnotify': undefined /* boolean, required */, 
        'controlplayback': undefined /* boolean, required */, 
        'controlpower': undefined /* boolean, required */, 
        'navigate': undefined /* boolean, required */, 
        'readdata': undefined /* boolean, required */, 
        'removedata': undefined /* boolean, required */, 
        'updatedata': undefined /* boolean, required */, 
        'writefile': undefined /* boolean, required */
    }
}

JSONRPC.Ping

Ping responder

Permissions

ReadData

Syntax

{
    'jsonrpc': '2.0', 
    'method': 'JSONRPC.Ping', 
    'id': undefined /* integer, required */
}

Returns

{
    'jsonrpc': '2.0', 
    'method': 'JSONRPC.Ping', 
    'id': undefined /* integer, required */, 
    'result': undefined /* string */
}

JSONRPC.Version

Retrieve the jsonrpc protocol version

Permissions

ReadData

Syntax

{
    'jsonrpc': '2.0', 
    'method': 'JSONRPC.Version', 
    'id': undefined /* integer, required */
}

Returns

{
    'jsonrpc': '2.0', 
    'method': 'JSONRPC.Version', 
    'id': undefined /* integer, required */, 
    'result': undefined /* string */
}

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

{
    '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 */, 
            'speed': 0 /* integer */
        }
    }
}

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.

Returns

{
    'jsonrpc': '2.0', 
    'method': 'Player.OnPlay', 
    '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 */, 
            'speed': 0 /* integer */
        }
    }
}

Player.OnSeek

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

Returns

{
    'jsonrpc': '2.0', 
    'method': 'Player.OnSeek', 
    'params': undefined /* string, required */ or { /* required */
        '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.Seek */
            'seekoffset': { /* id: Global.Time, no additional properties allowed */
                '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 */
            }, 
            'time': { /* id: Global.Time, no additional properties allowed */
                '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 */
            }, 
            'playerid': -1 /* integer, required, id: Player.Id, minimum: 0, maximum: 2 */, 
            'speed': 0 /* integer */
        }
    }
}

Player.OnSpeedChanged

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

Returns

{
    'jsonrpc': '2.0', 
    'method': 'Player.OnSpeedChanged', 
    '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 */, 
            'speed': 0 /* integer */
        }
    }
}

Player.OnStop

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

Returns

{
    'jsonrpc': '2.0', 
    'method': 'Player.OnStop', 
    'params': undefined /* string, required */ or { /* required */
        '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 */
        }
    }
}

Methods

Player.GetActivePlayers

Returns all active players

Permissions

ReadData

Syntax

{
    'jsonrpc': '2.0', 
    'method': 'Player.GetActivePlayers', 
    'id': undefined /* integer, required */
}

Returns

{
    '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 */
        }
    ]
}

Player.GetItem

Retrieves the currently played item

Permissions

ReadData

Syntax

{
    'jsonrpc': '2.0', 
    'method': 'Player.GetItem', 
    'id': undefined /* integer, required */, 
    'params': -1 /* integer, required, id: Player.Id, minimum: 0, maximum: 2 */ or [ /* id: List.Fields.All */
        undefined /* string */
    ]
}

Returns

{
    'jsonrpc': '2.0', 
    'method': 'Player.GetItem', 
    'id': undefined /* integer, required */, 
    'result': {
        'item': { /* required, id: List.Item.All */
            'album': '' /* string */, 
            'albumartist': '' /* string */, 
            'albumid': -1 /* integer, id: Library.Id, minimum: 1 */, 
            'artistid': -1 /* integer, id: Library.Id, minimum: 1 */, 
            'cast': [ /* array, id: Video.Cast */
                { /* no additional properties allowed */
                    'name': undefined /* string, required */, 
                    'role': undefined /* string, required */, 
                    'thumbnail': '' /* string */
                }
            ], 
            'comment': '' /* string */, 
            'country': '' /* string */, 
            'duration': 0 /* integer */, 
            'episode': 0 /* integer */, 
            'firstaired': '' /* string */, 
            'id': -1 /* integer, id: Library.Id, minimum: 1 */, 
            'imdbnumber': '' /* string */, 
            'lyrics': '' /* string */, 
            'mpaa': '' /* string */, 
            'musicbrainzartistid': '' /* string */, 
            'musicbrainztrackid': '' /* string */, 
            'originaltitle': '' /* string */, 
            'plotoutline': '' /* string */, 
            'premiered': '' /* string */, 
            'productioncode': '' /* string */, 
            'season': 0 /* integer */, 
            '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 */, 
            '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 */
                    }
                ]
            }, 
            '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 */
        }
    }
}

Player.GetProperties

Retrieves the values of the given properties

Permissions

ReadData

Syntax

{
    'jsonrpc': '2.0', 
    'method': 'Player.GetProperties', 
    'id': undefined /* integer, required */, 
    'params': -1 /* integer, required, id: Player.Id, minimum: 0, maximum: 2 */ or [ /* array, required, all items must be unique */
        'type' /* string, id: Player.Property.Name */
    ]
}

Returns

{
    'jsonrpc': '2.0', 
    'method': 'Player.GetProperties', 
    'id': undefined /* integer, required */, 
    'result': { /* id: Player.Property.Value */
        'audiostreams': [ /* array */
            { /* id: Player.Audio.Stream */
                'index': undefined /* integer, required, minimum: 0 */, 
                'language': undefined /* string, required */, 
                'name': undefined /* string, required */
            }
        ], 
        'canchangespeed': false /* boolean */, 
        'canmove': false /* boolean */, 
        'canrepeat': false /* boolean */, 
        'canrotate': false /* boolean */, 
        'canseek': false /* boolean */, 
        'canshuffle': false /* boolean */, 
        'canzoom': false /* boolean */, 
        'currentaudiostream': { /* id: Player.Audio.Stream.Extended */
            'bitrate': undefined /* integer, required */, 
            'channels': undefined /* integer, required */, 
            'codec': undefined /* string, required */, 
            'index': undefined /* integer, required, minimum: 0 */, 
            'language': undefined /* string, required */, 
            'name': undefined /* string, required */
        }, 
        'currentsubtitle': { /* id: Player.Subtitle */
            'index': undefined /* integer, required, minimum: 0 */, 
            'language': undefined /* string, required */, 
            'name': undefined /* string, required */
        }, 
        'partymode': false /* boolean */, 
        'percentage': 0 /* number, id: Player.Position.Percentage, minimum: 0, maximum: 100 */, 
        'playlistid': -1 /* integer, id: Playlist.Id, minimum: 0, maximum: 2 */, 
        'position': -1 /* integer, id: Playlist.Position, minimum: 0 */, 
        'repeat': 'off' /* string, id: Player.Repeat */, 
        'shuffled': false /* boolean */, 
        'speed': 0 /* integer */, 
        'subtitleenabled': false /* boolean */, 
        'subtitles': [ /* array */
            { /* id: Player.Subtitle */
                'index': undefined /* integer, required, minimum: 0 */, 
                'language': undefined /* string, required */, 
                'name': undefined /* string, required */
            }
        ], 
        'time': { /* id: Global.Time, no additional properties allowed */
            '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 */
        }, 
        'totaltime': { /* id: Global.Time, no additional properties allowed */
            '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 */
        }, 
        'type': 'video' /* string, id: Player.Type */
    }
}

Player.GoNext

Go to next item on the playlist

Permissions

ControlPlayback

Syntax

{
    'jsonrpc': '2.0', 
    'method': 'Player.GoNext', 
    'id': undefined /* integer, required */, 
    'params': -1 /* integer, required, id: Player.Id, minimum: 0, maximum: 2 */
}

Returns

{
    'jsonrpc': '2.0', 
    'method': 'Player.GoNext', 
    'id': undefined /* integer, required */, 
    'result': undefined /* string */
}

Player.GoPrevious

Go to previous item on the playlist

Permissions

ControlPlayback

Syntax

{
    'jsonrpc': '2.0', 
    'method': 'Player.GoPrevious', 
    'id': undefined /* integer, required */, 
    'params': -1 /* integer, required, id: Player.Id, minimum: 0, maximum: 2 */
}

Returns

{
    'jsonrpc': '2.0', 
    'method': 'Player.GoPrevious', 
    'id': undefined /* integer, required */, 
    'result': undefined /* string */
}

Player.GoTo

Go to item at the given position in the playlist

Permissions

ControlPlayback

Syntax

{
    'jsonrpc': '2.0', 
    'method': 'Player.GoTo', 
    'id': undefined /* integer, required */, 
    'params': -1 /* integer, required, id: Player.Id, minimum: 0, maximum: 2 */ or -1 /* integer, required, id: Playlist.Position, minimum: 0 */
}

Returns

{
    'jsonrpc': '2.0', 
    'method': 'Player.GoTo', 
    'id': undefined /* integer, required */, 
    'result': undefined /* string */
}

Player.MoveDown

If picture is zoomed move viewport down

Permissions

ControlPlayback

Syntax

{
    'jsonrpc': '2.0', 
    'method': 'Player.MoveDown', 
    'id': undefined /* integer, required */, 
    'params': -1 /* integer, required, id: Player.Id, minimum: 0, maximum: 2 */
}

Returns

{
    'jsonrpc': '2.0', 
    'method': 'Player.MoveDown', 
    'id': undefined /* integer, required */, 
    'result': undefined /* string */
}

Player.MoveLeft

If picture is zoomed move viewport left otherwise skip previous

Permissions

ControlPlayback

Syntax

{
    'jsonrpc': '2.0', 
    'method': 'Player.MoveLeft', 
    'id': undefined /* integer, required */, 
    'params': -1 /* integer, required, id: Player.Id, minimum: 0, maximum: 2 */
}

Returns

{
    'jsonrpc': '2.0', 
    'method': 'Player.MoveLeft', 
    'id': undefined /* integer, required */, 
    'result': undefined /* string */
}

Player.MoveRight

If picture is zoomed move viewport right otherwise skip next

Permissions

ControlPlayback

Syntax

{
    'jsonrpc': '2.0', 
    'method': 'Player.MoveRight', 
    'id': undefined /* integer, required */, 
    'params': -1 /* integer, required, id: Player.Id, minimum: 0, maximum: 2 */
}

Returns

{
    'jsonrpc': '2.0', 
    'method': 'Player.MoveRight', 
    'id': undefined /* integer, required */, 
    'result': undefined /* string */
}

Player.MoveUp

If picture is zoomed move viewport up

Permissions

ControlPlayback

Syntax

{
    'jsonrpc': '2.0', 
    'method': 'Player.MoveUp', 
    'id': undefined /* integer, required */, 
    'params': -1 /* integer, required, id: Player.Id, minimum: 0, maximum: 2 */
}

Returns

{
    'jsonrpc': '2.0', 
    'method': 'Player.MoveUp', 
    'id': undefined /* integer, required */, 
    'result': undefined /* 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

Syntax

{
    'jsonrpc': '2.0', 
    'method': 'Player.Open', 
    'id': undefined /* integer, required */, 
    'params': { /* no additional properties allowed */
        'playlistid': -1 /* integer, required, id: Playlist.Id, minimum: 0, maximum: 2 */, 
        'position': -1 /* integer, id: Playlist.Position, minimum: 0 */
    } or { /* no additional properties allowed */
        'file': undefined /* string, required, Path to a file (not a directory) to be added to the playlist */
    } or { /* no additional properties allowed */
        'directory': undefined /* string, required */
    } or { /* no additional properties allowed */
        'movieid': -1 /* integer, required, id: Library.Id, minimum: 1 */
    } or { /* no additional properties allowed */
        'episodeid': -1 /* integer, required, id: Library.Id, minimum: 1 */
    } or { /* no additional properties allowed */
        'musicvideoid': -1 /* integer, required, id: Library.Id, minimum: 1 */
    } or { /* no additional properties allowed */
        'artistid': -1 /* integer, required, id: Library.Id, minimum: 1 */
    } 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 */
    } or { /* no additional properties allowed */
        'path': undefined /* string, required */, 
        'random': true /* boolean */, 
        'recursive': true /* boolean */
    }
}

Returns

{
    'jsonrpc': '2.0', 
    'method': 'Player.Open', 
    'id': undefined /* integer, required */, 
    'result': undefined /* string */
}

Player.PlayPause

Pauses or unpause playback and returns the new state

Permissions

ControlPlayback

Syntax

{
    'jsonrpc': '2.0', 
    'method': 'Player.PlayPause', 
    'id': undefined /* integer, required */, 
    'params': -1 /* integer, required, id: Player.Id, minimum: 0, maximum: 2 */
}

Returns

{
    'jsonrpc': '2.0', 
    'method': 'Player.PlayPause', 
    'id': undefined /* integer, required */, 
    'result': { /* required, id: Player.Speed */
        'speed': 0 /* integer */
    }
}

Player.Repeat

Set the repeat mode of the player

Permissions

ControlPlayback

Syntax

{
    'jsonrpc': '2.0', 
    'method': 'Player.Repeat', 
    'id': undefined /* integer, required */, 
    'params': -1 /* integer, required, id: Player.Id, minimum: 0, maximum: 2 */ or 'off' /* string, required, id: Player.Repeat */
}

Returns

{
    'jsonrpc': '2.0', 
    'method': 'Player.Repeat', 
    'id': undefined /* integer, required */, 
    'result': undefined /* string */
}

Player.Rotate

Rotates current picture

Permissions

ControlPlayback

Syntax

{
    'jsonrpc': '2.0', 
    'method': 'Player.Rotate', 
    'id': undefined /* integer, required */, 
    'params': -1 /* integer, required, id: Player.Id, minimum: 0, maximum: 2 */
}

Returns

{
    'jsonrpc': '2.0', 
    'method': 'Player.Rotate', 
    'id': undefined /* integer, required */, 
    'result': undefined /* string */
}

Player.Seek

Seek through the playing item

Permissions

ControlPlayback

Syntax

{
    'jsonrpc': '2.0', 
    'method': 'Player.Seek', 
    'id': undefined /* integer, required */, 
    'params': -1 /* integer, required, id: Player.Id, minimum: 0, maximum: 2 */ or 0 /* number, id: Player.Position.Percentage, minimum: 0, maximum: 100, Percentage value to seek to */ or { /* 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 */
}

Returns

{
    'jsonrpc': '2.0', 
    'method': 'Player.Seek', 
    'id': undefined /* integer, required */, 
    'result': {
        'percentage': 0 /* number, id: Player.Position.Percentage, minimum: 0, maximum: 100 */, 
        'time': { /* id: Global.Time, no additional properties allowed */
            '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 */
        }, 
        'totaltime': { /* id: Global.Time, no additional properties allowed */
            '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 */
        }
    }
}

Player.SetAudioStream

Set the audio stream played by the player

Permissions

ControlPlayback

Syntax

{
    'jsonrpc': '2.0', 
    'method': 'Player.SetAudioStream', 
    'id': undefined /* integer, required */, 
    'params': -1 /* integer, required, id: Player.Id, minimum: 0, maximum: 2 */ or undefined /* string */ or undefined /* integer, minimum: 0, Index of the audio stream to play */
}

Returns

{
    'jsonrpc': '2.0', 
    'method': 'Player.SetAudioStream', 
    'id': undefined /* integer, required */, 
    'result': undefined /* string */
}

Player.SetSpeed

Set the speed of the current playback

Permissions

ControlPlayback

Syntax

{
    'jsonrpc': '2.0', 
    'method': 'Player.SetSpeed', 
    'id': undefined /* integer, required */, 
    'params': -1 /* integer, required, id: Player.Id, minimum: 0, maximum: 2 */ or undefined /* integer */ or undefined /* string */
}

Returns

{
    'jsonrpc': '2.0', 
    'method': 'Player.SetSpeed', 
    'id': undefined /* integer, required */, 
    'result': { /* required, id: Player.Speed */
        'speed': 0 /* integer */
    }
}

Player.SetSubtitle

Set the subtitle displayed by the player

Permissions

ControlPlayback

Syntax

{
    'jsonrpc': '2.0', 
    'method': 'Player.SetSubtitle', 
    'id': undefined /* integer, required */, 
    'params': -1 /* integer, required, id: Player.Id, minimum: 0, maximum: 2 */ or undefined /* string */ or undefined /* integer, minimum: 0, Index of the subtitle to display */
}

Returns

{
    'jsonrpc': '2.0', 
    'method': 'Player.SetSubtitle', 
    'id': undefined /* integer, required */, 
    'result': undefined /* string */
}

Player.Shuffle

Shuffle items in the player

Permissions

ControlPlayback

Syntax

{
    'jsonrpc': '2.0', 
    'method': 'Player.Shuffle', 
    'id': undefined /* integer, required */, 
    'params': -1 /* integer, required, id: Player.Id, minimum: 0, maximum: 2 */
}

Returns

{
    'jsonrpc': '2.0', 
    'method': 'Player.Shuffle', 
    'id': undefined /* integer, required */, 
    'result': undefined /* string */
}

Player.Stop

Stops playback

Permissions

ControlPlayback

Syntax

{
    'jsonrpc': '2.0', 
    'method': 'Player.Stop', 
    'id': undefined /* integer, required */, 
    'params': -1 /* integer, required, id: Player.Id, minimum: 0, maximum: 2 */
}

Returns

{
    'jsonrpc': '2.0', 
    'method': 'Player.Stop', 
    'id': undefined /* integer, required */, 
    'result': undefined /* string */
}

Player.UnShuffle

Unshuffle items in the player

Permissions

ControlPlayback

Syntax

{
    'jsonrpc': '2.0', 
    'method': 'Player.UnShuffle', 
    'id': undefined /* integer, required */, 
    'params': -1 /* integer, required, id: Player.Id, minimum: 0, maximum: 2 */
}

Returns

{
    'jsonrpc': '2.0', 
    'method': 'Player.UnShuffle', 
    'id': undefined /* integer, required */, 
    'result': undefined /* string */
}

Player.Zoom

Zooms current picture

Permissions

ControlPlayback

Syntax

{
    'jsonrpc': '2.0', 
    'method': 'Player.Zoom', 
    'id': undefined /* integer, required */, 
    'params': -1 /* integer, required, id: Player.Id, minimum: 0, maximum: 2 */ or undefined /* integer, required, minimum: 1, maximum: 10, Zoom level */
}

Returns

{
    'jsonrpc': '2.0', 
    'method': 'Player.Zoom', 
    'id': undefined /* integer, required */, 
    'result': undefined /* string */
}

Player.ZoomIn

Zoom in once

Permissions

ControlPlayback

Syntax

{
    'jsonrpc': '2.0', 
    'method': 'Player.ZoomIn', 
    'id': undefined /* integer, required */, 
    'params': -1 /* integer, required, id: Player.Id, minimum: 0, maximum: 2 */
}

Returns

{
    'jsonrpc': '2.0', 
    'method': 'Player.ZoomIn', 
    'id': undefined /* integer, required */, 
    'result': undefined /* string */
}

Player.ZoomOut

Zoom out once

Permissions

ControlPlayback

Syntax

{
    'jsonrpc': '2.0', 
    'method': 'Player.ZoomOut', 
    'id': undefined /* integer, required */, 
    'params': -1 /* integer, required, id: Player.Id, minimum: 0, maximum: 2 */
}

Returns

{
    'jsonrpc': '2.0', 
    'method': 'Player.ZoomOut', 
    'id': undefined /* integer, required */, 
    'result': undefined /* string */
}

Playlist

Playlist modification

Methods

Playlist.Add

Add item(s) to playlist

Permissions

ControlPlayback

Syntax

{
    'jsonrpc': '2.0', 
    'method': 'Playlist.Add', 
    'id': undefined /* integer, required */, 
    'params': -1 /* integer, required, id: Playlist.Id, minimum: 0, maximum: 2 */ or { /* no additional properties allowed */
        'file': undefined /* string, required, Path to a file (not a directory) to be added to the playlist */
    } or { /* no additional properties allowed */
        'directory': undefined /* string, required */
    } or { /* no additional properties allowed */
        'movieid': -1 /* integer, required, id: Library.Id, minimum: 1 */
    } or { /* no additional properties allowed */
        'episodeid': -1 /* integer, required, id: Library.Id, minimum: 1 */
    } or { /* no additional properties allowed */
        'musicvideoid': -1 /* integer, required, id: Library.Id, minimum: 1 */
    } or { /* no additional properties allowed */
        'artistid': -1 /* integer, required, id: Library.Id, minimum: 1 */
    } 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 */
    }
}

Returns

{
    'jsonrpc': '2.0', 
    'method': 'Playlist.Add', 
    'id': undefined /* integer, required */, 
    'result': undefined /* string */
}

Playlist.Clear

Clear playlist

Permissions

ControlPlayback

Syntax

{
    'jsonrpc': '2.0', 
    'method': 'Playlist.Clear', 
    'id': undefined /* integer, required */, 
    'params': -1 /* integer, required, id: Playlist.Id, minimum: 0, maximum: 2 */
}

Returns

{
    'jsonrpc': '2.0', 
    'method': 'Playlist.Clear', 
    'id': undefined /* integer, required */, 
    'result': undefined /* string */
}

Playlist.GetItems

Get all items from playlist

Permissions

ReadData

Syntax

{
    'jsonrpc': '2.0', 
    'method': 'Playlist.GetItems', 
    'id': undefined /* integer, required */, 
    'params': -1 /* integer, required, id: Playlist.Id, minimum: 0, maximum: 2 */ or [ /* id: List.Fields.All */
        undefined /* string */
    ] or { /* 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 */
    } or { /* id: List.Sort */
        'ignorearticle': false /* boolean */, 
        'method': 'none' /* string */, 
        'order': 'ascending' /* string */
    }
}

Returns

{
    'jsonrpc': '2.0', 
    'method': 'Playlist.GetItems', 
    'id': undefined /* integer, required */, 
    'result': {
        'items': [ /* array, required */
            { /* id: List.Item.All */
                'album': '' /* string */, 
                'albumartist': '' /* string */, 
                'albumid': -1 /* integer, id: Library.Id, minimum: 1 */, 
                'artistid': -1 /* integer, id: Library.Id, minimum: 1 */, 
                'cast': [ /* array, id: Video.Cast */
                    { /* no additional properties allowed */
                        'name': undefined /* string, required */, 
                        'role': undefined /* string, required */, 
                        'thumbnail': '' /* string */
                    }
                ], 
                'comment': '' /* string */, 
                'country': '' /* string */, 
                'duration': 0 /* integer */, 
                'episode': 0 /* integer */, 
                'firstaired': '' /* string */, 
                'id': -1 /* integer, id: Library.Id, minimum: 1 */, 
                'imdbnumber': '' /* string */, 
                'lyrics': '' /* string */, 
                'mpaa': '' /* string */, 
                'musicbrainzartistid': '' /* string */, 
                'musicbrainztrackid': '' /* string */, 
                'originaltitle': '' /* string */, 
                'plotoutline': '' /* string */, 
                'premiered': '' /* string */, 
                'productioncode': '' /* string */, 
                'season': 0 /* integer */, 
                '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 */, 
                '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 */
                        }
                    ]
                }, 
                '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 */
        }
    }
}

Playlist.GetPlaylists

Returns all existing playlists

Permissions

ReadData

Syntax

{
    'jsonrpc': '2.0', 
    'method': 'Playlist.GetPlaylists', 
    'id': undefined /* integer, required */
}

Returns

{
    'jsonrpc': '2.0', 
    'method': 'Playlist.GetPlaylists', 
    'id': undefined /* integer, required */, 
    'result': [ /* array, all items must be unique */
        {
            'playlistid': -1 /* integer, required, id: Playlist.Id, minimum: 0, maximum: 2 */, 
            'type': 'unknown' /* string, required, id: Playlist.Type */
        }
    ]
}

Playlist.GetProperties

Retrieves the values of the given properties

Permissions

ReadData

Syntax

{
    'jsonrpc': '2.0', 
    'method': 'Playlist.GetProperties', 
    'id': undefined /* integer, required */, 
    'params': -1 /* integer, required, id: Playlist.Id, minimum: 0, maximum: 2 */ or [ /* array, required, all items must be unique */
        'type' /* string, id: Playlist.Property.Name */
    ]
}

Returns

{
    'jsonrpc': '2.0', 
    'method': 'Playlist.GetProperties', 
    'id': undefined /* integer, required */, 
    'result': { /* id: Playlist.Property.Value */
        'size': 0 /* integer, minimum: 0 */, 
        'type': 'unknown' /* string, id: Playlist.Type */
    }
}

Playlist.Insert

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

Permissions

ControlPlayback

Syntax

{
    'jsonrpc': '2.0', 
    'method': 'Playlist.Insert', 
    'id': undefined /* integer, required */, 
    'params': -1 /* integer, required, id: Playlist.Id, minimum: 0, maximum: 2 */ or -1 /* integer, required, id: Playlist.Position, minimum: 0 */ or { /* no additional properties allowed */
        'file': undefined /* string, required, Path to a file (not a directory) to be added to the playlist */
    } or { /* no additional properties allowed */
        'directory': undefined /* string, required */
    } or { /* no additional properties allowed */
        'movieid': -1 /* integer, required, id: Library.Id, minimum: 1 */
    } or { /* no additional properties allowed */
        'episodeid': -1 /* integer, required, id: Library.Id, minimum: 1 */
    } or { /* no additional properties allowed */
        'musicvideoid': -1 /* integer, required, id: Library.Id, minimum: 1 */
    } or { /* no additional properties allowed */
        'artistid': -1 /* integer, required, id: Library.Id, minimum: 1 */
    } 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 */
    }
}

Returns

{
    'jsonrpc': '2.0', 
    'method': 'Playlist.Insert', 
    'id': undefined /* integer, required */, 
    'result': undefined /* string */
}

Playlist.Remove

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

Permissions

ControlPlayback

Syntax

{
    'jsonrpc': '2.0', 
    'method': 'Playlist.Remove', 
    'id': undefined /* integer, required */, 
    'params': -1 /* integer, required, id: Playlist.Id, minimum: 0, maximum: 2 */ or -1 /* integer, required, id: Playlist.Position, minimum: 0 */
}

Returns

{
    'jsonrpc': '2.0', 
    'method': 'Playlist.Remove', 
    'id': undefined /* integer, required */, 
    'result': undefined /* string */
}

Playlist.Swap

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

Permissions

ControlPlayback

Syntax

{
    'jsonrpc': '2.0', 
    'method': 'Playlist.Swap', 
    'id': undefined /* integer, required */, 
    'params': -1 /* integer, required, id: Playlist.Id, minimum: 0, maximum: 2 */ or -1 /* integer, required, id: Playlist.Position, minimum: 0 */ or -1 /* integer, required, id: Playlist.Position, minimum: 0 */
}

Returns

{
    'jsonrpc': '2.0', 
    'method': 'Playlist.Swap', 
    'id': undefined /* integer, required */, 
    'result': undefined /* string */
}

Files

Shares information

Methods

Files.GetDirectory

Get the directories and files in the given directory

Permissions

ReadData

Syntax

{
    'jsonrpc': '2.0', 
    'method': 'Files.GetDirectory', 
    'id': undefined /* integer, required */, 
    'params': undefined /* string, required */ or 'video' /* string, id: Files.Media */ or [ /* id: List.Fields.All */
        undefined /* string */
    ] or { /* id: List.Sort */
        'ignorearticle': false /* boolean */, 
        'method': 'none' /* string */, 
        'order': 'ascending' /* string */
    }
}

Returns

{
    'jsonrpc': '2.0', 
    'method': 'Files.GetDirectory', 
    'id': undefined /* integer, required */, 
    'result': {
        'files': [ /* array, required */
            { /* id: List.Item.File */
                'file': '' /* string */, 
                'filetype': undefined /* string, required */, 
                'album': '' /* string */, 
                'albumartist': '' /* string */, 
                'albumid': -1 /* integer, id: Library.Id, minimum: 1 */, 
                'artistid': -1 /* integer, id: Library.Id, minimum: 1 */, 
                'cast': [ /* array, id: Video.Cast */
                    { /* no additional properties allowed */
                        'name': undefined /* string, required */, 
                        'role': undefined /* string, required */, 
                        'thumbnail': '' /* string */
                    }
                ], 
                'comment': '' /* string */, 
                'country': '' /* string */, 
                'duration': 0 /* integer */, 
                'episode': 0 /* integer */, 
                'firstaired': '' /* string */, 
                'id': -1 /* integer, id: Library.Id, minimum: 1 */, 
                'imdbnumber': '' /* string */, 
                'lyrics': '' /* string */, 
                'mpaa': '' /* string */, 
                'musicbrainzartistid': '' /* string */, 
                'musicbrainztrackid': '' /* string */, 
                'originaltitle': '' /* string */, 
                'plotoutline': '' /* string */, 
                'premiered': '' /* string */, 
                'productioncode': '' /* string */, 
                'season': 0 /* integer */, 
                '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 */, 
                '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 */
                        }
                    ]
                }, 
                '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 */
        }
    }
}

Files.GetSources

Get the sources of the media windows

Permissions

ReadData

Syntax

{
    'jsonrpc': '2.0', 
    'method': 'Files.GetSources', 
    'id': undefined /* integer, required */, 
    'params': 'video' /* string, required, id: Files.Media */ or { /* 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 */
    } or { /* id: List.Sort */
        'ignorearticle': false /* boolean */, 
        'method': 'none' /* string */, 
        'order': 'ascending' /* string */
    }
}

Returns

{
    'jsonrpc': '2.0', 
    'method': 'Files.GetSources', 
    '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 */
        }, 
        'sources': [ /* array, required, id: List.Items.Sources */
            {
                'file': undefined /* string, required */
            }
        ]
    }
}

Files.PrepareDownload

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

Permissions

ReadData

Syntax

{
    'jsonrpc': '2.0', 
    'method': 'Files.PrepareDownload', 
    'id': undefined /* integer, required */, 
    'params': undefined /* string, required */
}

Returns

{
    'jsonrpc': '2.0', 
    'method': 'Files.PrepareDownload', 
    'id': undefined /* integer, required */, 
    'result': {
        'details': undefined /* any, required, Transport specific details on how/from where to download the given file */, 
        'mode': undefined /* string, required, Direct mode allows using Files.Download whereas redirect mode requires the usage of a different protocol */, 
        'protocol': undefined /* string, required */
    }
}

AudioLibrary

Audio Library information

Notifications

AudioLibrary.OnRemove

An audio item has been removed.

Returns

{
    'jsonrpc': '2.0', 
    'method': 'AudioLibrary.OnRemove', 
    'params': undefined /* string, required */ or { /* required */
        'id': -1 /* integer, required, id: Library.Id, minimum: 1 */, 
        'type': undefined /* required */
    }
}

AudioLibrary.OnUpdate

An audio item has been updated.

Returns

{
    'jsonrpc': '2.0', 
    'method': 'AudioLibrary.OnUpdate', 
    'params': undefined /* string, required */ or { /* required */
        'id': -1 /* integer, required, id: Library.Id, minimum: 1 */, 
        'type': undefined /* string ('song'), required, id: Notifications.Library.Audio.Type */
    }
}

Methods

AudioLibrary.Clean

Cleans the audio library from non-existent items

Permissions

RemoveData

Syntax

{
    'jsonrpc': '2.0', 
    'method': 'AudioLibrary.Clean', 
    'id': undefined /* integer, required */
}

Returns

{
    'jsonrpc': '2.0', 
    'method': 'AudioLibrary.Clean', 
    'id': undefined /* integer, required */, 
    'result': undefined /* string */
}

AudioLibrary.Export

Exports all items from the audio library

Permissions

WriteFile

Syntax

{
    'jsonrpc': '2.0', 
    'method': 'AudioLibrary.Export', 
    'id': undefined /* integer, required */, 
    'params': { /* 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 */
    }
}

Returns

{
    'jsonrpc': '2.0', 
    'method': 'AudioLibrary.Export', 
    'id': undefined /* integer, required */, 
    'result': undefined /* string */
}

AudioLibrary.GetAlbumDetails

Retrieve details about a specific album

Permissions

ReadData

Syntax

{
    'jsonrpc': '2.0', 
    'method': 'AudioLibrary.GetAlbumDetails', 
    'id': undefined /* integer, required */, 
    'params': -1 /* integer, required, id: Library.Id, minimum: 1 */ or [ /* id: Audio.Fields.Album */
        undefined /* string */
    ]
}

Returns

{
    'jsonrpc': '2.0', 
    'method': 'AudioLibrary.GetAlbumDetails', 
    'id': undefined /* integer, required */, 
    'result': {
        'albumdetails': { /* 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 */
        }
    }
}

AudioLibrary.GetAlbums

Retrieve all albums from specified artist or genre

Permissions

ReadData

Syntax

{
    'jsonrpc': '2.0', 
    'method': 'AudioLibrary.GetAlbums', 
    'id': undefined /* integer, required */, 
    'params': -1 /* integer, id: Library.Id, minimum: 1 */ or -1 /* integer, id: Library.Id, minimum: 1 */ or [ /* id: Audio.Fields.Album */
        undefined /* string */
    ] or { /* 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 */
    } or { /* id: List.Sort */
        'ignorearticle': false /* boolean */, 
        'method': 'none' /* string */, 
        'order': 'ascending' /* string */
    }
}

Returns

{
    'jsonrpc': '2.0', 
    'method': 'AudioLibrary.GetAlbums', 
    'id': undefined /* integer, required */, 
    'result': {
        'albums': [ /* array */
            { /* 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 */
        }
    }
}

AudioLibrary.GetArtistDetails

Retrieve details about a specific artist

Permissions

ReadData

Syntax

{
    'jsonrpc': '2.0', 
    'method': 'AudioLibrary.GetArtistDetails', 
    'id': undefined /* integer, required */, 
    'params': -1 /* integer, required, id: Library.Id, minimum: 1 */ or [ /* id: Audio.Fields.Artist */
        undefined /* string */
    ]
}

Returns

{
    'jsonrpc': '2.0', 
    'method': 'AudioLibrary.GetArtistDetails', 
    'id': undefined /* integer, required */, 
    'result': {
        'artistdetails': { /* id: Audio.Details.Artist */
            '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 */
        }
    }
}

AudioLibrary.GetArtists

Retrieve all artists

Permissions

ReadData

Syntax

{
    'jsonrpc': '2.0', 
    'method': 'AudioLibrary.GetArtists', 
    'id': undefined /* integer, required */, 
    'params': undefined /* null */ or undefined /* boolean */ or -1 /* integer, id: Library.Id, minimum: 1 */ or [ /* id: Audio.Fields.Artist */
        undefined /* string */
    ] or { /* 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 */
    } or { /* id: List.Sort */
        'ignorearticle': false /* boolean */, 
        'method': 'none' /* string */, 
        'order': 'ascending' /* string */
    }
}

Returns

{
    'jsonrpc': '2.0', 
    'method': 'AudioLibrary.GetArtists', 
    'id': undefined /* integer, required */, 
    'result': {
        'artists': [ /* array */
            { /* id: Audio.Details.Artist */
                '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 */
            }
        ], 
        '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 */
        }
    }
}

AudioLibrary.GetGenres

Retrieve all genres

Permissions

ReadData

Syntax

{
    'jsonrpc': '2.0', 
    'method': 'AudioLibrary.GetGenres', 
    'id': undefined /* integer, required */, 
    'params': [ /* id: Library.Fields.Genre */
        undefined /* string */
    ] or { /* 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 */
    } or { /* id: List.Sort */
        'ignorearticle': false /* boolean */, 
        'method': 'none' /* string */, 
        'order': 'ascending' /* string */
    }
}

Returns

{
    'jsonrpc': '2.0', 
    'method': 'AudioLibrary.GetGenres', 
    'id': undefined /* integer, required */, 
    'result': {
        'genres': [ /* array, required */
            { /* id: Library.Details.Genre */
                '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 */
        }
    }
}

AudioLibrary.GetRecentlyAddedAlbums

Retrieve recently added albums

Permissions

ReadData

Syntax

{
    'jsonrpc': '2.0', 
    'method': 'AudioLibrary.GetRecentlyAddedAlbums', 
    'id': undefined /* integer, required */, 
    'params': [ /* id: Audio.Fields.Album */
        undefined /* string */
    ] or { /* 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 */
    } or { /* id: List.Sort */
        'ignorearticle': false /* boolean */, 
        'method': 'none' /* string */, 
        'order': 'ascending' /* string */
    }
}

Returns

{
    'jsonrpc': '2.0', 
    'method': 'AudioLibrary.GetRecentlyAddedAlbums', 
    'id': undefined /* integer, required */, 
    'result': {
        'albums': [ /* array */
            { /* 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 */
        }
    }
}

AudioLibrary.GetRecentlyAddedSongs

Retrieve recently added songs

Permissions

ReadData

Syntax

{
    'jsonrpc': '2.0', 
    'method': 'AudioLibrary.GetRecentlyAddedSongs', 
    'id': undefined /* integer, required */, 
    'params': -1 /* integer, id: List.Amount, minimum: 0, The amount of recently added albums from which to return the songs */ or [ /* id: Audio.Fields.Song */
        undefined /* string */
    ] or { /* 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 */
    } or { /* id: List.Sort */
        'ignorearticle': false /* boolean */, 
        'method': 'none' /* string */, 
        'order': 'ascending' /* string */
    }
}

Returns

{
    'jsonrpc': '2.0', 
    'method': 'AudioLibrary.GetRecentlyAddedSongs', 
    '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 */
            { /* 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 */, 
                '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 */
            }
        ]
    }
}

AudioLibrary.GetSongDetails

Retrieve details about a specific song

Permissions

ReadData

Syntax

{
    'jsonrpc': '2.0', 
    'method': 'AudioLibrary.GetSongDetails', 
    'id': undefined /* integer, required */, 
    'params': -1 /* integer, required, id: Library.Id, minimum: 1 */ or [ /* id: Audio.Fields.Song */
        undefined /* string */
    ]
}

Returns

{
    'jsonrpc': '2.0', 
    'method': 'AudioLibrary.GetSongDetails', 
    'id': undefined /* integer, required */, 
    'result': {
        'songdetails': { /* 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 */, 
            '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 */
        }
    }
}

AudioLibrary.GetSongs

Retrieve all songs from specified album, artist or genre

Permissions

ReadData

Syntax

{
    'jsonrpc': '2.0', 
    'method': 'AudioLibrary.GetSongs', 
    'id': undefined /* integer, required */, 
    'params': -1 /* integer, id: Library.Id, minimum: 1 */ or -1 /* integer, id: Library.Id, minimum: 1 */ or -1 /* integer, id: Library.Id, minimum: 1 */ or [ /* id: Audio.Fields.Song */
        undefined /* string */
    ] or { /* 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 */
    } or { /* id: List.Sort */
        'ignorearticle': false /* boolean */, 
        'method': 'none' /* string */, 
        'order': 'ascending' /* string */
    }
}

Returns

{
    '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 */
            { /* 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 */, 
                '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 */
            }
        ]
    }
}

AudioLibrary.Scan

Scans the audio sources for new library items

Permissions

UpdateData

Syntax

{
    'jsonrpc': '2.0', 
    'method': 'AudioLibrary.Scan', 
    'id': undefined /* integer, required */
}

Returns

{
    'jsonrpc': '2.0', 
    'method': 'AudioLibrary.Scan', 
    'id': undefined /* integer, required */, 
    'result': undefined /* string */
}

VideoLibrary

Video Library information

Notifications

VideoLibrary.OnRemove

A video item has been removed.

Returns

{
    'jsonrpc': '2.0', 
    'method': 'VideoLibrary.OnRemove', 
    'params': undefined /* string, required */ or { /* required */
        'id': -1 /* integer, required, id: Library.Id, minimum: 1 */, 
        'type': undefined /* required */
    }
}

VideoLibrary.OnUpdate

A video item has been updated.

Returns

{
    'jsonrpc': '2.0', 
    'method': 'VideoLibrary.OnUpdate', 
    'params': undefined /* string, required */ or { /* required */
        'id': -1 /* integer, required, id: Library.Id, minimum: 1 */, 
        'playcount': -1 /* integer, minimum: 0 */, 
        'type': undefined /* string ('movie', 'tvshow', 'episode', 'musicvideo'), required, id: Notifications.Library.Video.Type */
    }
}

Methods

VideoLibrary.Clean

Cleans the video library from non-existent items

Permissions

RemoveData

Syntax

{
    'jsonrpc': '2.0', 
    'method': 'VideoLibrary.Clean', 
    'id': undefined /* integer, required */
}

Returns

{
    'jsonrpc': '2.0', 
    'method': 'VideoLibrary.Clean', 
    'id': undefined /* integer, required */, 
    'result': undefined /* string */
}

VideoLibrary.Export

Exports all items from the video library

Permissions

WriteFile

Syntax

{
    'jsonrpc': '2.0', 
    'method': 'VideoLibrary.Export', 
    'id': undefined /* integer, required */, 
    'params': { /* 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 */
        'actorthumbs': false /* boolean, Whether to export actor thumbnails */, 
        'images': false /* boolean, Whether to export thumbnails and fanart images */, 
        'overwrite': false /* boolean, Whether to overwrite existing exported files */
    }
}

Returns

{
    'jsonrpc': '2.0', 
    'method': 'VideoLibrary.Export', 
    'id': undefined /* integer, required */, 
    'result': undefined /* string */
}

VideoLibrary.GetEpisodeDetails

Retrieve details about a specific tv show episode

Permissions

ReadData

Syntax

{
    'jsonrpc': '2.0', 
    'method': 'VideoLibrary.GetEpisodeDetails', 
    'id': undefined /* integer, required */, 
    'params': -1 /* integer, required, id: Library.Id, minimum: 1 */ or [ /* id: Video.Fields.Episode */
        undefined /* string, Requesting the cast and/or resume field will result in increased response times */
    ]
}

Returns

{
    'jsonrpc': '2.0', 
    'method': 'VideoLibrary.GetEpisodeDetails', 
    'id': undefined /* integer, required */, 
    'result': {
        'episodedetails': { /* id: Video.Details.Episode */
            'cast': [ /* array, id: Video.Cast */
                { /* no additional properties allowed */
                    'name': undefined /* string, required */, 
                    'role': undefined /* string, required */, 
                    'thumbnail': '' /* 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 */
                    }
                ]
            }, 
            'file': '' /* string */, 
            'lastplayed': '' /* string */, 
            'plot': '' /* string */, 
            'title': '' /* string */, 
            'playcount': 0 /* integer */, 
            'fanart': '' /* string */, 
            'thumbnail': '' /* string */, 
            'label': undefined /* string, required */
        }
    }
}

VideoLibrary.GetEpisodes

Retrieve all tv show episodes

Permissions

ReadData

Syntax

{
    'jsonrpc': '2.0', 
    'method': 'VideoLibrary.GetEpisodes', 
    'id': undefined /* integer, required */, 
    'params': -1 /* integer, id: Library.Id, minimum: 1 */ or -1 /* integer, minimum: 0 */ or [ /* id: Video.Fields.Episode */
        undefined /* string, Requesting the cast and/or resume field will result in increased response times */
    ] or { /* 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 */
    } or { /* id: List.Sort */
        'ignorearticle': false /* boolean */, 
        'method': 'none' /* string */, 
        'order': 'ascending' /* string */
    }
}

Returns

{
    'jsonrpc': '2.0', 
    'method': 'VideoLibrary.GetEpisodes', 
    'id': undefined /* integer, required */, 
    'result': {
        'episodes': [ /* array */
            { /* id: Video.Details.Episode */
                'cast': [ /* array, id: Video.Cast */
                    { /* no additional properties allowed */
                        'name': undefined /* string, required */, 
                        'role': undefined /* string, required */, 
                        'thumbnail': '' /* 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 */
                        }
                    ]
                }, 
                '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 */
        }
    }
}

VideoLibrary.GetGenres

Retrieve all genres

Permissions

ReadData

Syntax

{
    'jsonrpc': '2.0', 
    'method': 'VideoLibrary.GetGenres', 
    'id': undefined /* integer, required */, 
    'params': undefined /* string, required */ or [ /* id: Library.Fields.Genre */
        undefined /* string */
    ] or { /* 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 */
    } or { /* id: List.Sort */
        'ignorearticle': false /* boolean */, 
        'method': 'none' /* string */, 
        'order': 'ascending' /* string */
    }
}

Returns

{
    'jsonrpc': '2.0', 
    'method': 'VideoLibrary.GetGenres', 
    'id': undefined /* integer, required */, 
    'result': {
        'genres': [ /* array, required */
            { /* id: Library.Details.Genre */
                '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 */
        }
    }
}

VideoLibrary.GetMovieDetails

Retrieve details about a specific movie

Permissions

ReadData

Syntax

{
    'jsonrpc': '2.0', 
    'method': 'VideoLibrary.GetMovieDetails', 
    'id': undefined /* integer, required */, 
    'params': -1 /* integer, required, id: Library.Id, minimum: 1 */ or [ /* id: Video.Fields.Movie */
        undefined /* string, Requesting the cast, set, showling and/or resume field will result in increased response times */
    ]
}

Returns

{
    'jsonrpc': '2.0', 
    'method': 'VideoLibrary.GetMovieDetails', 
    'id': undefined /* integer, required */, 
    'result': {
        'moviedetails': { /* id: Video.Details.Movie */
            'cast': [ /* array, id: Video.Cast */
                { /* 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 */
                    }
                ]
            }, 
            'file': '' /* string */, 
            'lastplayed': '' /* string */, 
            'plot': '' /* string */, 
            'title': '' /* string */, 
            'playcount': 0 /* integer */, 
            'fanart': '' /* string */, 
            'thumbnail': '' /* string */, 
            'label': undefined /* string, required */
        }
    }
}

VideoLibrary.GetMovieSetDetails

Retrieve details about a specific movie set

Permissions

ReadData

Syntax

{
    'jsonrpc': '2.0', 
    'method': 'VideoLibrary.GetMovieSetDetails', 
    'id': undefined /* integer, required */, 
    'params': -1 /* integer, required, id: Library.Id, minimum: 1 */ or [ /* id: Video.Fields.MovieSet */
        undefined /* string */
    ] or {
        '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 */
        }, 
        'properties': [ /* id: Video.Fields.Movie */
            undefined /* string, Requesting the cast, set, showling and/or resume field will result in increased response times */
        ], 
        'sort': { /* id: List.Sort */
            'ignorearticle': false /* boolean */, 
            'method': 'none' /* string */, 
            'order': 'ascending' /* string */
        }
    }
}

Returns

{
    'jsonrpc': '2.0', 
    'method': 'VideoLibrary.GetMovieSetDetails', 
    'id': undefined /* integer, required */, 
    'result': {
        'setdetails': { /* id: Video.Details.MovieSet.Extended */
            'movies': [ /* array */
                { /* id: Video.Details.Movie */
                    'cast': [ /* array, id: Video.Cast */
                        { /* 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 */
                            }
                        ]
                    }, 
                    '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 */
        }
    }
}

VideoLibrary.GetMovieSets

Retrieve all movie sets

Permissions

ReadData

Syntax

{
    'jsonrpc': '2.0', 
    'method': 'VideoLibrary.GetMovieSets', 
    'id': undefined /* integer, required */, 
    'params': [ /* id: Video.Fields.MovieSet */
        undefined /* string */
    ] or { /* 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 */
    } or { /* id: List.Sort */
        'ignorearticle': false /* boolean */, 
        'method': 'none' /* string */, 
        'order': 'ascending' /* string */
    }
}

Returns

{
    'jsonrpc': '2.0', 
    'method': 'VideoLibrary.GetMovieSets', 
    '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 */
        }, 
        'sets': [ /* array */
            { /* id: Video.Details.MovieSet */
                'setid': -1 /* integer, required, id: Library.Id, minimum: 1 */, 
                'title': '' /* string */, 
                'playcount': 0 /* integer */, 
                'fanart': '' /* string */, 
                'thumbnail': '' /* string */, 
                'label': undefined /* string, required */
            }
        ]
    }
}

VideoLibrary.GetMovies

Retrieve all movies

Permissions

ReadData

Syntax

{
    'jsonrpc': '2.0', 
    'method': 'VideoLibrary.GetMovies', 
    'id': undefined /* integer, required */, 
    'params': [ /* id: Video.Fields.Movie */
        undefined /* string, Requesting the cast, set, showling and/or resume field will result in increased response times */
    ] or { /* 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 */
    } or { /* id: List.Sort */
        'ignorearticle': false /* boolean */, 
        'method': 'none' /* string */, 
        'order': 'ascending' /* string */
    }
}

Returns

{
    'jsonrpc': '2.0', 
    'method': 'VideoLibrary.GetMovies', 
    '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 */
        }, 
        'movies': [ /* array */
            { /* id: Video.Details.Movie */
                'cast': [ /* array, id: Video.Cast */
                    { /* 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 */
                        }
                    ]
                }, 
                'file': '' /* string */, 
                'lastplayed': '' /* string */, 
                'plot': '' /* string */, 
                'title': '' /* string */, 
                'playcount': 0 /* integer */, 
                'fanart': '' /* string */, 
                'thumbnail': '' /* string */, 
                'label': undefined /* string, required */
            }
        ]
    }
}

VideoLibrary.GetMusicVideoDetails

Retrieve details about a specific music video

Permissions

ReadData

Syntax

{
    'jsonrpc': '2.0', 
    'method': 'VideoLibrary.GetMusicVideoDetails', 
    'id': undefined /* integer, required */, 
    'params': -1 /* integer, required, id: Library.Id, minimum: 1 */ or [ /* id: Video.Fields.MusicVideo */
        undefined /* string, Requesting the resume field will result in increased response times */
    ]
}

Returns

{
    '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 */
                    }
                ]
            }, 
            'file': '' /* string */, 
            'lastplayed': '' /* string */, 
            'plot': '' /* string */, 
            'title': '' /* string */, 
            'playcount': 0 /* integer */, 
            'fanart': '' /* string */, 
            'thumbnail': '' /* string */, 
            'label': undefined /* string, required */
        }
    }
}

VideoLibrary.GetMusicVideos

Retrieve all music videos

Permissions

ReadData

Syntax

{
    'jsonrpc': '2.0', 
    'method': 'VideoLibrary.GetMusicVideos', 
    'id': undefined /* integer, required */, 
    'params': -1 /* integer, id: Library.Id, minimum: 1 */ or -1 /* integer, id: Library.Id, minimum: 1 */ or [ /* id: Video.Fields.MusicVideo */
        undefined /* string, Requesting the resume field will result in increased response times */
    ] or { /* 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 */
    } or { /* id: List.Sort */
        'ignorearticle': false /* boolean */, 
        'method': 'none' /* string */, 
        'order': 'ascending' /* string */
    }
}

Returns

{
    'jsonrpc': '2.0', 
    'method': 'VideoLibrary.GetMusicVideos', 
    '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 */
        }, 
        'musicvideos': [ /* array */
            { /* 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 */
                        }
                    ]
                }, 
                'file': '' /* string */, 
                'lastplayed': '' /* string */, 
                'plot': '' /* string */, 
                'title': '' /* string */, 
                'playcount': 0 /* integer */, 
                'fanart': '' /* string */, 
                'thumbnail': '' /* string */, 
                'label': undefined /* string, required */
            }
        ]
    }
}

VideoLibrary.GetRecentlyAddedEpisodes

Retrieve all recently added tv episodes

Permissions

ReadData

Syntax

{
    'jsonrpc': '2.0', 
    'method': 'VideoLibrary.GetRecentlyAddedEpisodes', 
    'id': undefined /* integer, required */, 
    'params': [ /* id: Video.Fields.Episode */
        undefined /* string, Requesting the cast and/or resume field will result in increased response times */
    ] or { /* 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 */
    } or { /* id: List.Sort */
        'ignorearticle': false /* boolean */, 
        'method': 'none' /* string */, 
        'order': 'ascending' /* string */
    }
}

Returns

{
    'jsonrpc': '2.0', 
    'method': 'VideoLibrary.GetRecentlyAddedEpisodes', 
    'id': undefined /* integer, required */, 
    'result': {
        'episodes': [ /* array */
            { /* id: Video.Details.Episode */
                'cast': [ /* array, id: Video.Cast */
                    { /* no additional properties allowed */
                        'name': undefined /* string, required */, 
                        'role': undefined /* string, required */, 
                        'thumbnail': '' /* 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 */
                        }
                    ]
                }, 
                '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 */
        }
    }
}

VideoLibrary.GetRecentlyAddedMovies

Retrieve all recently added movies

Permissions

ReadData

Syntax

{
    'jsonrpc': '2.0', 
    'method': 'VideoLibrary.GetRecentlyAddedMovies', 
    'id': undefined /* integer, required */, 
    'params': [ /* id: Video.Fields.Movie */
        undefined /* string, Requesting the cast, set, showling and/or resume field will result in increased response times */
    ] or { /* 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 */
    } or { /* id: List.Sort */
        'ignorearticle': false /* boolean */, 
        'method': 'none' /* string */, 
        'order': 'ascending' /* string */
    }
}

Returns

{
    'jsonrpc': '2.0', 
    'method': 'VideoLibrary.GetRecentlyAddedMovies', 
    '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 */
        }, 
        'movies': [ /* array */
            { /* id: Video.Details.Movie */
                'cast': [ /* array, id: Video.Cast */
                    { /* 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 */
                        }
                    ]
                }, 
                'file': '' /* string */, 
                'lastplayed': '' /* string */, 
                'plot': '' /* string */, 
                'title': '' /* string */, 
                'playcount': 0 /* integer */, 
                'fanart': '' /* string */, 
                'thumbnail': '' /* string */, 
                'label': undefined /* string, required */
            }
        ]
    }
}

VideoLibrary.GetRecentlyAddedMusicVideos

Retrieve all recently added music videos

Permissions

ReadData

Syntax

{
    'jsonrpc': '2.0', 
    'method': 'VideoLibrary.GetRecentlyAddedMusicVideos', 
    'id': undefined /* integer, required */, 
    'params': [ /* id: Video.Fields.MusicVideo */
        undefined /* string, Requesting the resume field will result in increased response times */
    ] or { /* 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 */
    } or { /* id: List.Sort */
        'ignorearticle': false /* boolean */, 
        'method': 'none' /* string */, 
        'order': 'ascending' /* string */
    }
}

Returns

{
    'jsonrpc': '2.0', 
    'method': 'VideoLibrary.GetRecentlyAddedMusicVideos', 
    '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 */
        }, 
        'musicvideos': [ /* array */
            { /* 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 */
                        }
                    ]
                }, 
                'file': '' /* string */, 
                'lastplayed': '' /* string */, 
                'plot': '' /* string */, 
                'title': '' /* string */, 
                'playcount': 0 /* integer */, 
                'fanart': '' /* string */, 
                'thumbnail': '' /* string */, 
                'label': undefined /* string, required */
            }
        ]
    }
}

VideoLibrary.GetSeasons

Retrieve all tv seasons

Permissions

ReadData

Syntax

{
    'jsonrpc': '2.0', 
    'method': 'VideoLibrary.GetSeasons', 
    'id': undefined /* integer, required */, 
    'params': -1 /* integer, required, id: Library.Id, minimum: 1 */ or [ /* id: Video.Fields.Season */
        undefined /* string */
    ] or { /* 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 */
    } or { /* id: List.Sort */
        'ignorearticle': false /* boolean */, 
        'method': 'none' /* string */, 
        'order': 'ascending' /* string */
    }
}

Returns

{
    'jsonrpc': '2.0', 
    'method': 'VideoLibrary.GetSeasons', 
    '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 */
        }, 
        'seasons': [ /* array */
            { /* id: Video.Details.Season */
                'episode': 0 /* integer */, 
                'season': undefined /* integer, required */, 
                'showtitle': '' /* string */, 
                'tvshowid': -1 /* integer, id: Library.Id, minimum: 1 */, 
                'playcount': 0 /* integer */, 
                'fanart': '' /* string */, 
                'thumbnail': '' /* string */, 
                'label': undefined /* string, required */
            }
        ]
    }
}

VideoLibrary.GetTVShowDetails

Retrieve details about a specific tv show

Permissions

ReadData

Syntax

{
    'jsonrpc': '2.0', 
    'method': 'VideoLibrary.GetTVShowDetails', 
    'id': undefined /* integer, required */, 
    'params': -1 /* integer, required, id: Library.Id, minimum: 1 */ or [ /* id: Video.Fields.TVShow */
        undefined /* string, Requesting the cast field will result in increased response times */
    ]
}

Returns

{
    'jsonrpc': '2.0', 
    'method': 'VideoLibrary.GetTVShowDetails', 
    'id': undefined /* integer, required */, 
    'result': {
        'tvshowdetails': { /* id: Video.Details.TVShow */
            'cast': [ /* array, id: Video.Cast */
                { /* no additional properties allowed */
                    'name': undefined /* string, required */, 
                    'role': undefined /* string, required */, 
                    'thumbnail': '' /* string */
                }
            ], 
            'episode': 0 /* integer */, 
            'episodeguide': '' /* string */, 
            'genre': '' /* string */, 
            'imdbnumber': '' /* string */, 
            'mpaa': '' /* string */, 
            'originaltitle': '' /* string */, 
            'premiered': '' /* string */, 
            'rating': 0 /* number */, 
            'sorttitle': '' /* string */, 
            'studio': '' /* string */, 
            'tvshowid': -1 /* integer, required, id: Library.Id, minimum: 1 */, 
            'votes': '' /* string */, 
            'year': 0 /* integer */, 
            'file': '' /* string */, 
            'lastplayed': '' /* string */, 
            'plot': '' /* string */, 
            'title': '' /* string */, 
            'playcount': 0 /* integer */, 
            'fanart': '' /* string */, 
            'thumbnail': '' /* string */, 
            'label': undefined /* string, required */
        }
    }
}

VideoLibrary.GetTVShows

Retrieve all tv shows

Permissions

ReadData

Syntax

{
    'jsonrpc': '2.0', 
    'method': 'VideoLibrary.GetTVShows', 
    'id': undefined /* integer, required */, 
    'params': [ /* id: Video.Fields.TVShow */
        undefined /* string, Requesting the cast field will result in increased response times */
    ] or { /* 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 */
    } or { /* id: List.Sort */
        'ignorearticle': false /* boolean */, 
        'method': 'none' /* string */, 
        'order': 'ascending' /* string */
    }
}

Returns

{
    'jsonrpc': '2.0', 
    'method': 'VideoLibrary.GetTVShows', 
    '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 */
        }, 
        'tvshows': [ /* array */
            { /* id: Video.Details.TVShow */
                'cast': [ /* array, id: Video.Cast */
                    { /* no additional properties allowed */
                        'name': undefined /* string, required */, 
                        'role': undefined /* string, required */, 
                        'thumbnail': '' /* string */
                    }
                ], 
                'episode': 0 /* integer */, 
                'episodeguide': '' /* string */, 
                'genre': '' /* string */, 
                'imdbnumber': '' /* string */, 
                'mpaa': '' /* string */, 
                'originaltitle': '' /* string */, 
                'premiered': '' /* string */, 
                'rating': 0 /* number */, 
                'sorttitle': '' /* string */, 
                'studio': '' /* string */, 
                'tvshowid': -1 /* integer, required, id: Library.Id, minimum: 1 */, 
                'votes': '' /* string */, 
                'year': 0 /* integer */, 
                'file': '' /* string */, 
                'lastplayed': '' /* string */, 
                'plot': '' /* string */, 
                'title': '' /* string */, 
                'playcount': 0 /* integer */, 
                'fanart': '' /* string */, 
                'thumbnail': '' /* string */, 
                'label': undefined /* string, required */
            }
        ]
    }
}

VideoLibrary.Scan

Scans the video sources for new library items

Permissions

UpdateData

Syntax

{
    'jsonrpc': '2.0', 
    'method': 'VideoLibrary.Scan', 
    'id': undefined /* integer, required */
}

Returns

{
    'jsonrpc': '2.0', 
    'method': 'VideoLibrary.Scan', 
    'id': undefined /* integer, required */, 
    'result': undefined /* string */
}

Input

Allows limited navigation within XBMC

Methods

Input.Back

Goes back in GUI

Permissions

Navigate

Syntax

{
    'jsonrpc': '2.0', 
    'method': 'Input.Back', 
    'id': undefined /* integer, required */
}

Returns

{
    'jsonrpc': '2.0', 
    'method': 'Input.Back', 
    'id': undefined /* integer, required */, 
    'result': undefined /* string */
}

Input.Down

Navigate down in GUI

Permissions

Navigate

Syntax

{
    'jsonrpc': '2.0', 
    'method': 'Input.Down', 
    'id': undefined /* integer, required */
}

Returns

{
    'jsonrpc': '2.0', 
    'method': 'Input.Down', 
    'id': undefined /* integer, required */, 
    'result': undefined /* string */
}

Input.Home

Goes to home window in GUI

Permissions

Navigate

Syntax

{
    'jsonrpc': '2.0', 
    'method': 'Input.Home', 
    'id': undefined /* integer, required */
}

Returns

{
    'jsonrpc': '2.0', 
    'method': 'Input.Home', 
    'id': undefined /* integer, required */, 
    'result': undefined /* string */
}

Input.Left

Navigate left in GUI

Permissions

Navigate

Syntax

{
    'jsonrpc': '2.0', 
    'method': 'Input.Left', 
    'id': undefined /* integer, required */
}

Returns

{
    'jsonrpc': '2.0', 
    'method': 'Input.Left', 
    'id': undefined /* integer, required */, 
    'result': undefined /* string */
}

Input.Right

Navigate right in GUI

Permissions

Navigate

Syntax

{
    'jsonrpc': '2.0', 
    'method': 'Input.Right', 
    'id': undefined /* integer, required */
}

Returns

{
    'jsonrpc': '2.0', 
    'method': 'Input.Right', 
    'id': undefined /* integer, required */, 
    'result': undefined /* string */
}

Input.Select

Select current item in GUI

Permissions

Navigate

Syntax

{
    'jsonrpc': '2.0', 
    'method': 'Input.Select', 
    'id': undefined /* integer, required */
}

Returns

{
    'jsonrpc': '2.0', 
    'method': 'Input.Select', 
    'id': undefined /* integer, required */, 
    'result': undefined /* string */
}

Input.Up

Navigate up in GUI

Permissions

Navigate

Syntax

{
    'jsonrpc': '2.0', 
    'method': 'Input.Up', 
    'id': undefined /* integer, required */
}

Returns

{
    'jsonrpc': '2.0', 
    'method': 'Input.Up', 
    'id': undefined /* integer, required */, 
    'result': undefined /* string */
}

Application

Application information and control

Methods

Application.GetProperties

Retrieves the values of the given properties

Permissions

ReadData

Syntax

{
    'jsonrpc': '2.0', 
    'method': 'Application.GetProperties', 
    'id': undefined /* integer, required */, 
    'params': [ /* array, required, all items must be unique */
        'volume' /* string, id: Application.Property.Name */
    ]
}

Returns

{
    'jsonrpc': '2.0', 
    'method': 'Application.GetProperties', 
    'id': undefined /* integer, required */, 
    'result': { /* id: Application.Property.Value */
        'muted': false /* boolean */, 
        'name': '' /* string, minimum length: 1 */, 
        'version': {
            'major': undefined /* integer, required, minimum: 0 */, 
            'minor': undefined /* integer, required, minimum: 0 */, 
            'revision': undefined /* string */ or undefined /* integer, minimum: 0 */, 
            'tag': undefined /* string, required */
        }, 
        'volume': 0 /* integer */
    }
}

Application.Quit

Quit application

Permissions

ControlPower

Syntax

{
    'jsonrpc': '2.0', 
    'method': 'Application.Quit', 
    'id': undefined /* integer, required */
}

Returns

{
    'jsonrpc': '2.0', 
    'method': 'Application.Quit', 
    'id': undefined /* integer, required */, 
    'result': undefined /* string */
}

Application.SetMute

Toggle mute/unmute

Permissions

ControlPlayback

Syntax

{
    'jsonrpc': '2.0', 
    'method': 'Application.SetMute', 
    'id': undefined /* integer, required */, 
    'params': undefined /* boolean */ or undefined /* string */
}

Returns

{
    'jsonrpc': '2.0', 
    'method': 'Application.SetMute', 
    'id': undefined /* integer, required */, 
    'result': undefined /* boolean, Mute state */
}

Application.SetVolume

Set the current volume

Permissions

ControlPlayback

Syntax

{
    'jsonrpc': '2.0', 
    'method': 'Application.SetVolume', 
    'id': undefined /* integer, required */, 
    'params': undefined /* integer, required, minimum: 0, maximum: 100 */
}

Returns

{
    'jsonrpc': '2.0', 
    'method': 'Application.SetVolume', 
    'id': undefined /* integer, required */, 
    'result': undefined /* integer, minimum: 0 */
}

System

System controls and information

Notifications

System.OnLowBattery

The system is on low battery.

Returns

{
    'jsonrpc': '2.0', 
    'method': 'System.OnLowBattery', 
    'params': undefined /* string, required */ or undefined /* null, required */
}

System.OnQuit

XBMC will be closed.

Returns

{
    'jsonrpc': '2.0', 
    'method': 'System.OnQuit', 
    'params': undefined /* string, required */ or undefined /* null, required */
}

System.OnRestart

The system will be restarted.

Returns

{
    'jsonrpc': '2.0', 
    'method': 'System.OnRestart', 
    'params': undefined /* string, required */ or undefined /* null, required */
}

System.OnSleep

The system will be suspended.

Returns

{
    'jsonrpc': '2.0', 
    'method': 'System.OnSleep', 
    'params': undefined /* string, required */ or undefined /* null, required */
}

System.OnWake

The system woke up from suspension.

Returns

{
    'jsonrpc': '2.0', 
    'method': 'System.OnWake', 
    'params': undefined /* string, required */ or undefined /* null, required */
}

Methods

System.GetProperties

Retrieves the values of the given properties

Permissions

ReadData

Syntax

{
    'jsonrpc': '2.0', 
    'method': 'System.GetProperties', 
    'id': undefined /* integer, required */, 
    'params': [ /* array, required, all items must be unique */
        'canshutdown' /* string, id: System.Property.Name */
    ]
}

Returns

{
    'jsonrpc': '2.0', 
    'method': 'System.GetProperties', 
    'id': undefined /* integer, required */, 
    'result': { /* id: System.Property.Value */
        'canhibernate': false /* boolean */, 
        'canreboot': false /* boolean */, 
        'canshutdown': false /* boolean */, 
        'cansuspend': false /* boolean */
    }
}

System.Hibernate

Puts the system running XBMC into hibernate mode

Permissions

ControlPower

Syntax

{
    'jsonrpc': '2.0', 
    'method': 'System.Hibernate', 
    'id': undefined /* integer, required */
}

Returns

{
    'jsonrpc': '2.0', 
    'method': 'System.Hibernate', 
    'id': undefined /* integer, required */, 
    'result': undefined /* string */
}

System.Reboot

Reboots the system running XBMC

Permissions

ControlPower

Syntax

{
    'jsonrpc': '2.0', 
    'method': 'System.Reboot', 
    'id': undefined /* integer, required */
}

Returns

{
    'jsonrpc': '2.0', 
    'method': 'System.Reboot', 
    'id': undefined /* integer, required */, 
    'result': undefined /* string */
}

System.Shutdown

Shuts the system running XBMC down

Permissions

ControlPower

Syntax

{
    'jsonrpc': '2.0', 
    'method': 'System.Shutdown', 
    'id': undefined /* integer, required */
}

Returns

{
    'jsonrpc': '2.0', 
    'method': 'System.Shutdown', 
    'id': undefined /* integer, required */, 
    'result': undefined /* string */
}

System.Suspend

Suspends the system running XBMC

Permissions

ControlPower

Syntax

{
    'jsonrpc': '2.0', 
    'method': 'System.Suspend', 
    'id': undefined /* integer, required */
}

Returns

{
    'jsonrpc': '2.0', 
    'method': 'System.Suspend', 
    'id': undefined /* integer, required */, 
    'result': undefined /* string */
}

XBMC

Dumping ground for very XBMC specific operations

Methods

XBMC.GetInfoBooleans

Retrieve info booleans about XBMC and the system

Permissions

ReadData

Syntax

{
    'jsonrpc': '2.0', 
    'method': 'XBMC.GetInfoBooleans', 
    'id': undefined /* integer, required */, 
    'params': [ /* array, required, minimum items: 1 */
        undefined /* string */
    ]
}

Returns

{
    'jsonrpc': '2.0', 
    'method': 'XBMC.GetInfoBooleans', 
    'id': undefined /* integer, required */, 
    'result': { /* List of key-value pairs of the retrieved info booleans */
        
    }
}

XBMC.GetInfoLabels

Retrieve info labels about XBMC and the system

Permissions

ReadData

Syntax

{
    'jsonrpc': '2.0', 
    'method': 'XBMC.GetInfoLabels', 
    'id': undefined /* integer, required */, 
    'params': [ /* array, required, minimum items: 1, See http://wiki.xbmc.org/index.php?title=InfoLabels for a list of possible info labels */
        undefined /* string */
    ]
}

Returns

{
    'jsonrpc': '2.0', 
    'method': 'XBMC.GetInfoLabels', 
    'id': undefined /* integer, required */, 
    'result': { /* List of key-value pairs of the retrieved info labels */
        
    }
}

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

See also

External links