only call IPlayerCallback::OnPlayBackSpeedChanged if the speed has actually changed
[vuplus_xbmc] / xbmc / interfaces / json-rpc / methods.json
1 {
2   "JSONRPC.Introspect": {
3     "type": "method",
4     "description": "Enumerates all actions and descriptions",
5     "transport": "Response",
6     "permission": "ReadData",
7     "params": [
8       { "name": "getdescriptions", "type": "boolean", "default": true },
9       { "name": "getmetadata", "type": "boolean", "default": false },
10       { "name": "filterbytransport", "type": "boolean", "default": true },
11       { "name": "filter", "type": "object",
12         "properties": {
13           "id": { "type": "string", "required": true, "description": "Name of a namespace, method or type" },
14           "type": { "type": "string", "required": true, "enum": [ "method", "namespace", "type", "notification" ], "description": "Type of the given name" },
15           "getreferences": { "type": "boolean", "default": true, "description": "Whether or not to print the schema for referenced types" }
16         }
17       }
18     ],
19     "returns": "object"
20   },
21   "JSONRPC.Version": {
22     "type": "method",
23     "description": "Retrieve the jsonrpc protocol version",
24     "transport": "Response",
25     "permission": "ReadData",
26     "params": [],
27     "returns": "string"
28   },
29   "JSONRPC.Permission": {
30     "type": "method",
31     "description": "Retrieve the clients permissions",
32     "transport": "Response",
33     "permission": "ReadData",
34     "params": [],
35     "returns": {
36       "type": "object",
37       "properties": {
38         "ReadData": { "type": "boolean", "required": true },
39         "ControlPlayback": { "type": "boolean", "required": true },
40         "ControlNotify": { "type": "boolean", "required": true },
41         "ControlPower": { "type": "boolean", "required": true },
42         "UpdateData": { "type": "boolean", "required": true },
43         "RemoveData": { "type": "boolean", "required": true },
44         "Navigate": { "type": "boolean", "required": true },
45         "WriteFile": { "type": "boolean", "required": true }
46       }
47     }
48   },
49   "JSONRPC.Ping": {
50     "type": "method",
51     "description": "Ping responder",
52     "transport": "Response",
53     "permission": "ReadData",
54     "params": [],
55     "returns": "string"
56   },
57   "JSONRPC.GetConfiguration": {
58     "type": "method",
59     "description": "Get client-specific configurations",
60     "transport": "Announcing",
61     "permission": "ReadData",
62     "params": [],
63     "returns": { "$ref": "Configuration" }
64   },
65   "JSONRPC.SetConfiguration": {
66     "type": "method",
67     "description": "Change the client-specific configuration",
68     "transport": "Announcing",
69     "permission": "ControlNotify",
70     "params": [
71       { "name": "notifications", "type": "object",
72         "properties": {
73           "Player": { "$ref": "Optional.Boolean" },
74           "GUI": { "$ref": "Optional.Boolean" },
75           "System": { "$ref": "Optional.Boolean" },
76           "AudioLibrary": { "$ref": "Optional.Boolean" },
77           "VideoLibrary": { "$ref": "Optional.Boolean" },
78           "Other": { "$ref": "Optional.Boolean" }
79         }
80       }
81     ],
82     "returns": { "$ref": "Configuration" }
83   },
84   "JSONRPC.NotifyAll": {
85     "type": "method",
86     "description": "Notify all other connected clients",
87     "transport": "Response",
88     "permission": "ReadData",
89     "params": [
90       { "name": "sender", "type": "string", "required": true },
91       { "name": "message", "type": "string", "required": true },
92       { "name": "data", "type": "any", "default": null }
93     ],
94     "returns": "any"
95   },
96   "Player.Open": {
97     "type": "method",
98     "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.",
99     "transport": "Response",
100     "permission": "ControlPlayback",
101     "params": [
102       { "name": "item", 
103         "type": [
104           { "type": "object", "required": true, "additionalProperties": false,
105             "properties": {
106               "playlistid": { "$ref": "Playlist.Id", "required": true },
107               "position": { "$ref": "Playlist.Position", "default": 0 }
108             }
109           },
110           { "$ref": "Playlist.Item", "required": true },
111           { "type": "object", "required": true, "additionalProperties": false,
112             "properties": {
113               "path": { "type": "string", "required": true },
114               "random": { "type": "boolean", "default": true },
115               "recursive": { "type": "boolean", "default": true }
116             }
117           }
118         ]
119       }
120     ],
121     "returns": "string"
122   },
123   "Player.GetActivePlayers": {
124     "type": "method",
125     "description": "Returns all active players",
126     "transport": "Response",
127     "permission": "ReadData",
128     "params": [],
129     "returns": {
130       "type": "array",
131       "uniqueItems": true,
132       "items": { 
133         "type": "object",
134         "properties": {
135           "playerid": { "$ref": "Player.Id", "required": true },
136           "type": { "$ref": "Player.Type", "required": true }
137         }
138       }
139     }
140   },
141   "Player.GetProperties": {
142     "type": "method",
143     "description": "Retrieves the values of the given properties",
144     "transport": "Response",
145     "permission": "ReadData",
146     "params": [
147       { "name": "playerid", "$ref": "Player.Id", "required": true },
148       { "name": "properties", "type": "array", "uniqueItems": true, "required": true, "items": { "$ref": "Player.Property.Name" } }
149     ],
150     "returns":  { "$ref": "Player.Property.Value", "required": true }
151   },
152   "Player.PlayPause": {
153     "type": "method",
154     "description": "Pauses or unpause playback and returns the new state",
155     "transport": "Response",
156     "permission": "ControlPlayback",
157     "params": [
158       { "name": "playerid", "$ref": "Player.Id", "required": true }
159     ],
160     "returns": { "$ref": "Player.Speed" }
161   },
162   "Player.Stop": {
163     "type": "method",
164     "description": "Stops playback",
165     "transport": "Response",
166     "permission": "ControlPlayback",
167     "params": [
168       { "name": "playerid", "$ref": "Player.Id", "required": true }
169     ],
170     "returns": "string"
171   },
172   "Player.SetSpeed": {
173     "type": "method",
174     "description": "Set the speed of the current playback",
175     "transport": "Response",
176     "permission": "ControlPlayback",
177     "params": [
178       { "name": "playerid", "$ref": "Player.Id", "required": true },
179       { "name": "speed", "type": [ "integer", "string" ], "enum": [ -32, -16, -8, -4, -2, -1, 0, 1, 2, 4, 8, 16, 32, "increment", "decrement" ], "required": true }
180     ],
181     "returns": { "$ref": "Player.Speed" }
182   },
183   "Player.Seek": {
184     "type": "method",
185     "description": "Seek through the playing item",
186     "transport": "Response",
187     "permission": "ControlPlayback",
188     "params": [
189       { "name": "playerid", "$ref": "Player.Id", "required": true },
190       { "name": "value", "required": true, "type": [
191           { "$ref": "Player.Position.Percentage", "required": true, "description": "Percentage value to seek to" },
192           { "type": "object", "additionalProperties": false, "required": true, "description": "Time to seek to",
193             "properties": {
194               "hours": { "type": "integer", "minimum": 0, "maximum": 23 },
195               "minutes": { "type": "integer", "minimum": 0, "maximum": 59 },
196               "seconds": { "type": "integer", "minimum": 0, "maximum": 59 },
197               "milliseconds": { "type": "integer", "minimum": 0, "maximum": 999 }
198             }
199           },
200           { "type": "string", "enum": [ "smallforward", "smallbackward", "bigforward", "bigbackward" ], "required": true, "description": "Seek by predefined jumps" }
201         ]
202       }
203     ],
204     "returns": {
205       "type": "object",
206       "properties": {
207         "percentage": { "$ref": "Player.Position.Percentage" },
208         "time": { "$ref": "Global.Time" },
209         "totaltime": { "$ref": "Global.Time" }
210       }
211     }
212   },
213   "Player.MoveLeft": {
214     "type": "method",
215     "description": "If picture is zoomed move viewport left otherwise skip previous",
216     "transport": "Response",
217     "permission": "ControlPlayback",
218     "params": [
219       { "name": "playerid", "$ref": "Player.Id", "required": true }
220     ],
221     "returns": "string"
222   },
223   "Player.MoveRight": {
224     "type": "method",
225     "description": "If picture is zoomed move viewport right otherwise skip next",
226     "transport": "Response",
227     "permission": "ControlPlayback",
228     "params": [
229       { "name": "playerid", "$ref": "Player.Id", "required": true }
230     ],
231     "returns": "string"
232   },
233   "Player.MoveDown": {
234     "type": "method",
235     "description": "If picture is zoomed move viewport down",
236     "transport": "Response",
237     "permission": "ControlPlayback",
238     "params": [
239       { "name": "playerid", "$ref": "Player.Id", "required": true }
240     ],
241     "returns": "string"
242   },
243   "Player.MoveUp": {
244     "type": "method",
245     "description": "If picture is zoomed move viewport up",
246     "transport": "Response",
247     "permission": "ControlPlayback",
248     "params": [
249       { "name": "playerid", "$ref": "Player.Id", "required": true }
250     ],
251     "returns": "string"
252   },
253   "Player.ZoomOut": {
254     "type": "method",
255     "description": "Zoom out once",
256     "transport": "Response",
257     "permission": "ControlPlayback",
258     "params": [
259       { "name": "playerid", "$ref": "Player.Id", "required": true }
260     ],
261     "returns": "string"
262   },
263   "Player.ZoomIn": {
264     "type": "method",
265     "description": "Zoom in once",
266     "transport": "Response",
267     "permission": "ControlPlayback",
268     "params": [
269       { "name": "playerid", "$ref": "Player.Id", "required": true }
270     ],
271     "returns": "string"
272   },
273   "Player.Zoom": {
274     "type": "method",
275     "description": "Zooms current picture",
276     "transport": "Response",
277     "permission": "ControlPlayback",
278     "params": [
279       { "name": "playerid", "$ref": "Player.Id", "required": true },
280       { "name": "value", "type": "integer", "required": true, "minimum": 1, "maximum": 10, "description": "Zoom level" }
281     ],
282     "returns": "string"
283   },
284   "Player.Rotate": {
285     "type": "method",
286     "description": "Rotates current picture",
287     "transport": "Response",
288     "permission": "ControlPlayback",
289     "params": [
290       { "name": "playerid", "$ref": "Player.Id", "required": true }
291     ],
292     "returns": "string"
293   },
294   "Player.GoPrevious": {
295     "type": "method",
296     "description": "Go to previous item on the playlist",
297     "transport": "Response",
298     "permission": "ControlPlayback",
299     "params": [
300       { "name": "playerid", "$ref": "Player.Id", "required": true }
301     ],
302     "returns": "string"
303   },
304   "Player.GoNext": {
305     "type": "method",
306     "description": "Go to next item on the playlist",
307     "transport": "Response",
308     "permission": "ControlPlayback",
309     "params": [
310       { "name": "playerid", "$ref": "Player.Id", "required": true }
311     ],
312     "returns": "string"
313   },
314   "Player.GoTo": {
315     "type": "method",
316     "description": "Go to item at the given position in the playlist",
317     "transport": "Response",
318     "permission": "ControlPlayback",
319     "params": [
320       { "name": "playerid", "$ref": "Player.Id", "required": true },
321       { "name": "position", "$ref": "Playlist.Position", "required": true }
322     ],
323     "returns": "string"
324   },
325   "Player.Shuffle": {
326     "type": "method",
327     "description": "Shuffle items in the player",
328     "transport": "Response",
329     "permission": "ControlPlayback",
330     "params": [
331       { "name": "playerid", "$ref": "Player.Id", "required": true }
332     ],
333     "returns": "string"
334   },
335   "Player.UnShuffle": {
336     "type": "method",
337     "description": "Unshuffle items in the player",
338     "transport": "Response",
339     "permission": "ControlPlayback",
340     "params": [
341       { "name": "playerid", "$ref": "Player.Id", "required": true }
342     ],
343     "returns": "string"
344   },
345   "Player.Repeat": {
346     "type": "method",
347     "description": "Set the repeat mode of the player",
348     "transport": "Response",
349     "permission": "ControlPlayback",
350     "params": [
351       { "name": "playerid", "$ref": "Player.Id", "required": true },
352       { "name": "state", "$ref": "Player.Repeat", "required": true }
353     ],
354     "returns": "string"
355   },
356   "Player.SetAudioStream": {
357     "type": "method",
358     "description": "Set the audio stream played by the player",
359     "transport": "Response",
360     "permission": "ControlPlayback",
361     "params": [
362       { "name": "playerid", "$ref": "Player.Id", "required": true },
363       { "name": "stream", "required": true, "type": [
364           { "type": "string", "enum": [ "previous", "next" ] },
365           { "type": "integer", "minimum": 0, "description": "Index of the audio stream to play" }
366         ]
367       }
368     ],
369     "returns": "string"
370   },
371   "Player.SetSubtitle": {
372     "type": "method",
373     "description": "Set the subtitle displayed by the player",
374     "transport": "Response",
375     "permission": "ControlPlayback",
376     "params": [
377       { "name": "playerid", "$ref": "Player.Id", "required": true },
378       { "name": "subtitle", "required": true, "type": [
379           { "type": "string", "enum": [ "previous", "next", "off", "on" ] },
380           { "type": "integer", "minimum": 0, "description": "Index of the subtitle to display" }
381         ]
382       }
383     ],
384     "returns": "string"
385   },
386   "Playlist.GetPlaylists": {
387     "type": "method",
388     "description": "Returns all existing playlists",
389     "transport": "Response",
390     "permission": "ReadData",
391     "params": [],
392     "returns": {
393       "type": "array",
394       "uniqueItems": true,
395       "items": { 
396         "type": "object",
397         "properties": {
398           "playlistid": { "$ref": "Playlist.Id", "required": true },
399           "type": { "$ref": "Playlist.Type", "required": true }
400         }
401       }
402     }
403   },
404   "Playlist.GetProperties": {
405     "type": "method",
406     "description": "Retrieves the values of the given properties",
407     "transport": "Response",
408     "permission": "ReadData",
409     "params": [
410       { "name": "playlistid", "$ref": "Playlist.Id", "required": true },
411       { "name": "properties", "type": "array", "uniqueItems": true, "required": true, "items": { "$ref": "Playlist.Property.Name" } }
412     ],
413     "returns":  { "$ref": "Playlist.Property.Value", "required": true }
414   },
415   "Playlist.GetItems": {
416     "type": "method",
417     "description": "Get all items from playlist",
418     "transport": "Response",
419     "permission": "ReadData",
420     "params": [
421       { "name": "playlistid", "$ref": "Playlist.Id", "required": true },
422       { "name": "properties", "$ref": "List.Fields.All" },
423       { "name": "limits", "$ref": "List.Limits" },
424       { "name": "sort", "$ref": "List.Sort" }
425     ],
426     "returns": { "type": "object",
427       "properties": {
428         "limits": { "$ref": "List.LimitsReturned", "required": true },
429         "items": { "$ref": "List.Items.All", "required": true }
430       }
431     }
432   },
433   "Playlist.Add": {
434     "type": "method",
435     "description": "Add item(s) to playlist",
436     "transport": "Response",
437     "permission": "ControlPlayback",
438     "params": [
439       { "name": "playlistid", "$ref": "Playlist.Id", "required": true },
440       { "name": "item", "$ref": "Playlist.Item", "required": true }
441     ],
442     "returns": "string"
443   },
444   "Playlist.Insert": {
445     "type": "method",
446     "description": "Insert item(s) into playlist. Does not work for picture playlists (aka slideshows).",
447     "transport": "Response",
448     "permission": "ControlPlayback",
449     "params": [
450       { "name": "playlistid", "$ref": "Playlist.Id", "required": true },
451       { "name": "position", "$ref": "Playlist.Position", "required": true },
452       { "name": "item", "$ref": "Playlist.Item", "required": true }
453     ],
454     "returns": "string"
455   },
456   "Playlist.Remove": {
457     "type": "method",
458     "description": "Remove item from playlist. Does not work for picture playlists (aka slideshows).",
459     "transport": "Response",
460     "permission": "ControlPlayback",
461     "params": [
462       { "name": "playlistid", "$ref": "Playlist.Id", "required": true },
463       { "name": "position", "$ref": "Playlist.Position", "required": true }
464     ],
465     "returns": "string"
466   },
467   "Playlist.Clear": {
468     "type": "method",
469     "description": "Clear playlist",
470     "transport": "Response",
471     "permission": "ControlPlayback",
472     "params": [
473       { "name": "playlistid", "$ref": "Playlist.Id", "required": true }
474     ],
475     "returns": "string"
476   },
477   "Playlist.Swap": {
478     "type": "method",
479     "description": "Swap items in the playlist. Does not work for picture playlists (aka slideshows).",
480     "transport": "Response",
481     "permission": "ControlPlayback",
482     "params": [
483       { "name": "playlistid", "$ref": "Playlist.Id", "required": true },
484       { "name": "position1", "$ref": "Playlist.Position", "required": true },
485       { "name": "position2", "$ref": "Playlist.Position", "required": true }
486     ],
487     "returns": "string"
488   },
489   "Files.GetSources": {
490     "type": "method",
491     "description": "Get the sources of the media windows",
492     "transport": "Response",
493     "permission": "ReadData",
494     "params": [
495       { "name": "media", "$ref": "Files.Media", "required": true },
496       { "name": "limits", "$ref": "List.Limits" },
497       { "name": "sort", "$ref": "List.Sort" }
498     ],
499     "returns": {
500       "type": "object",
501       "properties": {
502         "limits": { "$ref": "List.LimitsReturned", "required": true },
503         "sources": { "$ref": "List.Items.Sources", "required": true }
504       }
505     }
506   },
507   "Files.Download": {
508     "type": "method",
509     "transport": [ "Response", "FileDownload" ],
510     "permission": "ReadData",
511     "params": [
512       { "name": "path", "type": "string", "required": true }
513     ],
514     "returns": {
515       "type": "object",
516       "properties": {
517         "path": { "type": "string", "required": true }
518       }
519     }
520   },
521   "Files.GetDirectory": {
522     "type": "method",
523     "transport": "Response",
524     "permission": "ReadData",
525     "params": [
526       { "name": "directory", "type": "string", "required": true },
527       { "name": "media", "$ref": "Files.Media", "default": "files" },
528       { "name": "properties", "$ref": "List.Fields.All" },
529       { "name": "sort", "$ref": "List.Sort" }
530     ],
531     "returns": {
532       "type": "object",
533       "properties": {
534         "limits": { "$ref": "List.LimitsReturned", "required": true },
535         "files": { "$ref": "List.Items.Files", "required": true }
536       }
537     }
538   },
539   "AudioLibrary.GetArtists": {
540     "type": "method",
541     "description": "Retrieve all artists",
542     "transport": "Response",
543     "permission": "ReadData",
544     "params": [
545       { "name": "albumartistsonly", "$ref": "Optional.Boolean", "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" },
546       { "name": "genreid", "$ref": "Library.Id" },
547       { "name": "properties", "$ref": "Audio.Fields.Artist" },
548       { "name": "limits", "$ref": "List.Limits" },
549       { "name": "sort", "$ref": "List.Sort" }
550     ],
551     "returns": {
552       "type": "object",
553       "properties": {
554         "limits": { "$ref": "List.LimitsReturned", "required": true },
555         "artists": { "type": "array",
556           "items": { "$ref": "Audio.Details.Artist" }
557         }
558       }
559     }
560   },
561   "AudioLibrary.GetArtistDetails": {
562     "type": "method",
563     "description": "Retrieve details about a specific artist",
564     "transport": "Response",
565     "permission": "ReadData",
566     "params": [
567       { "name": "artistid", "$ref": "Library.Id", "required": true },
568       { "name": "properties", "$ref": "Audio.Fields.Artist" }
569     ],
570     "returns": { "type": "object",
571       "properties": {
572         "artistdetails": { "$ref": "Audio.Details.Artist" }
573       }
574     }
575   },
576   "AudioLibrary.GetAlbums": {
577     "type": "method",
578     "description": "Retrieve all albums from specified artist or genre",
579     "transport": "Response",
580     "permission": "ReadData",
581     "params": [
582       { "name": "artistid", "$ref": "Library.Id" },
583       { "name": "genreid", "$ref": "Library.Id" },
584       { "name": "properties", "$ref": "Audio.Fields.Album" },
585       { "name": "limits", "$ref": "List.Limits" },
586       { "name": "sort", "$ref": "List.Sort" }
587     ],
588     "returns": {
589       "type": "object",
590       "properties": {
591         "limits": { "$ref": "List.LimitsReturned", "required": true },
592         "albums": { "type": "array",
593           "items": { "$ref": "Audio.Details.Album" }
594         }
595       }
596     }
597   },
598   "AudioLibrary.GetAlbumDetails": {
599     "type": "method",
600     "description": "Retrieve details about a specific album",
601     "transport": "Response",
602     "permission": "ReadData",
603     "params": [
604       { "name": "albumid", "$ref": "Library.Id", "required": true },
605       { "name": "properties", "$ref": "Audio.Fields.Album" }
606     ],
607     "returns": { "type": "object",
608       "properties": {
609         "albumdetails": { "$ref": "Audio.Details.Album" }
610       }
611     }
612   },
613   "AudioLibrary.GetSongs": {
614     "type": "method",
615     "description": "Retrieve all songs from specified album, artist or genre",
616     "transport": "Response",
617     "permission": "ReadData",
618     "params": [
619       { "name": "artistid", "$ref": "Library.Id" },
620       { "name": "albumid", "$ref": "Library.Id" },
621       { "name": "genreid", "$ref": "Library.Id" },
622       { "name": "properties", "$ref": "Audio.Fields.Song" },
623       { "name": "limits", "$ref": "List.Limits" },
624       { "name": "sort", "$ref": "List.Sort" }
625     ],
626     "returns": {
627       "type": "object",
628       "properties": {
629         "limits": { "$ref": "List.LimitsReturned", "required": true },
630         "songs": { "type": "array",
631           "items": { "$ref": "Audio.Details.Song" }
632         }
633       }
634     }
635   },
636   "AudioLibrary.GetSongDetails": {
637     "type": "method",
638     "description": "Retrieve details about a specific song",
639     "transport": "Response",
640     "permission": "ReadData",
641     "params": [
642       { "name": "songid", "$ref": "Library.Id", "required": true },
643       { "name": "properties", "$ref": "Audio.Fields.Song" }
644     ],
645     "returns": { "type": "object",
646       "properties": {
647         "songdetails": { "$ref": "Audio.Details.Song" }
648       }
649     }
650   },
651   "AudioLibrary.GetRecentlyAddedAlbums": {
652     "type": "method",
653     "description": "Retrieve recently added albums",
654     "transport": "Response",
655     "permission": "ReadData",
656     "params": [
657       { "name": "albums", "$ref": "List.Amount" },
658       { "name": "properties", "$ref": "Audio.Fields.Album" },
659       { "name": "limits", "$ref": "List.Limits" },
660       { "name": "sort", "$ref": "List.Sort" }
661     ],
662     "returns": {
663       "type": "object",
664       "properties": {
665         "limits": { "$ref": "List.LimitsReturned", "required": true },
666         "albums": { "type": "array",
667           "items": { "$ref": "Audio.Details.Album" }
668         }
669       }
670     }
671   },
672   "AudioLibrary.GetRecentlyAddedSongs": {
673     "type": "method",
674     "description": "Retrieve recently added songs",
675     "transport": "Response",
676     "permission": "ReadData",
677     "params": [
678       { "name": "albums", "$ref": "List.Amount", "description": "The amount of recently added albums from which to return the songs" },
679       { "name": "properties", "$ref": "Audio.Fields.Song" },
680       { "name": "limits", "$ref": "List.Limits" },
681       { "name": "sort", "$ref": "List.Sort" }
682     ],
683     "returns": {
684       "type": "object",
685       "properties": {
686         "limits": { "$ref": "List.LimitsReturned", "required": true },
687         "songs": { "type": "array",
688           "items": { "$ref": "Audio.Details.Song" }
689         }
690       }
691     }
692   },
693   "AudioLibrary.GetGenres": {
694     "type": "method",
695     "description": "Retrieve all genres",
696     "transport": "Response",
697     "permission": "ReadData",
698     "params": [
699       { "name": "properties", "$ref": "Library.Fields.Genre" },
700       { "name": "limits", "$ref": "List.Limits" },
701       { "name": "sort", "$ref": "List.Sort" }
702     ],
703     "returns": {
704       "type": "object",
705       "properties": {
706         "limits": { "$ref": "List.LimitsReturned", "required": true },
707         "genres": { "type": "array", "required": true,
708           "items": { "$ref": "Library.Details.Genre" }
709         }
710       }
711     }
712   },
713   "AudioLibrary.Scan": {
714     "type": "method",
715     "description": "Scans the audio sources for new library items",
716     "transport": "Response",
717     "permission": "UpdateData",
718     "params": [],
719     "returns": "string"
720   },
721   "AudioLibrary.Export": {
722     "type": "method",
723     "description": "Exports all items from the audio library",
724     "transport": "Response",
725     "permission": "WriteFile",
726     "params": [
727       { "name": "singlefile", "type": "boolean", "default": true, "description": "Whether to export the data into one or multiple files" },
728       { "name": "images", "type": "boolean", "default": false, "description": "Whether to export thumbnails and fanart images" },
729       { "name": "overwrite", "type": "boolean", "default": false, "description": "Whether to overwrite existing exported files" },
730       { "name": "path", "type": "string", "default": "", "description": "Path to the directory to where the data should be exported" }
731     ],
732     "returns": "string"
733   },
734   "AudioLibrary.Clean": {
735     "type": "method",
736     "description": "Cleans the audio library from non-existent items",
737     "transport": "Response",
738     "permission": "RemoveData",
739     "params": [ ],
740     "returns": "string"
741   },
742   "VideoLibrary.GetMovies": {
743     "type": "method",
744     "description": "Retrieve all movies",
745     "transport": "Response",
746     "permission": "ReadData",
747     "params": [
748       { "name": "properties", "$ref": "Video.Fields.Movie" },
749       { "name": "limits", "$ref": "List.Limits" },
750       { "name": "sort", "$ref": "List.Sort" }
751     ],
752     "returns": {
753       "type": "object",
754       "properties": {
755         "limits": { "$ref": "List.LimitsReturned", "required": true },
756         "movies": { "type": "array",
757           "items": { "$ref": "Video.Details.Movie" }
758         }
759       }
760     }
761   },
762   "VideoLibrary.GetMovieDetails": {
763     "type": "method",
764     "description": "Retrieve details about a specific movie",
765     "transport": "Response",
766     "permission": "ReadData",
767     "params": [
768       { "name": "movieid", "$ref": "Library.Id", "required": true },
769       { "name": "properties", "$ref": "Video.Fields.Movie" }
770     ],
771     "returns": { "type": "object",
772       "properties": {
773         "moviedetails": { "$ref": "Video.Details.Movie" }
774       }
775     }
776   },
777   "VideoLibrary.GetMovieSets": {
778     "type": "method",
779     "description": "Retrieve all movie sets",
780     "transport": "Response",
781     "permission": "ReadData",
782     "params": [
783       { "name": "properties", "$ref": "Video.Fields.MovieSet" },
784       { "name": "limits", "$ref": "List.Limits" },
785       { "name": "sort", "$ref": "List.Sort" }
786     ],
787     "returns": { "type": "object",
788       "properties": {
789         "limits": { "$ref": "List.LimitsReturned", "required": true },
790         "sets": { "type": "array",
791           "items": { "$ref": "Video.Details.MovieSet" }
792         }
793       }
794     }
795   },
796   "VideoLibrary.GetMovieSetDetails": {
797     "type": "method",
798     "description": "Retrieve details about a specific movie set",
799     "transport": "Response",
800     "permission": "ReadData",
801     "params": [
802       { "name": "setid", "$ref": "Library.Id", "required": true },
803       { "name": "properties", "$ref": "Video.Fields.MovieSet" },
804       { "name": "movies", "type": "object",
805         "properties": {
806           "properties": { "$ref": "Video.Fields.Movie" },
807           "limits": { "$ref": "List.Limits" },
808           "sort": { "$ref": "List.Sort" }
809         }
810       }
811     ],
812     "returns": { "type": "object",
813       "properties": {
814         "setdetails": { "$ref": "Video.Details.MovieSet.Extended" }
815       }
816     }
817   },
818   "VideoLibrary.GetTVShows": {
819     "type": "method",
820     "description": "Retrieve all tv shows",
821     "transport": "Response",
822     "permission": "ReadData",
823     "params": [
824       { "name": "properties", "$ref": "Video.Fields.TVShow" },
825       { "name": "limits", "$ref": "List.Limits" },
826       { "name": "sort", "$ref": "List.Sort" }
827     ],
828     "returns": { "type": "object",
829       "properties": {
830         "limits": { "$ref": "List.LimitsReturned", "required": true },
831         "tvshows": { "type": "array",
832           "items": { "$ref": "Video.Details.TVShow" }
833         }
834       }
835     }
836   },
837   "VideoLibrary.GetTVShowDetails": {
838     "type": "method",
839     "description": "Retrieve details about a specific tv show",
840     "transport": "Response",
841     "permission": "ReadData",
842     "params": [
843       { "name": "tvshowid", "$ref": "Library.Id", "required": true },
844       { "name": "properties", "$ref": "Video.Fields.TVShow" }
845     ],
846     "returns": { "type": "object",
847       "properties": {
848         "tvshowdetails": { "$ref": "Video.Details.TVShow" }
849       }
850     }
851   },
852   "VideoLibrary.GetSeasons": {
853     "type": "method",
854     "description": "Retrieve all tv seasons",
855     "transport": "Response",
856     "permission": "ReadData",
857     "params": [
858       { "name": "tvshowid", "$ref": "Library.Id", "required": true },
859       { "name": "properties", "$ref": "Video.Fields.Season" },
860       { "name": "limits", "$ref": "List.Limits" },
861       { "name": "sort", "$ref": "List.Sort" }
862     ],
863     "returns": { "type": "object",
864       "properties": {
865         "limits": { "$ref": "List.LimitsReturned", "required": true },
866         "seasons": { "type": "array",
867           "items": { "$ref": "Video.Details.Season" }
868         }
869       }
870     }
871   },
872   "VideoLibrary.GetEpisodes": {
873     "type": "method",
874     "description": "Retrieve all tv show episodes",
875     "transport": "Response",
876     "permission": "ReadData",
877     "params": [
878       { "name": "tvshowid", "$ref": "Library.Id" },
879       { "name": "season", "type": "integer", "minimum": 0, "default": -1 },
880       { "name": "properties", "$ref": "Video.Fields.Episode" },
881       { "name": "limits", "$ref": "List.Limits" },
882       { "name": "sort", "$ref": "List.Sort" }
883     ],
884     "returns": { "type": "object",
885       "properties": {
886         "limits": { "$ref": "List.LimitsReturned", "required": true },
887         "episodes": { "type": "array",
888           "items": { "$ref": "Video.Details.Episode" }
889         }
890       }
891     }
892   },
893   "VideoLibrary.GetEpisodeDetails": {
894     "type": "method",
895     "description": "Retrieve details about a specific tv show episode",
896     "transport": "Response",
897     "permission": "ReadData",
898     "params": [
899       { "name": "episodeid", "$ref": "Library.Id", "required": true },
900       { "name": "properties", "$ref": "Video.Fields.Episode" }
901     ],
902     "returns": { "type": "object",
903       "properties": {
904         "episodedetails": { "$ref": "Video.Details.Episode" }
905       }
906     }
907   },
908   "VideoLibrary.GetMusicVideos": {
909     "type": "method",
910     "description": "Retrieve all music videos",
911     "transport": "Response",
912     "permission": "ReadData",
913     "params": [
914       { "name": "artistid", "$ref": "Library.Id" },
915       { "name": "albumid", "$ref": "Library.Id" },
916       { "name": "properties", "$ref": "Video.Fields.MusicVideo" },
917       { "name": "limits", "$ref": "List.Limits" },
918       { "name": "sort", "$ref": "List.Sort" }
919     ],
920     "returns": { "type": "object",
921       "properties": {
922         "limits": { "$ref": "List.LimitsReturned", "required": true },
923         "musicvideos": { "type": "array",
924           "items": { "$ref": "Video.Details.MusicVideo" }
925         }
926       }
927     }
928   },
929   "VideoLibrary.GetMusicVideoDetails": {
930     "type": "method",
931     "description": "Retrieve details about a specific music video",
932     "transport": "Response",
933     "permission": "ReadData",
934     "params": [
935       { "name": "musicvideoid", "$ref": "Library.Id", "required": true },
936       { "name": "properties", "$ref": "Video.Fields.MusicVideo" }
937     ],
938     "returns": { "type": "object",
939       "properties": {
940         "musicvideodetails": { "$ref": "Video.Details.MusicVideo" }
941       }
942     }
943   },
944   "VideoLibrary.GetRecentlyAddedMovies": {
945     "type": "method",
946     "description": "Retrieve all recently added movies",
947     "transport": "Response",
948     "permission": "ReadData",
949     "params": [
950       { "name": "properties", "$ref": "Video.Fields.Movie" },
951       { "name": "limits", "$ref": "List.Limits" },
952       { "name": "sort", "$ref": "List.Sort" }
953     ],
954     "returns": { "type": "object",
955       "properties": {
956         "limits": { "$ref": "List.LimitsReturned", "required": true },
957         "movies": { "type": "array",
958           "items": { "$ref": "Video.Details.Movie" }
959         }
960       }
961     }
962   },
963   "VideoLibrary.GetRecentlyAddedEpisodes": {
964     "type": "method",
965     "description": "Retrieve all recently added tv episodes",
966     "transport": "Response",
967     "permission": "ReadData",
968     "params": [
969       { "name": "properties", "$ref": "Video.Fields.Episode" },
970       { "name": "limits", "$ref": "List.Limits" },
971       { "name": "sort", "$ref": "List.Sort" }
972     ],
973     "returns": { "type": "object",
974       "properties": {
975         "limits": { "$ref": "List.LimitsReturned", "required": true },
976         "episodes": { "type": "array",
977           "items": { "$ref": "Video.Details.Episode" }
978         }
979       }
980     }
981   },
982   "VideoLibrary.GetRecentlyAddedMusicVideos": {
983     "type": "method",
984     "description": "Retrieve all recently added music videos",
985     "transport": "Response",
986     "permission": "ReadData",
987     "params": [
988       { "name": "properties", "$ref": "Video.Fields.MusicVideo" },
989       { "name": "limits", "$ref": "List.Limits" },
990       { "name": "sort", "$ref": "List.Sort" }
991     ],
992     "returns": { "type": "object",
993       "properties": {
994         "limits": { "$ref": "List.LimitsReturned", "required": true },
995         "musicvideos": { "type": "array",
996           "items": { "$ref": "Video.Details.MusicVideo" }
997         }
998       }
999     }
1000   },
1001   "VideoLibrary.GetGenres": {
1002     "type": "method",
1003     "description": "Retrieve all genres",
1004     "transport": "Response",
1005     "permission": "ReadData",
1006     "params": [
1007       { "name": "type", "type": "string", "required": true, "enum": [ "movie", "tvshow", "musicvideo"] },
1008       { "name": "properties", "$ref": "Library.Fields.Genre" },
1009       { "name": "limits", "$ref": "List.Limits" },
1010       { "name": "sort", "$ref": "List.Sort" }
1011     ],
1012     "returns": {
1013       "type": "object",
1014       "properties": {
1015         "limits": { "$ref": "List.LimitsReturned", "required": true },
1016         "genres": { "type": "array", "required": true,
1017           "items": { "$ref": "Library.Details.Genre" }
1018         }
1019       }
1020     }
1021   },
1022   "VideoLibrary.Scan": {
1023     "type": "method",
1024     "description": "Scans the video sources for new library items",
1025     "transport": "Response",
1026     "permission": "UpdateData",
1027     "params": [],
1028     "returns": "string"
1029   },
1030   "VideoLibrary.Export": {
1031     "type": "method",
1032     "description": "Exports all items from the video library",
1033     "transport": "Response",
1034     "permission": "WriteFile",
1035     "params": [
1036       { "name": "singlefile", "type": "boolean", "default": true, "description": "Whether to export the data into one or multiple files" },
1037       { "name": "images", "type": "boolean", "default": false, "description": "Whether to export thumbnails and fanart images" },
1038       { "name": "actorthumbs", "type": "boolean", "default": false, "description": "Whether to export actor thumbnails" },
1039       { "name": "overwrite", "type": "boolean", "default": false, "description": "Whether to overwrite existing exported files" },
1040       { "name": "path", "type": "string", "default": "", "description": "Path to the directory to where the data should be exported" }
1041     ],
1042     "returns": "string"
1043   },
1044   "VideoLibrary.Clean": {
1045     "type": "method",
1046     "description": "Cleans the video library from non-existent items",
1047     "transport": "Response",
1048     "permission": "RemoveData",
1049     "params": [ ],
1050     "returns": "string"
1051   },
1052   "System.GetProperties": {
1053     "type": "method",
1054     "description": "Retrieves the values of the given properties",
1055     "transport": "Response",
1056     "permission": "ReadData",
1057     "params": [
1058       { "name": "properties", "type": "array", "uniqueItems": true, "required": true, "items": { "$ref": "System.Property.Name" } }
1059     ],
1060     "returns":  { "$ref": "System.Property.Value", "required": true }
1061   },
1062   "System.Shutdown": {
1063     "type": "method",
1064     "description": "Shuts the system running XBMC down",
1065     "transport": "Response",
1066     "permission": "ControlPower",
1067     "params": [],
1068     "returns": "string"
1069   },
1070   "System.Suspend": {
1071     "type": "method",
1072     "description": "Suspends the system running XBMC",
1073     "transport": "Response",
1074     "permission": "ControlPower",
1075     "params": [],
1076     "returns": "string"
1077   },
1078   "System.Hibernate": {
1079     "type": "method",
1080     "description": "Puts the system running XBMC into hibernate mode",
1081     "transport": "Response",
1082     "permission": "ControlPower",
1083     "params": [],
1084     "returns": "string"
1085   },
1086   "System.Reboot": {
1087     "type": "method",
1088     "description": "Reboots the system running XBMC",
1089     "transport": "Response",
1090     "permission": "ControlPower",
1091     "params": [],
1092     "returns": "string"
1093   },
1094   "Input.Left": {
1095     "type": "method",
1096     "description": "Navigate left in GUI",
1097     "transport": "Response",
1098     "permission": "Navigate",
1099     "params": [],
1100     "returns": "string"
1101   },
1102   "Input.Right": {
1103     "type": "method",
1104     "description": "Navigate right in GUI",
1105     "transport": "Response",
1106     "permission": "Navigate",
1107     "params": [],
1108     "returns": "string"
1109   },
1110   "Input.Down": {
1111     "type": "method",
1112     "description": "Navigate down in GUI",
1113     "transport": "Response",
1114     "permission": "Navigate",
1115     "params": [],
1116     "returns": "string"
1117   },
1118   "Input.Up": {
1119     "type": "method",
1120     "description": "Navigate up in GUI",
1121     "transport": "Response",
1122     "permission": "Navigate",
1123     "params": [],
1124     "returns": "string"
1125   },
1126   "Input.Select": {
1127     "type": "method",
1128     "description": "Select current item in GUI",
1129     "transport": "Response",
1130     "permission": "Navigate",
1131     "params": [],
1132     "returns": "string"
1133   },
1134   "Input.Back": {
1135     "type": "method",
1136     "description": "Goes back in GUI",
1137     "transport": "Response",
1138     "permission": "Navigate",
1139     "params": [],
1140     "returns": "string"
1141   },
1142   "Input.Home": {
1143     "type": "method",
1144     "description": "Goes to home window in GUI",
1145     "transport": "Response",
1146     "permission": "Navigate",
1147     "params": [],
1148     "returns": "string"
1149   },
1150   "Application.GetProperties": {
1151     "type": "method",
1152     "description": "Retrieves the values of the given properties",
1153     "transport": "Response",
1154     "permission": "ReadData",
1155     "params": [
1156       { "name": "properties", "type": "array", "uniqueItems": true, "required": true, "items": { "$ref": "Application.Property.Name" } }
1157     ],
1158     "returns":  { "$ref": "Application.Property.Value", "required": true }
1159   },
1160   "Application.SetVolume": {
1161     "type": "method",
1162     "description": "Set the current volume",
1163     "transport": "Response",
1164     "permission": "ControlPlayback",
1165     "params": [
1166       { "name": "value", "type": "integer", "minimum": 0, "maximum": 100, "required": true }
1167     ],
1168     "returns": "integer"
1169   },
1170   "Application.ToggleMute": {
1171     "type": "method",
1172     "description": "Toggle mute/unmute",
1173     "transport": "Response",
1174     "permission": "ControlPlayback",
1175     "params": [],
1176     "returns": { "type": "integer", "description": "New volume" }
1177   },
1178   "Application.Quit": {
1179     "type": "method",
1180     "description": "Quit application",
1181     "transport": "Response",
1182     "permission": "ControlPower",
1183     "params": [],
1184     "returns": "string"
1185   },
1186   "XBMC.GetInfoLabels": {
1187     "type": "method",
1188     "description": "Retrieve info labels about XBMC and the system",
1189     "transport": "Response",
1190     "permission": "ReadData",
1191     "params": [
1192       { "name": "labels", "type": "array", "required": true, "items": { "type": "string" }, "minItems": 1, "description": "See http://wiki.xbmc.org/index.php?title=InfoLabels for a list of possible info labels" }
1193     ],
1194     "returns": {
1195       "type": "object",
1196       "description": "List of key-value pairs of the retrieved info labels"
1197     }
1198   },
1199   "XBMC.GetInfoBooleans": {
1200     "type": "method",
1201     "description": "Retrieve info booleans about XBMC and the system",
1202     "transport": "Response",
1203     "permission": "ReadData",
1204     "params": [
1205       { "name": "booleans", "type": "array", "required": true, "items": { "type": "string" }, "minItems": 1 }
1206     ],
1207     "returns": {
1208       "type": "object",
1209       "description": "List of key-value pairs of the retrieved info booleans"
1210     }
1211   }
1212 }