3 "type": [ "null", "boolean" ],
7 "type": [ "null", "string" ],
11 "type": [ "null", "integer" ],
15 "type": [ "null", "number" ],
20 "items": { "type": "string", "minLength": 1 }
24 "items": { "type": "integer" }
29 "hours": { "type": "integer", "required": true, "minimum": 0, "maximum": 23 },
30 "minutes": { "type": "integer", "required": true, "minimum": 0, "maximum": 59 },
31 "seconds": { "type": "integer", "required": true, "minimum": 0, "maximum": 59 },
32 "milliseconds": { "type": "integer", "required": true, "minimum": 0, "maximum": 999 }
34 "additionalProperties": false
36 "Global.IncrementDecrement": {
38 "enum": [ "increment", "decrement" ]
42 { "type": "boolean", "required": true },
43 { "type": "string", "enum": [ "toggle" ], "required": true }
46 "Global.String.NotEmpty": {
50 "Configuration.Notifications": {
53 "Player": { "type": "boolean", "required": true },
54 "Playlist": { "type": "boolean", "required": true },
55 "GUI": { "type": "boolean", "required": true },
56 "System": { "type": "boolean", "required": true },
57 "VideoLibrary": { "type": "boolean", "required": true },
58 "AudioLibrary": { "type": "boolean", "required": true },
59 "Application": { "type": "boolean", "required": true },
60 "Input": { "type": "boolean", "required": true },
61 "PVR": { "type": "boolean", "required": true },
62 "Other": { "type": "boolean", "required": true }
64 "additionalProperties": false
67 "type": "object", "required": true,
69 "notifications": { "$ref": "Configuration.Notifications", "required": true }
74 "enum": [ "video", "music", "pictures", "files", "programs" ]
84 "start": { "type": "integer", "minimum": 0, "default": 0, "description": "Index of the first item to return" },
85 "end": { "$ref": "List.Amount", "description": "Index of the last item to return" }
87 "additionalProperties": false
89 "List.LimitsReturned": {
92 "start": { "type": "integer", "minimum": 0, "default": 0 },
93 "end": { "$ref": "List.Amount" },
94 "total": { "type": "integer", "minimum": 0, "required": true }
96 "additionalProperties": false
101 "method": { "type": "string", "default": "none",
102 "enum": [ "none", "label", "date", "size", "file", "path", "drivetype", "title", "track", "time", "artist",
103 "album", "albumtype", "genre", "country", "year", "rating", "votes", "top250", "programcount",
104 "playlist", "episode", "season", "totalepisodes", "watchedepisodes", "tvshowstatus", "tvshowtitle",
105 "sorttitle", "productioncode", "mpaa", "studio", "dateadded", "lastplayed", "playcount", "listeners",
106 "bitrate", "random" ]
108 "order": { "type": "string", "default": "ascending", "enum": [ "ascending", "descending" ] },
109 "ignorearticle": { "type": "boolean", "default": false }
117 "PVR.Channel.Type": {
119 "enum": [ "tv", "radio" ]
129 "enum": [ "unknown", "video", "audio", "picture", "mixed" ]
131 "Playlist.Property.Name": {
133 "enum": [ "type", "size" ]
135 "Playlist.Property.Value": {
138 "type": { "$ref": "Playlist.Type" },
139 "size": { "type": "integer", "minimum": 0 }
142 "Playlist.Position": {
149 { "type": "object", "properties": { "file": { "type": "string", "description": "Path to a file (not a directory) to be added to the playlist", "required": true } }, "additionalProperties": false },
150 { "type": "object", "properties": { "directory": { "type": "string", "required": true } }, "additionalProperties": false },
151 { "type": "object", "properties": { "movieid": { "$ref": "Library.Id", "required": true } }, "additionalProperties": false },
152 { "type": "object", "properties": { "episodeid": { "$ref": "Library.Id", "required": true } }, "additionalProperties": false },
153 { "type": "object", "properties": { "musicvideoid": { "$ref": "Library.Id", "required": true } }, "additionalProperties": false },
154 { "type": "object", "properties": { "artistid": { "$ref": "Library.Id", "required": true } }, "additionalProperties": false },
155 { "type": "object", "properties": { "albumid": { "$ref": "Library.Id", "required": true } }, "additionalProperties": false },
156 { "type": "object", "properties": { "songid": { "$ref": "Library.Id", "required": true } }, "additionalProperties": false },
157 { "type": "object", "properties": { "genreid": { "$ref": "Library.Id", "required": true, "description": "Identification of a genre from the AudioLibrary" } }, "additionalProperties": false }
168 "enum": [ "video", "audio", "picture" ]
170 "Player.Position.Percentage": {
175 "Player.Position.Time": {
177 "additionalProperties": false,
179 "hours": { "type": "integer", "minimum": 0, "maximum": 23, "default": 0 },
180 "minutes": { "type": "integer", "minimum": 0, "maximum": 59, "default": 0 },
181 "seconds": { "type": "integer", "minimum": 0, "maximum": 59, "default": 0 },
182 "milliseconds": { "type": "integer", "minimum": 0, "maximum": 999, "default": 0 }
189 "speed": { "type": "integer" }
194 "enum": [ "off", "one", "all" ]
196 "Player.Audio.Stream": {
199 "index": { "type": "integer", "minimum": 0, "required": true },
200 "name": { "type": "string", "required": true },
201 "language": { "type": "string", "required": true }
204 "Player.Audio.Stream.Extended": {
205 "extends": "Player.Audio.Stream",
207 "codec": { "type": "string", "required": true },
208 "bitrate": { "type": "integer", "required": true },
209 "channels": { "type": "integer", "required": true }
215 "index": { "type": "integer", "minimum": 0, "required": true },
216 "name": { "type": "string", "required": true },
217 "language": { "type": "string", "required": true }
220 "Player.Property.Name": {
222 "enum": [ "type", "partymode", "speed", "time", "percentage",
223 "totaltime", "playlistid", "position", "repeat", "shuffled",
224 "canseek", "canchangespeed", "canmove", "canzoom", "canrotate",
225 "canshuffle", "canrepeat", "currentaudiostream", "audiostreams",
226 "subtitleenabled", "currentsubtitle", "subtitles", "live" ]
228 "Player.Property.Value": {
231 "type": { "$ref": "Player.Type" },
232 "partymode": { "type": "boolean" },
233 "speed": { "type": "integer" },
234 "time": { "$ref": "Global.Time" },
235 "percentage": { "$ref": "Player.Position.Percentage" },
236 "totaltime": { "$ref": "Global.Time" },
237 "playlistid": { "$ref": "Playlist.Id" },
238 "position": { "$ref": "Playlist.Position" },
239 "repeat": { "$ref": "Player.Repeat" },
240 "shuffled": { "type": "boolean" },
241 "canseek": { "type": "boolean" },
242 "canchangespeed": { "type": "boolean" },
243 "canmove": { "type": "boolean" },
244 "canzoom": { "type": "boolean" },
245 "canrotate": { "type": "boolean" },
246 "canshuffle": { "type": "boolean" },
247 "canrepeat": { "type": "boolean" },
248 "currentaudiostream": { "$ref": "Player.Audio.Stream.Extended" },
249 "audiostreams": { "type": "array", "items": { "$ref": "Player.Audio.Stream" } },
250 "subtitleenabled": { "type": "boolean" },
251 "currentsubtitle": { "$ref": "Player.Subtitle" },
252 "subtitles": { "type": "array", "items": { "$ref": "Player.Subtitle" } },
253 "live": { "type": "boolean" }
256 "Notifications.Item.Type": {
258 "enum": [ "unknown", "movie", "episode", "musicvideo", "song", "picture", "channel" ]
260 "Notifications.Item": {
262 { "type": "object", "description": "An unknown item does not have any additional information.",
264 "type": { "$ref": "Notifications.Item.Type", "required": true }
267 { "type": "object", "description": "An item known to the database has an identification.",
269 "type": { "$ref": "Notifications.Item.Type", "required": true },
270 "id": { "$ref": "Library.Id", "required": true }
273 { "type": "object", "description": "A movie item has a title and may have a release year.",
275 "type": { "$ref": "Notifications.Item.Type", "required": true },
276 "title": { "type": "string", "required": true },
277 "year": { "type": "integer" }
280 { "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.",
282 "type": { "$ref": "Notifications.Item.Type", "required": true },
283 "title": { "type": "string", "required": true },
284 "episode": { "type": "integer" },
285 "season": { "type": "integer" },
286 "showtitle": { "type": "string" }
289 { "type": "object", "description": "A music video has a title and may have an album and an artist.",
291 "type": { "$ref": "Notifications.Item.Type", "required": true },
292 "title": { "type": "string", "required": true },
293 "album": { "type": "string" },
294 "artist": { "type": "string" }
297 { "type": "object", "description": "A song has a title and may have an album, an artist and a track number.",
299 "type": { "$ref": "Notifications.Item.Type", "required": true },
300 "title": { "type": "string", "required": true },
301 "album": { "type": "string" },
302 "artist": { "type": "string" },
303 "track": { "type": "integer" }
306 { "type": "object", "description": "A picture has a file path.",
308 "type": { "$ref": "Notifications.Item.Type", "required": true },
309 "file": { "type": "string", "required": true }
312 { "type": "object", "description": "A PVR channel is either a radio or tv channel and has a title.",
314 "type": { "$ref": "Notifications.Item.Type", "required": true },
315 "id": { "$ref": "Library.Id", "required": true },
316 "title": { "type": "string", "required": true },
317 "channeltype": { "$ref": "PVR.Channel.Type", "required": true }
322 "Player.Notifications.Player": {
325 "playerid": { "$ref": "Player.Id", "required": true },
326 "speed": { "type": "integer" }
329 "Player.Notifications.Player.Seek": {
330 "extends": "Player.Notifications.Player",
332 "time": { "$ref": "Global.Time" },
333 "seekoffset": { "$ref": "Global.Time" }
336 "Player.Notifications.Data": {
339 "item": { "$ref": "Notifications.Item", "required": true },
340 "player": { "$ref": "Player.Notifications.Player", "required": true }
343 "Item.Fields.Base": {
346 "items": { "type": "string" }
348 "Item.Details.Base": {
351 "label": { "type": "string", "required": true }
354 "Media.Details.Base": {
355 "extends": "Item.Details.Base",
357 "fanart": { "type": "string" },
358 "thumbnail": { "type": "string" }
364 "thumb": { "$ref": "Global.String.NotEmpty" },
365 "poster": { "$ref": "Global.String.NotEmpty" },
366 "banner": { "$ref": "Global.String.NotEmpty" },
367 "fanart": { "$ref": "Global.String.NotEmpty" }
369 "additionalProperties": { "$ref": "Global.String.NotEmpty" }
371 "Library.Fields.Genre": {
372 "extends": "Item.Fields.Base",
373 "items": { "type": "string", "enum": [ "title", "thumbnail" ] }
375 "Library.Details.Genre": {
376 "extends": "Item.Details.Base",
378 "genreid": { "$ref": "Library.Id", "required": true },
379 "title": { "type": "string" },
380 "thumbnail": { "type": "string" }
383 "Audio.Fields.Artist": {
384 "extends": "Item.Fields.Base",
385 "items": { "type": "string",
386 "enum": [ "instrument", "style", "mood", "born", "formed",
387 "description", "genre", "died", "disbanded",
388 "yearsactive", "musicbrainzartistid", "fanart",
389 "thumbnail", "compilationartist" ]
392 "Audio.Fields.Album": {
393 "extends": "Item.Fields.Base",
394 "items": { "type": "string",
395 "description": "Requesting the genreid and/or artistid field will result in increased response times",
396 "enum": [ "title", "description", "artist", "genre",
397 "theme", "mood", "style", "type", "albumlabel",
398 "rating", "year", "musicbrainzalbumid",
399 "musicbrainzalbumartistid", "fanart", "thumbnail",
400 "playcount", "genreid", "artistid", "displayartist" ]
403 "Audio.Fields.Song": {
404 "extends": "Item.Fields.Base",
405 "items": { "type": "string",
406 "description": "Requesting the genreid, artistid and/or albumartistid field will result in increased response times",
407 "enum": [ "title", "artist", "albumartist", "genre", "year",
408 "rating", "album", "track", "duration", "comment",
409 "lyrics", "musicbrainztrackid", "musicbrainzartistid",
410 "musicbrainzalbumid", "musicbrainzalbumartistid",
411 "playcount", "fanart", "thumbnail", "file", "albumid",
412 "lastplayed", "disc", "genreid", "artistid", "displayartist",
416 "Audio.Details.Base": {
417 "extends": "Media.Details.Base",
419 "genre": { "$ref": "Array.String" }
422 "Audio.Details.Media": {
423 "extends": "Audio.Details.Base",
425 "title": { "type": "string" },
426 "artist": { "$ref": "Array.String" },
427 "year": { "type": "integer" },
428 "rating": { "type": "integer" },
429 "musicbrainzalbumid": { "type": "string" },
430 "musicbrainzalbumartistid": { "type": "string" },
431 "genreid": { "$ref": "Array.Integer" },
432 "artistid": { "$ref": "Array.Integer" },
433 "displayartist": { "type" : "string" }
436 "Audio.Details.Artist": {
437 "extends": "Audio.Details.Base",
439 "artistid": { "$ref": "Library.Id", "required": true },
440 "artist": { "type": "string", "required": true },
441 "instrument": { "$ref": "Array.String" },
442 "style": { "$ref": "Array.String" },
443 "mood": { "$ref": "Array.String" },
444 "born": { "type": "string" },
445 "formed": { "type": "string" },
446 "description": { "type": "string" },
447 "died": { "type": "string" },
448 "disbanded": { "type": "string" },
449 "yearsactive": { "$ref": "Array.String" },
450 "compilationartist": { "type": "boolean" },
451 "musicbrainzartistid": { "type": "string" }
454 "Audio.Details.Album": {
455 "extends": "Audio.Details.Media",
457 "albumid": { "$ref": "Library.Id", "required": true },
458 "description": { "type": "string" },
459 "theme": { "$ref": "Array.String" },
460 "mood": { "$ref": "Array.String" },
461 "style": { "$ref": "Array.String" },
462 "type": { "type": "string" },
463 "albumlabel": { "type": "string" },
464 "playcount": { "type": "integer" }
467 "Audio.Details.Song": {
468 "extends": "Audio.Details.Media",
470 "songid": { "$ref": "Library.Id", "required": true },
471 "file": { "type": "string" },
472 "albumartist": { "$ref": "Array.String" },
473 "album": { "type": "string" },
474 "track": { "type": "integer" },
475 "duration": { "type": "integer" },
476 "comment": { "type": "string" },
477 "lyrics": { "type": "string" },
478 "playcount": { "type": "integer" },
479 "musicbrainztrackid": { "type": "string" },
480 "musicbrainzartistid": { "type": "string" },
481 "albumid": { "$ref": "Library.Id" },
482 "lastplayed": { "type": "string" },
483 "disc": { "type": "integer" },
484 "albumartistid": { "$ref": "Array.Integer" }
487 "Video.Fields.Movie": {
488 "extends": "Item.Fields.Base",
489 "items": { "type": "string",
490 "description": "Requesting the cast, showlink and/or tag field will result in increased response times",
491 "enum": [ "title", "genre", "year", "rating", "director", "trailer",
492 "tagline", "plot", "plotoutline", "originaltitle", "lastplayed",
493 "playcount", "writer", "studio", "mpaa", "cast", "country",
494 "imdbnumber", "runtime", "set", "showlink", "streamdetails",
495 "top250", "votes", "fanart", "thumbnail", "file", "sorttitle",
496 "resume", "setid", "dateadded", "tag", "art" ]
499 "Video.Fields.MovieSet": {
500 "extends": "Item.Fields.Base",
501 "items": { "type": "string",
502 "enum": [ "title", "playcount", "fanart", "thumbnail", "art" ]
505 "Video.Fields.TVShow": {
506 "extends": "Item.Fields.Base",
507 "items": { "type": "string",
508 "description": "Requesting the cast field will result in increased response times",
509 "enum": [ "title", "genre", "year", "rating", "plot",
510 "studio", "mpaa", "cast", "playcount", "episode",
511 "imdbnumber", "premiered", "votes", "lastplayed",
512 "fanart", "thumbnail", "file", "originaltitle",
513 "sorttitle", "episodeguide", "season", "watchedepisodes",
514 "dateadded", "tag", "lastplayed", "art" ]
517 "Video.Fields.Season": {
518 "extends": "Item.Fields.Base",
519 "items": { "type": "string",
520 "enum": [ "season", "showtitle", "playcount", "episode", "fanart", "thumbnail", "tvshowid",
521 "watchedepisodes", "art" ]
524 "Video.Fields.Episode": {
525 "extends": "Item.Fields.Base",
526 "items": { "type": "string",
527 "description": "Requesting the cast field will result in increased response times",
528 "enum": [ "title", "plot", "votes", "rating", "writer",
529 "firstaired", "playcount", "runtime", "director",
530 "productioncode", "season", "episode", "originaltitle",
531 "showtitle", "cast", "streamdetails", "lastplayed", "fanart",
532 "thumbnail", "file", "resume", "tvshowid", "dateadded",
536 "Video.Fields.MusicVideo": {
537 "extends": "Item.Fields.Base",
538 "items": { "type": "string",
539 "enum": [ "title", "playcount", "runtime", "director",
540 "studio", "year", "plot", "album", "artist",
541 "genre", "track", "streamdetails", "lastplayed",
542 "fanart", "thumbnail", "file", "resume", "dateadded",
548 "items": { "type": "object",
550 "name": { "type": "string", "required": true },
551 "role": { "type": "string", "required": true },
552 "thumbnail": { "type": "string" }
554 "additionalProperties": false
560 "audio": { "type": "array", "minItems": 1,
561 "items": { "type": "object",
563 "codec": { "type": "string" },
564 "language": { "type": "string" },
565 "channels": { "type": "integer" }
567 "additionalProperties": false
570 "video": { "type": "array", "minItems": 1,
571 "items": { "type": "object",
573 "codec": { "type": "string" },
574 "aspect": { "type": "number" },
575 "width": { "type": "integer" },
576 "height": { "type": "integer" },
577 "duration": { "type": "integer" }
579 "additionalProperties": false
582 "subtitle": { "type": "array", "minItems": 1,
583 "items": { "type": "object",
585 "language": { "type": "string" }
587 "additionalProperties": false
591 "additionalProperties": false
596 "position": { "type": "number", "minimum": 0 },
597 "total": { "type": "number", "minimum": 0 }
599 "additionalProperties": false
601 "Video.Details.Base": {
602 "extends": "Media.Details.Base",
604 "playcount": { "type": "integer" },
605 "art": { "$ref": "Media.Artwork" }
608 "Video.Details.Media": {
609 "extends": "Video.Details.Base",
611 "title": { "type": "string" }
614 "Video.Details.Item": {
615 "extends": "Video.Details.Media",
617 "file": { "type": "string" },
618 "plot": { "type": "string" },
619 "lastplayed": { "type": "string" },
620 "dateadded": { "type": "string" }
623 "Video.Details.File": {
624 "extends": "Video.Details.Item",
626 "runtime": { "type": "integer", "description": "Runtime in seconds" },
627 "director": { "$ref": "Array.String" },
628 "streamdetails": { "$ref": "Video.Streams" },
629 "resume": { "$ref": "Video.Resume" }
632 "Video.Details.Movie": {
633 "extends": "Video.Details.File",
635 "movieid": { "$ref": "Library.Id", "required": true },
636 "genre": { "$ref": "Array.String" },
637 "year": { "type": "integer" },
638 "rating": { "type": "number" },
639 "trailer": { "type": "string" },
640 "tagline": { "type": "string" },
641 "plotoutline": { "type": "string" },
642 "originaltitle": { "type": "string" },
643 "sorttitle": { "type": "string" },
644 "writer": { "$ref": "Array.String" },
645 "studio": { "$ref": "Array.String" },
646 "mpaa": { "type": "string" },
647 "cast": { "$ref": "Video.Cast" },
648 "country": { "$ref": "Array.String" },
649 "imdbnumber": { "type": "string" },
650 "set": { "type": "string" },
651 "showlink": { "$ref": "Array.String" },
652 "top250": { "type": "integer" },
653 "votes": { "type": "string" },
654 "setid": { "$ref": "Library.Id" },
655 "tag": { "$ref": "Array.String" }
658 "Video.Details.MovieSet": {
659 "extends": "Video.Details.Media",
661 "setid": { "$ref": "Library.Id", "required": true }
664 "Video.Details.MovieSet.Extended": {
665 "extends": "Video.Details.MovieSet",
667 "limits": { "$ref": "List.LimitsReturned", "required": true },
668 "movies": { "type": "array",
669 "items": { "$ref": "Video.Details.Movie" }
673 "Video.Details.TVShow": {
674 "extends": "Video.Details.Item",
676 "tvshowid": { "$ref": "Library.Id", "required": true },
677 "genre": { "$ref": "Array.String" },
678 "year": { "type": "integer" },
679 "rating": { "type": "number" },
680 "originaltitle": { "type": "string" },
681 "sorttitle": { "type": "string" },
682 "studio": { "$ref": "Array.String" },
683 "mpaa": { "type": "string" },
684 "cast": { "$ref": "Video.Cast" },
685 "episode": { "type": "integer" },
686 "watchedepisodes": { "type": "integer" },
687 "imdbnumber": { "type": "string" },
688 "premiered": { "type": "string" },
689 "votes": { "type": "string" },
690 "episodeguide": { "type": "string" },
691 "season": { "type": "integer" },
692 "tag": { "$ref": "Array.String" }
695 "Video.Details.Season": {
696 "extends": "Video.Details.Base",
698 "season": { "type": "integer", "required": true },
699 "showtitle": { "type": "string" },
700 "episode": { "type": "integer" },
701 "watchedepisodes": { "type": "integer" },
702 "tvshowid": { "$ref": "Library.Id" }
705 "Video.Details.Episode": {
706 "extends": "Video.Details.File",
708 "episodeid": { "$ref": "Library.Id", "required": true },
709 "votes": { "type": "string" },
710 "rating": { "type": "number" },
711 "writer": { "$ref": "Array.String" },
712 "firstaired": { "type": "string" },
713 "productioncode": { "type": "string" },
714 "season": { "type": "integer" },
715 "episode": { "type": "integer" },
716 "uniqueid": { "type": "object", "additionalProperties": { "type": "string", "minLength": 1 } },
717 "originaltitle": { "type": "string" },
718 "showtitle": { "type": "string" },
719 "cast": { "$ref": "Video.Cast" },
720 "tvshowid": { "$ref": "Library.Id" }
723 "Video.Details.MusicVideo": {
724 "extends": "Video.Details.File",
726 "musicvideoid": { "$ref": "Library.Id", "required": true },
727 "studio": { "$ref": "Array.String" },
728 "year": { "type": "integer" },
729 "album": { "type": "string" },
730 "artist": { "$ref": "Array.String" },
731 "genre": { "$ref": "Array.String" },
732 "track": { "type": "integer" },
733 "tag": { "$ref": "Array.String" }
736 "PVR.Property.Name": {
738 "enum": [ "available", "recording", "scanning" ]
740 "PVR.Property.Value": {
743 "available": { "type": "boolean" },
744 "recording": { "type": "boolean" },
745 "scanning": { "type": "boolean" }
748 "PVR.ChannelGroup.Id": {
750 { "$ref": "Library.Id", "required": true },
751 { "type": "string", "enum": [ "alltv", "allradio" ], "required": true }
754 "PVR.Fields.Channel": {
755 "extends": "Item.Fields.Base",
756 "items": { "type": "string",
757 "enum": [ "thumbnail", "channeltype", "hidden", "locked", "channel", "lastplayed" ]
760 "PVR.Details.Channel": {
761 "extends": "Item.Details.Base",
763 "channelid": { "$ref": "Library.Id", "required": true },
764 "channel": { "type": "string" },
765 "channeltype": { "$ref": "PVR.Channel.Type" },
766 "hidden": { "type": "boolean" },
767 "locked": { "type": "boolean" },
768 "thumbnail": { "type": "string" },
769 "lastplayed": { "type": "string" }
772 "PVR.Details.ChannelGroup": {
773 "extends": "Item.Details.Base",
775 "channelgroupid": { "$ref": "Library.Id", "required": true },
776 "channeltype": { "$ref": "PVR.Channel.Type", "required": true }
779 "PVR.Details.ChannelGroup.Extended": {
780 "extends": "PVR.Details.ChannelGroup",
782 "limits": { "$ref": "List.LimitsReturned", "required": true },
783 "channels": { "type": "array",
784 "items": { "$ref": "PVR.Details.Channel" }
788 "List.Filter.Rule": {
791 "operator": { "$ref": "List.Filter.Operators", "required": true },
794 { "type": "string", "required": true },
795 { "type": "array", "items": { "type": "string" }, "required": true }
800 "List.Filter.Rule.Movies": {
801 "extends": "List.Filter.Rule",
803 "field": { "$ref": "List.Filter.Fields.Movies", "required": true }
806 "List.Filter.Rule.TVShows": {
807 "extends": "List.Filter.Rule",
809 "field": { "$ref": "List.Filter.Fields.TVShows", "required": true }
812 "List.Filter.Rule.Episodes": {
813 "extends": "List.Filter.Rule",
815 "field": { "$ref": "List.Filter.Fields.Episodes", "required": true }
818 "List.Filter.Rule.MusicVideos": {
819 "extends": "List.Filter.Rule",
821 "field": { "$ref": "List.Filter.Fields.MusicVideos", "required": true }
824 "List.Filter.Rule.Artists": {
825 "extends": "List.Filter.Rule",
827 "field": { "$ref": "List.Filter.Fields.Artists", "required": true }
830 "List.Filter.Rule.Albums": {
831 "extends": "List.Filter.Rule",
833 "field": { "$ref": "List.Filter.Fields.Albums", "required": true }
836 "List.Filter.Rule.Songs": {
837 "extends": "List.Filter.Rule",
839 "field": { "$ref": "List.Filter.Fields.Songs", "required": true }
842 "List.Filter.Movies": {
846 "and": { "type": "array",
847 "items": { "$ref": "List.Filter.Movies" },
848 "minItems": 1, "required": true
854 "or": { "type": "array",
855 "items": { "$ref": "List.Filter.Movies" },
856 "minItems": 1, "required": true
860 { "$ref": "List.Filter.Rule.Movies" }
863 "List.Filter.TVShows": {
867 "and": { "type": "array",
868 "items": { "$ref": "List.Filter.TVShows" },
869 "minItems": 1, "required": true
875 "or": { "type": "array",
876 "items": { "$ref": "List.Filter.TVShows" },
877 "minItems": 1, "required": true
881 { "$ref": "List.Filter.Rule.TVShows" }
884 "List.Filter.Episodes": {
888 "and": { "type": "array",
889 "items": { "$ref": "List.Filter.Episodes" },
890 "minItems": 1, "required": true
896 "or": { "type": "array",
897 "items": { "$ref": "List.Filter.Episodes" },
898 "minItems": 1, "required": true
902 { "$ref": "List.Filter.Rule.Episodes" }
905 "List.Filter.MusicVideos": {
909 "and": { "type": "array",
910 "items": { "$ref": "List.Filter.MusicVideos" },
911 "minItems": 1, "required": true
917 "or": { "type": "array",
918 "items": { "$ref": "List.Filter.MusicVideos" },
919 "minItems": 1, "required": true
923 { "$ref": "List.Filter.Rule.MusicVideos" }
926 "List.Filter.Artists": {
930 "and": { "type": "array",
931 "items": { "$ref": "List.Filter.Artists" },
932 "minItems": 1, "required": true
938 "or": { "type": "array",
939 "items": { "$ref": "List.Filter.Artists" },
940 "minItems": 1, "required": true
944 { "$ref": "List.Filter.Rule.Artists" }
947 "List.Filter.Albums": {
951 "and": { "type": "array",
952 "items": { "$ref": "List.Filter.Albums" },
953 "minItems": 1, "required": true
959 "or": { "type": "array",
960 "items": { "$ref": "List.Filter.Albums" },
961 "minItems": 1, "required": true
965 { "$ref": "List.Filter.Rule.Albums" }
968 "List.Filter.Songs": {
972 "and": { "type": "array",
973 "items": { "$ref": "List.Filter.Songs" },
974 "minItems": 1, "required": true
980 "or": { "type": "array",
981 "items": { "$ref": "List.Filter.Songs" },
982 "minItems": 1, "required": true
986 { "$ref": "List.Filter.Rule.Songs" }
990 "extends": [ "Video.Details.File", "Audio.Details.Media" ],
992 "id": { "$ref": "Library.Id" },
993 "type": { "type": "string", "enum": [ "unknown", "movie", "episode", "musicvideo", "song", "picture", "channel" ] },
994 "albumartist": { "$ref": "Array.String" },
995 "album": { "type": "string" },
996 "track": { "type": "integer" },
997 "duration": { "type": "integer" },
998 "comment": { "type": "string" },
999 "lyrics": { "type": "string" },
1000 "musicbrainztrackid": { "type": "string" },
1001 "musicbrainzartistid": { "type": "string" },
1002 "trailer": { "type": "string" },
1003 "tagline": { "type": "string" },
1004 "plotoutline": { "type": "string" },
1005 "originaltitle": { "type": "string" },
1006 "writer": { "$ref": "Array.String" },
1007 "studio": { "$ref": "Array.String" },
1008 "mpaa": { "type": "string" },
1009 "cast": { "$ref": "Video.Cast" },
1010 "country": { "$ref": "Array.String" },
1011 "imdbnumber": { "type": "string" },
1012 "premiered": { "type": "string" },
1013 "productioncode": { "type": "string" },
1014 "set": { "type": "string" },
1015 "showlink": { "$ref": "Array.String" },
1016 "top250": { "type": "integer" },
1017 "votes": { "type": "string" },
1018 "firstaired": { "type": "string" },
1019 "season": { "type": "integer" },
1020 "episode": { "type": "integer" },
1021 "showtitle": { "type": "string" },
1022 "albumid": { "$ref": "Library.Id" },
1023 "setid": { "$ref": "Library.Id" },
1024 "tvshowid": { "$ref": "Library.Id" },
1025 "watchedepisodes": { "type": "integer" },
1026 "disc": { "type": "integer" },
1027 "tag": { "$ref": "Array.String" },
1028 "albumartistid": { "$ref": "Array.Integer" },
1029 "uniqueid": { "type": "object", "additionalProperties": { "type": "string", "minLength": 1 } },
1030 "episodeguide": { "type": "string" },
1031 "sorttitle": { "type": "string" },
1032 "description": { "type": "string" },
1033 "theme": { "$ref": "Array.String" },
1034 "mood": { "$ref": "Array.String" },
1035 "style": { "$ref": "Array.String" },
1036 "albumlabel": { "type": "string" }
1039 "List.Fields.All": {
1040 "extends": "Item.Fields.Base",
1041 "items": { "type": "string",
1042 "enum": [ "title", "artist", "albumartist", "genre", "year", "rating",
1043 "album", "track", "duration", "comment", "lyrics", "musicbrainztrackid",
1044 "musicbrainzartistid", "musicbrainzalbumid", "musicbrainzalbumartistid",
1045 "playcount", "fanart", "director", "trailer", "tagline", "plot",
1046 "plotoutline", "originaltitle", "lastplayed", "writer", "studio",
1047 "mpaa", "cast", "country", "imdbnumber", "premiered", "productioncode",
1048 "runtime", "set", "showlink", "streamdetails", "top250", "votes",
1049 "firstaired", "season", "episode", "showtitle", "thumbnail", "file",
1050 "resume", "artistid", "albumid", "tvshowid", "setid", "watchedepisodes",
1051 "disc", "tag", "art", "genreid", "displayartist", "albumartistid",
1052 "description", "theme", "mood", "style", "albumlabel", "sorttitle",
1053 "episodeguide", "uniqueid", "dateadded", "channel", "channeltype", "hidden",
1054 "locked", "channelnumber", "starttime", "endtime" ]
1058 "extends": "List.Item.Base",
1060 "channel": { "type": "string" },
1061 "channeltype": { "$ref": "PVR.Channel.Type" },
1062 "hidden": { "type": "boolean" },
1063 "locked": { "type": "boolean" },
1064 "channelnumber": { "type": "integer" },
1065 "starttime": { "type": "string" },
1066 "endtime": { "type": "string" }
1069 "List.Fields.Files": {
1070 "extends": "Item.Fields.Base",
1071 "items": { "type": "string",
1072 "enum": [ "title", "artist", "albumartist", "genre", "year", "rating",
1073 "album", "track", "duration", "comment", "lyrics", "musicbrainztrackid",
1074 "musicbrainzartistid", "musicbrainzalbumid", "musicbrainzalbumartistid",
1075 "playcount", "fanart", "director", "trailer", "tagline", "plot",
1076 "plotoutline", "originaltitle", "lastplayed", "writer", "studio",
1077 "mpaa", "cast", "country", "imdbnumber", "premiered", "productioncode",
1078 "runtime", "set", "showlink", "streamdetails", "top250", "votes",
1079 "firstaired", "season", "episode", "showtitle", "thumbnail", "file",
1080 "resume", "artistid", "albumid", "tvshowid", "setid", "watchedepisodes",
1081 "disc", "tag", "art", "genreid", "displayartist", "albumartistid",
1082 "description", "theme", "mood", "style", "albumlabel", "sorttitle",
1083 "episodeguide", "uniqueid", "dateadded", "size", "lastmodified", "mimetype" ]
1087 "extends": "List.Item.Base",
1089 "file": { "type": "string", "required": true },
1090 "filetype": { "type": "string", "enum": [ "file", "directory" ], "required": true },
1091 "size": { "type": "integer", "description": "Size of the file in kB (1000 Byte)" },
1092 "lastmodified": { "type": "string" },
1093 "mimetype": { "type": "string" }
1096 "List.Items.Sources": {
1099 "extends": "Item.Details.Base",
1101 "file": { "type": "string", "required": true }
1107 "enum": [ "unknown", "xbmc.metadata.scraper.albums", "xbmc.metadata.scraper.artists", "xbmc.metadata.scraper.movies",
1108 "xbmc.metadata.scraper.musicvideos", "xbmc.metadata.scraper.tvshows", "xbmc.ui.screensaver",
1109 "xbmc.player.musicviz", "xbmc.python.pluginsource", "xbmc.python.script", "xbmc.python.weather",
1110 "xbmc.python.subtitles", "xbmc.python.lyrics", "xbmc.gui.skin", "xbmc.gui.webinterface",
1111 "xbmc.pvrclient", "xbmc.addon.video", "xbmc.addon.audio", "xbmc.addon.image", "xbmc.addon.executable",
1113 "default": "unknown"
1117 "enum": [ "unknown", "video", "audio", "image", "executable" ],
1118 "default": "unknown"
1121 "extends": "Item.Fields.Base",
1122 "items": { "type": "string",
1123 "enum": [ "name", "version", "summary", "description", "path", "author", "thumbnail", "disclaimer", "fanart",
1124 "dependencies", "broken", "extrainfo", "rating", "enabled" ]
1128 "extends": "Item.Details.Base",
1130 "addonid": { "type": "string", "required": true },
1131 "type": { "$ref": "Addon.Types", "required": true },
1132 "name": { "type": "string" },
1133 "version": { "type": "string" },
1134 "summary": { "type": "string" },
1135 "description": { "type": "string" },
1136 "path": { "type": "string" },
1137 "author": { "type": "string" },
1138 "thumbnail": { "type": "string" },
1139 "disclaimer": { "type": "string" },
1140 "fanart": { "type": "string" },
1141 "dependencies": { "type": "array",
1142 "items": { "type": "object",
1144 "addonid": { "type": "string", "required": true },
1145 "version": { "type": "string", "required": true },
1146 "optional": { "type": "boolean", "required": true }
1150 "broken": { "type": [ "boolean", "string" ] },
1151 "extrainfo": { "type": "array",
1152 "items": { "type": "object",
1154 "key": { "type": "string", "required": true },
1155 "value": { "type": "string", "required": true }
1159 "rating": { "type": "integer" },
1160 "enabled": { "type": "boolean" }
1163 "GUI.Property.Name": {
1165 "enum": [ "currentwindow", "currentcontrol", "skin", "fullscreen" ]
1167 "GUI.Property.Value": {
1170 "currentwindow": { "type": "object",
1172 "id": { "type": "integer", "required": true },
1173 "label": { "type": "string", "required": true }
1176 "currentcontrol": { "type": "object",
1178 "label": { "type": "string", "required": true }
1181 "skin": { "type": "object",
1183 "id": { "type": "string", "required": true, "minLength": 1 },
1184 "name": { "type": "string" }
1187 "fullscreen": { "type": "boolean" }
1190 "System.Property.Name": {
1192 "enum": [ "canshutdown", "cansuspend", "canhibernate", "canreboot" ]
1194 "System.Property.Value": {
1197 "canshutdown": { "type": "boolean" },
1198 "cansuspend": { "type": "boolean" },
1199 "canhibernate": { "type": "boolean" },
1200 "canreboot": { "type": "boolean" }
1203 "Application.Property.Name": {
1205 "enum": [ "volume", "muted", "name", "version" ]
1207 "Application.Property.Value": {
1210 "volume": { "type": "integer", "minimum": 0, "maximum": 100 },
1211 "muted": { "type": "boolean" },
1212 "name": { "type": "string", "minLength": 1 },
1213 "version": { "type": "object",
1215 "major": { "type": "integer", "minimum": 0, "required": true },
1216 "minor": { "type": "integer", "minimum": 0, "required": true },
1217 "revision": { "type": [ "string", "integer" ] },
1218 "tag": { "type": "string", "enum": [ "prealpha", "alpha", "beta", "releasecandidate", "stable" ], "required": true }