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 }, "recursive": { "type": "boolean", "default": false }, "media": { "$ref": "Files.Media", "default": "files" } }, "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 },
202 "codec": { "type": "string", "required": true },
203 "bitrate": { "type": "integer", "required": true },
204 "channels": { "type": "integer", "required": true }
210 "index": { "type": "integer", "minimum": 0, "required": true },
211 "name": { "type": "string", "required": true },
212 "language": { "type": "string", "required": true }
215 "Player.Property.Name": {
217 "enum": [ "type", "partymode", "speed", "time", "percentage",
218 "totaltime", "playlistid", "position", "repeat", "shuffled",
219 "canseek", "canchangespeed", "canmove", "canzoom", "canrotate",
220 "canshuffle", "canrepeat", "currentaudiostream", "audiostreams",
221 "subtitleenabled", "currentsubtitle", "subtitles", "live" ]
223 "Player.Property.Value": {
226 "type": { "$ref": "Player.Type" },
227 "partymode": { "type": "boolean" },
228 "speed": { "type": "integer" },
229 "time": { "$ref": "Global.Time" },
230 "percentage": { "$ref": "Player.Position.Percentage" },
231 "totaltime": { "$ref": "Global.Time" },
232 "playlistid": { "$ref": "Playlist.Id" },
233 "position": { "$ref": "Playlist.Position" },
234 "repeat": { "$ref": "Player.Repeat" },
235 "shuffled": { "type": "boolean" },
236 "canseek": { "type": "boolean" },
237 "canchangespeed": { "type": "boolean" },
238 "canmove": { "type": "boolean" },
239 "canzoom": { "type": "boolean" },
240 "canrotate": { "type": "boolean" },
241 "canshuffle": { "type": "boolean" },
242 "canrepeat": { "type": "boolean" },
243 "currentaudiostream": { "$ref": "Player.Audio.Stream" },
244 "audiostreams": { "type": "array", "items": { "$ref": "Player.Audio.Stream" } },
245 "subtitleenabled": { "type": "boolean" },
246 "currentsubtitle": { "$ref": "Player.Subtitle" },
247 "subtitles": { "type": "array", "items": { "$ref": "Player.Subtitle" } },
248 "live": { "type": "boolean" }
251 "Notifications.Item.Type": {
253 "enum": [ "unknown", "movie", "episode", "musicvideo", "song", "picture", "channel" ]
255 "Notifications.Item": {
257 { "type": "object", "description": "An unknown item does not have any additional information.",
259 "type": { "$ref": "Notifications.Item.Type", "required": true }
262 { "type": "object", "description": "An item known to the database has an identification.",
264 "type": { "$ref": "Notifications.Item.Type", "required": true },
265 "id": { "$ref": "Library.Id", "required": true }
268 { "type": "object", "description": "A movie item has a title and may have a release year.",
270 "type": { "$ref": "Notifications.Item.Type", "required": true },
271 "title": { "type": "string", "required": true },
272 "year": { "type": "integer" }
275 { "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.",
277 "type": { "$ref": "Notifications.Item.Type", "required": true },
278 "title": { "type": "string", "required": true },
279 "episode": { "type": "integer" },
280 "season": { "type": "integer" },
281 "showtitle": { "type": "string" }
284 { "type": "object", "description": "A music video has a title and may have an album and an artist.",
286 "type": { "$ref": "Notifications.Item.Type", "required": true },
287 "title": { "type": "string", "required": true },
288 "album": { "type": "string" },
289 "artist": { "type": "string" }
292 { "type": "object", "description": "A song has a title and may have an album, an artist and a track number.",
294 "type": { "$ref": "Notifications.Item.Type", "required": true },
295 "title": { "type": "string", "required": true },
296 "album": { "type": "string" },
297 "artist": { "type": "string" },
298 "track": { "type": "integer" }
301 { "type": "object", "description": "A picture has a file path.",
303 "type": { "$ref": "Notifications.Item.Type", "required": true },
304 "file": { "type": "string", "required": true }
307 { "type": "object", "description": "A PVR channel is either a radio or tv channel and has a title.",
309 "type": { "$ref": "Notifications.Item.Type", "required": true },
310 "id": { "$ref": "Library.Id", "required": true },
311 "title": { "type": "string", "required": true },
312 "channeltype": { "$ref": "PVR.Channel.Type", "required": true }
317 "Player.Notifications.Player": {
320 "playerid": { "$ref": "Player.Id", "required": true },
321 "speed": { "type": "integer" }
324 "Player.Notifications.Player.Seek": {
325 "extends": "Player.Notifications.Player",
327 "time": { "$ref": "Global.Time" },
328 "seekoffset": { "$ref": "Global.Time" }
331 "Player.Notifications.Data": {
334 "item": { "$ref": "Notifications.Item", "required": true },
335 "player": { "$ref": "Player.Notifications.Player", "required": true }
338 "Item.Fields.Base": {
341 "items": { "type": "string" }
343 "Item.Details.Base": {
346 "label": { "type": "string", "required": true }
349 "Media.Details.Base": {
350 "extends": "Item.Details.Base",
352 "fanart": { "type": "string" },
353 "thumbnail": { "type": "string" }
359 "thumb": { "$ref": "Global.String.NotEmpty" },
360 "poster": { "$ref": "Global.String.NotEmpty" },
361 "banner": { "$ref": "Global.String.NotEmpty" },
362 "fanart": { "$ref": "Global.String.NotEmpty" }
364 "additionalProperties": { "$ref": "Global.String.NotEmpty" }
366 "Library.Fields.Genre": {
367 "extends": "Item.Fields.Base",
368 "items": { "type": "string", "enum": [ "title", "thumbnail" ] }
370 "Library.Details.Genre": {
371 "extends": "Item.Details.Base",
373 "genreid": { "$ref": "Library.Id", "required": true },
374 "title": { "type": "string" },
375 "thumbnail": { "type": "string" }
378 "Audio.Fields.Artist": {
379 "extends": "Item.Fields.Base",
380 "items": { "type": "string",
381 "enum": [ "instrument", "style", "mood", "born", "formed",
382 "description", "genre", "died", "disbanded",
383 "yearsactive", "musicbrainzartistid", "fanart",
384 "thumbnail", "compilationartist" ]
387 "Audio.Fields.Album": {
388 "extends": "Item.Fields.Base",
389 "items": { "type": "string",
390 "description": "Requesting the genreid and/or artistid field will result in increased response times",
391 "enum": [ "title", "description", "artist", "genre",
392 "theme", "mood", "style", "type", "albumlabel",
393 "rating", "year", "musicbrainzalbumid",
394 "musicbrainzalbumartistid", "fanart", "thumbnail",
395 "playcount", "genreid", "artistid", "displayartist" ]
398 "Audio.Fields.Song": {
399 "extends": "Item.Fields.Base",
400 "items": { "type": "string",
401 "description": "Requesting the genreid, artistid and/or albumartistid field will result in increased response times",
402 "enum": [ "title", "artist", "albumartist", "genre", "year",
403 "rating", "album", "track", "duration", "comment",
404 "lyrics", "musicbrainztrackid", "musicbrainzartistid",
405 "musicbrainzalbumid", "musicbrainzalbumartistid",
406 "playcount", "fanart", "thumbnail", "file", "albumid",
407 "lastplayed", "disc", "genreid", "artistid", "displayartist",
411 "Audio.Details.Base": {
412 "extends": "Media.Details.Base",
414 "genre": { "$ref": "Array.String" }
417 "Audio.Details.Media": {
418 "extends": "Audio.Details.Base",
420 "title": { "type": "string" },
421 "artist": { "$ref": "Array.String" },
422 "year": { "type": "integer" },
423 "rating": { "type": "integer" },
424 "musicbrainzalbumid": { "type": "string" },
425 "musicbrainzalbumartistid": { "type": "string" },
426 "genreid": { "$ref": "Array.Integer" },
427 "artistid": { "$ref": "Array.Integer" },
428 "displayartist": { "type" : "string" }
431 "Audio.Details.Artist": {
432 "extends": "Audio.Details.Base",
434 "artistid": { "$ref": "Library.Id", "required": true },
435 "artist": { "type": "string", "required": true },
436 "instrument": { "$ref": "Array.String" },
437 "style": { "$ref": "Array.String" },
438 "mood": { "$ref": "Array.String" },
439 "born": { "type": "string" },
440 "formed": { "type": "string" },
441 "description": { "type": "string" },
442 "died": { "type": "string" },
443 "disbanded": { "type": "string" },
444 "yearsactive": { "$ref": "Array.String" },
445 "compilationartist": { "type": "boolean" },
446 "musicbrainzartistid": { "type": "string" }
449 "Audio.Details.Album": {
450 "extends": "Audio.Details.Media",
452 "albumid": { "$ref": "Library.Id", "required": true },
453 "description": { "type": "string" },
454 "theme": { "$ref": "Array.String" },
455 "mood": { "$ref": "Array.String" },
456 "style": { "$ref": "Array.String" },
457 "type": { "type": "string" },
458 "albumlabel": { "type": "string" },
459 "playcount": { "type": "integer" }
462 "Audio.Details.Song": {
463 "extends": "Audio.Details.Media",
465 "songid": { "$ref": "Library.Id", "required": true },
466 "file": { "type": "string" },
467 "albumartist": { "$ref": "Array.String" },
468 "album": { "type": "string" },
469 "track": { "type": "integer" },
470 "duration": { "type": "integer" },
471 "comment": { "type": "string" },
472 "lyrics": { "type": "string" },
473 "playcount": { "type": "integer" },
474 "musicbrainztrackid": { "type": "string" },
475 "musicbrainzartistid": { "type": "string" },
476 "albumid": { "$ref": "Library.Id" },
477 "lastplayed": { "type": "string" },
478 "disc": { "type": "integer" },
479 "albumartistid": { "$ref": "Array.Integer" }
482 "Video.Fields.Movie": {
483 "extends": "Item.Fields.Base",
484 "items": { "type": "string",
485 "description": "Requesting the cast, showlink and/or tag field will result in increased response times",
486 "enum": [ "title", "genre", "year", "rating", "director", "trailer",
487 "tagline", "plot", "plotoutline", "originaltitle", "lastplayed",
488 "playcount", "writer", "studio", "mpaa", "cast", "country",
489 "imdbnumber", "runtime", "set", "showlink", "streamdetails",
490 "top250", "votes", "fanart", "thumbnail", "file", "sorttitle",
491 "resume", "setid", "dateadded", "tag", "art" ]
494 "Video.Fields.MovieSet": {
495 "extends": "Item.Fields.Base",
496 "items": { "type": "string",
497 "enum": [ "title", "playcount", "fanart", "thumbnail", "art" ]
500 "Video.Fields.TVShow": {
501 "extends": "Item.Fields.Base",
502 "items": { "type": "string",
503 "description": "Requesting the cast field will result in increased response times",
504 "enum": [ "title", "genre", "year", "rating", "plot",
505 "studio", "mpaa", "cast", "playcount", "episode",
506 "imdbnumber", "premiered", "votes", "lastplayed",
507 "fanart", "thumbnail", "file", "originaltitle",
508 "sorttitle", "episodeguide", "season", "watchedepisodes",
509 "dateadded", "tag", "lastplayed", "art" ]
512 "Video.Fields.Season": {
513 "extends": "Item.Fields.Base",
514 "items": { "type": "string",
515 "enum": [ "season", "showtitle", "playcount", "episode", "fanart", "thumbnail", "tvshowid",
516 "watchedepisodes", "art" ]
519 "Video.Fields.Episode": {
520 "extends": "Item.Fields.Base",
521 "items": { "type": "string",
522 "description": "Requesting the cast field will result in increased response times",
523 "enum": [ "title", "plot", "votes", "rating", "writer",
524 "firstaired", "playcount", "runtime", "director",
525 "productioncode", "season", "episode", "originaltitle",
526 "showtitle", "cast", "streamdetails", "lastplayed", "fanart",
527 "thumbnail", "file", "resume", "tvshowid", "dateadded",
531 "Video.Fields.MusicVideo": {
532 "extends": "Item.Fields.Base",
533 "items": { "type": "string",
534 "enum": [ "title", "playcount", "runtime", "director",
535 "studio", "year", "plot", "album", "artist",
536 "genre", "track", "streamdetails", "lastplayed",
537 "fanart", "thumbnail", "file", "resume", "dateadded",
543 "items": { "type": "object",
545 "name": { "type": "string", "required": true },
546 "role": { "type": "string", "required": true },
547 "thumbnail": { "type": "string" }
549 "additionalProperties": false
555 "audio": { "type": "array", "minItems": 1,
556 "items": { "type": "object",
558 "codec": { "type": "string" },
559 "language": { "type": "string" },
560 "channels": { "type": "integer" }
562 "additionalProperties": false
565 "video": { "type": "array", "minItems": 1,
566 "items": { "type": "object",
568 "codec": { "type": "string" },
569 "aspect": { "type": "number" },
570 "width": { "type": "integer" },
571 "height": { "type": "integer" },
572 "duration": { "type": "integer" }
574 "additionalProperties": false
577 "subtitle": { "type": "array", "minItems": 1,
578 "items": { "type": "object",
580 "language": { "type": "string" }
582 "additionalProperties": false
586 "additionalProperties": false
591 "position": { "type": "number", "minimum": 0 },
592 "total": { "type": "number", "minimum": 0 }
594 "additionalProperties": false
596 "Video.Details.Base": {
597 "extends": "Media.Details.Base",
599 "playcount": { "type": "integer" },
600 "art": { "$ref": "Media.Artwork" }
603 "Video.Details.Media": {
604 "extends": "Video.Details.Base",
606 "title": { "type": "string" }
609 "Video.Details.Item": {
610 "extends": "Video.Details.Media",
612 "file": { "type": "string" },
613 "plot": { "type": "string" },
614 "lastplayed": { "type": "string" },
615 "dateadded": { "type": "string" }
618 "Video.Details.File": {
619 "extends": "Video.Details.Item",
621 "runtime": { "type": "integer", "description": "Runtime in seconds" },
622 "director": { "$ref": "Array.String" },
623 "streamdetails": { "$ref": "Video.Streams" },
624 "resume": { "$ref": "Video.Resume" }
627 "Video.Details.Movie": {
628 "extends": "Video.Details.File",
630 "movieid": { "$ref": "Library.Id", "required": true },
631 "genre": { "$ref": "Array.String" },
632 "year": { "type": "integer" },
633 "rating": { "type": "number" },
634 "trailer": { "type": "string" },
635 "tagline": { "type": "string" },
636 "plotoutline": { "type": "string" },
637 "originaltitle": { "type": "string" },
638 "sorttitle": { "type": "string" },
639 "writer": { "$ref": "Array.String" },
640 "studio": { "$ref": "Array.String" },
641 "mpaa": { "type": "string" },
642 "cast": { "$ref": "Video.Cast" },
643 "country": { "$ref": "Array.String" },
644 "imdbnumber": { "type": "string" },
645 "set": { "type": "string" },
646 "showlink": { "$ref": "Array.String" },
647 "top250": { "type": "integer" },
648 "votes": { "type": "string" },
649 "setid": { "$ref": "Library.Id" },
650 "tag": { "$ref": "Array.String" }
653 "Video.Details.MovieSet": {
654 "extends": "Video.Details.Media",
656 "setid": { "$ref": "Library.Id", "required": true }
659 "Video.Details.MovieSet.Extended": {
660 "extends": "Video.Details.MovieSet",
662 "limits": { "$ref": "List.LimitsReturned", "required": true },
663 "movies": { "type": "array",
664 "items": { "$ref": "Video.Details.Movie" }
668 "Video.Details.TVShow": {
669 "extends": "Video.Details.Item",
671 "tvshowid": { "$ref": "Library.Id", "required": true },
672 "genre": { "$ref": "Array.String" },
673 "year": { "type": "integer" },
674 "rating": { "type": "number" },
675 "originaltitle": { "type": "string" },
676 "sorttitle": { "type": "string" },
677 "studio": { "$ref": "Array.String" },
678 "mpaa": { "type": "string" },
679 "cast": { "$ref": "Video.Cast" },
680 "episode": { "type": "integer" },
681 "watchedepisodes": { "type": "integer" },
682 "imdbnumber": { "type": "string" },
683 "premiered": { "type": "string" },
684 "votes": { "type": "string" },
685 "episodeguide": { "type": "string" },
686 "season": { "type": "integer" },
687 "tag": { "$ref": "Array.String" }
690 "Video.Details.Season": {
691 "extends": "Video.Details.Base",
693 "season": { "type": "integer", "required": true },
694 "showtitle": { "type": "string" },
695 "episode": { "type": "integer" },
696 "watchedepisodes": { "type": "integer" },
697 "tvshowid": { "$ref": "Library.Id" }
700 "Video.Details.Episode": {
701 "extends": "Video.Details.File",
703 "episodeid": { "$ref": "Library.Id", "required": true },
704 "votes": { "type": "string" },
705 "rating": { "type": "number" },
706 "writer": { "$ref": "Array.String" },
707 "firstaired": { "type": "string" },
708 "productioncode": { "type": "string" },
709 "season": { "type": "integer" },
710 "episode": { "type": "integer" },
711 "uniqueid": { "type": "object", "additionalProperties": { "type": "string", "minLength": 1 } },
712 "originaltitle": { "type": "string" },
713 "showtitle": { "type": "string" },
714 "cast": { "$ref": "Video.Cast" },
715 "tvshowid": { "$ref": "Library.Id" }
718 "Video.Details.MusicVideo": {
719 "extends": "Video.Details.File",
721 "musicvideoid": { "$ref": "Library.Id", "required": true },
722 "studio": { "$ref": "Array.String" },
723 "year": { "type": "integer" },
724 "album": { "type": "string" },
725 "artist": { "$ref": "Array.String" },
726 "genre": { "$ref": "Array.String" },
727 "track": { "type": "integer" },
728 "tag": { "$ref": "Array.String" }
731 "PVR.Property.Name": {
733 "enum": [ "available", "recording", "scanning" ]
735 "PVR.Property.Value": {
738 "available": { "type": "boolean" },
739 "recording": { "type": "boolean" },
740 "scanning": { "type": "boolean" }
743 "PVR.ChannelGroup.Id": {
745 { "$ref": "Library.Id", "required": true },
746 { "type": "string", "enum": [ "alltv", "allradio" ], "required": true }
749 "PVR.Fields.Channel": {
750 "extends": "Item.Fields.Base",
751 "items": { "type": "string",
752 "enum": [ "thumbnail", "channeltype", "hidden", "locked", "channel", "lastplayed" ]
755 "PVR.Details.Channel": {
756 "extends": "Item.Details.Base",
758 "channelid": { "$ref": "Library.Id", "required": true },
759 "channel": { "type": "string" },
760 "channeltype": { "$ref": "PVR.Channel.Type" },
761 "hidden": { "type": "boolean" },
762 "locked": { "type": "boolean" },
763 "thumbnail": { "type": "string" },
764 "lastplayed": { "type": "string" }
767 "PVR.Details.ChannelGroup": {
768 "extends": "Item.Details.Base",
770 "channelgroupid": { "$ref": "Library.Id", "required": true },
771 "channeltype": { "$ref": "PVR.Channel.Type", "required": true }
774 "PVR.Details.ChannelGroup.Extended": {
775 "extends": "PVR.Details.ChannelGroup",
777 "limits": { "$ref": "List.LimitsReturned", "required": true },
778 "channels": { "type": "array",
779 "items": { "$ref": "PVR.Details.Channel" }
783 "PVR.Fields.Broadcast": {
784 "extends": "Item.Fields.Base",
785 "items": { "type": "string",
786 "enum": [ "title", "plot", "plotoutline", "starttime",
787 "endtime", "runtime", "progress", "progresspercentage",
788 "genre", "episodename", "episodenum", "episodepart",
789 "firstaired", "hastimer", "isactive", "parentalrating",
790 "wasactive", "thumbnail" ]
793 "PVR.Details.Broadcast": {"
794 "extends": "Item.Details.Base",
796 "broadcastid": { "$ref": "Library.Id", "required": true },
797 "title": { "type": "string" },
798 "plot": { "type": "string" },
799 "plotoutline": { "type": "string" },
800 "starttime": { "type": "string" },
801 "endtime": { "type": "string" },
802 "runtime": { "type": "integer" },
803 "progress": { "type": "integer" },
804 "progresspercentage": { "type": "number" },
805 "genre": { "type": "string" },
806 "episodename": { "type": "string" },
807 "episodenum": { "type": "integer" },
808 "episodepart": { "type": "integer" },
809 "firstaired": { "type": "string" },
810 "hastimer": { "type": "boolean" },
811 "isactive": { "type": "boolean" },
812 "rating": { "type": "integer" },
813 "wasactive": { "type": "boolean" },
814 "thumbnail": { "type": "string" }
817 "Profiles.Password": {
820 "value": { "type": "string", "required": true, "description": "Password" },
821 "encryption": { "type": "string", "description": "Password Encryption", "default": "md5", "enum": [ "none", "md5" ] }
824 "Profiles.Fields.Profile": {
825 "extends": "Item.Fields.Base",
826 "items": { "type": "string", "enum": [ "thumbnail", "lockmode" ] }
828 "Profiles.Details.Profile": {
829 "extends": "Item.Details.Base",
831 "thumbnail": { "type": "string" },
832 "lockmode": { "type": "integer" }
835 "List.Filter.Rule": {
838 "operator": { "$ref": "List.Filter.Operators", "required": true },
841 { "type": "string", "required": true },
842 { "type": "array", "items": { "type": "string" }, "required": true }
847 "List.Filter.Rule.Movies": {
848 "extends": "List.Filter.Rule",
850 "field": { "$ref": "List.Filter.Fields.Movies", "required": true }
853 "List.Filter.Rule.TVShows": {
854 "extends": "List.Filter.Rule",
856 "field": { "$ref": "List.Filter.Fields.TVShows", "required": true }
859 "List.Filter.Rule.Episodes": {
860 "extends": "List.Filter.Rule",
862 "field": { "$ref": "List.Filter.Fields.Episodes", "required": true }
865 "List.Filter.Rule.MusicVideos": {
866 "extends": "List.Filter.Rule",
868 "field": { "$ref": "List.Filter.Fields.MusicVideos", "required": true }
871 "List.Filter.Rule.Artists": {
872 "extends": "List.Filter.Rule",
874 "field": { "$ref": "List.Filter.Fields.Artists", "required": true }
877 "List.Filter.Rule.Albums": {
878 "extends": "List.Filter.Rule",
880 "field": { "$ref": "List.Filter.Fields.Albums", "required": true }
883 "List.Filter.Rule.Songs": {
884 "extends": "List.Filter.Rule",
886 "field": { "$ref": "List.Filter.Fields.Songs", "required": true }
889 "List.Filter.Movies": {
893 "and": { "type": "array",
894 "items": { "$ref": "List.Filter.Movies" },
895 "minItems": 1, "required": true
901 "or": { "type": "array",
902 "items": { "$ref": "List.Filter.Movies" },
903 "minItems": 1, "required": true
907 { "$ref": "List.Filter.Rule.Movies" }
910 "List.Filter.TVShows": {
914 "and": { "type": "array",
915 "items": { "$ref": "List.Filter.TVShows" },
916 "minItems": 1, "required": true
922 "or": { "type": "array",
923 "items": { "$ref": "List.Filter.TVShows" },
924 "minItems": 1, "required": true
928 { "$ref": "List.Filter.Rule.TVShows" }
931 "List.Filter.Episodes": {
935 "and": { "type": "array",
936 "items": { "$ref": "List.Filter.Episodes" },
937 "minItems": 1, "required": true
943 "or": { "type": "array",
944 "items": { "$ref": "List.Filter.Episodes" },
945 "minItems": 1, "required": true
949 { "$ref": "List.Filter.Rule.Episodes" }
952 "List.Filter.MusicVideos": {
956 "and": { "type": "array",
957 "items": { "$ref": "List.Filter.MusicVideos" },
958 "minItems": 1, "required": true
964 "or": { "type": "array",
965 "items": { "$ref": "List.Filter.MusicVideos" },
966 "minItems": 1, "required": true
970 { "$ref": "List.Filter.Rule.MusicVideos" }
973 "List.Filter.Artists": {
977 "and": { "type": "array",
978 "items": { "$ref": "List.Filter.Artists" },
979 "minItems": 1, "required": true
985 "or": { "type": "array",
986 "items": { "$ref": "List.Filter.Artists" },
987 "minItems": 1, "required": true
991 { "$ref": "List.Filter.Rule.Artists" }
994 "List.Filter.Albums": {
998 "and": { "type": "array",
999 "items": { "$ref": "List.Filter.Albums" },
1000 "minItems": 1, "required": true
1006 "or": { "type": "array",
1007 "items": { "$ref": "List.Filter.Albums" },
1008 "minItems": 1, "required": true
1012 { "$ref": "List.Filter.Rule.Albums" }
1015 "List.Filter.Songs": {
1019 "and": { "type": "array",
1020 "items": { "$ref": "List.Filter.Songs" },
1021 "minItems": 1, "required": true
1027 "or": { "type": "array",
1028 "items": { "$ref": "List.Filter.Songs" },
1029 "minItems": 1, "required": true
1033 { "$ref": "List.Filter.Rule.Songs" }
1037 "extends": [ "Video.Details.File", "Audio.Details.Media" ],
1039 "id": { "$ref": "Library.Id" },
1040 "type": { "type": "string", "enum": [ "unknown", "movie", "episode", "musicvideo", "song", "picture", "channel" ] },
1041 "albumartist": { "$ref": "Array.String" },
1042 "album": { "type": "string" },
1043 "track": { "type": "integer" },
1044 "duration": { "type": "integer" },
1045 "comment": { "type": "string" },
1046 "lyrics": { "type": "string" },
1047 "musicbrainztrackid": { "type": "string" },
1048 "musicbrainzartistid": { "type": "string" },
1049 "trailer": { "type": "string" },
1050 "tagline": { "type": "string" },
1051 "plotoutline": { "type": "string" },
1052 "originaltitle": { "type": "string" },
1053 "writer": { "$ref": "Array.String" },
1054 "studio": { "$ref": "Array.String" },
1055 "mpaa": { "type": "string" },
1056 "cast": { "$ref": "Video.Cast" },
1057 "country": { "$ref": "Array.String" },
1058 "imdbnumber": { "type": "string" },
1059 "premiered": { "type": "string" },
1060 "productioncode": { "type": "string" },
1061 "set": { "type": "string" },
1062 "showlink": { "$ref": "Array.String" },
1063 "top250": { "type": "integer" },
1064 "votes": { "type": "string" },
1065 "firstaired": { "type": "string" },
1066 "season": { "type": "integer" },
1067 "episode": { "type": "integer" },
1068 "showtitle": { "type": "string" },
1069 "albumid": { "$ref": "Library.Id" },
1070 "setid": { "$ref": "Library.Id" },
1071 "tvshowid": { "$ref": "Library.Id" },
1072 "watchedepisodes": { "type": "integer" },
1073 "disc": { "type": "integer" },
1074 "tag": { "$ref": "Array.String" },
1075 "albumartistid": { "$ref": "Array.Integer" },
1076 "uniqueid": { "type": "object", "additionalProperties": { "type": "string", "minLength": 1 } },
1077 "episodeguide": { "type": "string" },
1078 "sorttitle": { "type": "string" },
1079 "description": { "type": "string" },
1080 "theme": { "$ref": "Array.String" },
1081 "mood": { "$ref": "Array.String" },
1082 "style": { "$ref": "Array.String" },
1083 "albumlabel": { "type": "string" }
1086 "List.Fields.All": {
1087 "extends": "Item.Fields.Base",
1088 "items": { "type": "string",
1089 "enum": [ "title", "artist", "albumartist", "genre", "year", "rating",
1090 "album", "track", "duration", "comment", "lyrics", "musicbrainztrackid",
1091 "musicbrainzartistid", "musicbrainzalbumid", "musicbrainzalbumartistid",
1092 "playcount", "fanart", "director", "trailer", "tagline", "plot",
1093 "plotoutline", "originaltitle", "lastplayed", "writer", "studio",
1094 "mpaa", "cast", "country", "imdbnumber", "premiered", "productioncode",
1095 "runtime", "set", "showlink", "streamdetails", "top250", "votes",
1096 "firstaired", "season", "episode", "showtitle", "thumbnail", "file",
1097 "resume", "artistid", "albumid", "tvshowid", "setid", "watchedepisodes",
1098 "disc", "tag", "art", "genreid", "displayartist", "albumartistid",
1099 "description", "theme", "mood", "style", "albumlabel", "sorttitle",
1100 "episodeguide", "uniqueid", "dateadded", "channel", "channeltype", "hidden",
1101 "locked", "channelnumber", "starttime", "endtime" ]
1105 "extends": "List.Item.Base",
1107 "channel": { "type": "string" },
1108 "channeltype": { "$ref": "PVR.Channel.Type" },
1109 "hidden": { "type": "boolean" },
1110 "locked": { "type": "boolean" },
1111 "channelnumber": { "type": "integer" },
1112 "starttime": { "type": "string" },
1113 "endtime": { "type": "string" }
1116 "List.Fields.Files": {
1117 "extends": "Item.Fields.Base",
1118 "items": { "type": "string",
1119 "enum": [ "title", "artist", "albumartist", "genre", "year", "rating",
1120 "album", "track", "duration", "comment", "lyrics", "musicbrainztrackid",
1121 "musicbrainzartistid", "musicbrainzalbumid", "musicbrainzalbumartistid",
1122 "playcount", "fanart", "director", "trailer", "tagline", "plot",
1123 "plotoutline", "originaltitle", "lastplayed", "writer", "studio",
1124 "mpaa", "cast", "country", "imdbnumber", "premiered", "productioncode",
1125 "runtime", "set", "showlink", "streamdetails", "top250", "votes",
1126 "firstaired", "season", "episode", "showtitle", "thumbnail", "file",
1127 "resume", "artistid", "albumid", "tvshowid", "setid", "watchedepisodes",
1128 "disc", "tag", "art", "genreid", "displayartist", "albumartistid",
1129 "description", "theme", "mood", "style", "albumlabel", "sorttitle",
1130 "episodeguide", "uniqueid", "dateadded", "size", "lastmodified", "mimetype" ]
1134 "extends": "List.Item.Base",
1136 "file": { "type": "string", "required": true },
1137 "filetype": { "type": "string", "enum": [ "file", "directory" ], "required": true },
1138 "size": { "type": "integer", "description": "Size of the file in bytes" },
1139 "lastmodified": { "type": "string" },
1140 "mimetype": { "type": "string" }
1143 "List.Items.Sources": {
1146 "extends": "Item.Details.Base",
1148 "file": { "type": "string", "required": true }
1154 "enum": [ "unknown", "xbmc.metadata.scraper.albums", "xbmc.metadata.scraper.artists", "xbmc.metadata.scraper.movies",
1155 "xbmc.metadata.scraper.musicvideos", "xbmc.metadata.scraper.tvshows", "xbmc.ui.screensaver",
1156 "xbmc.player.musicviz", "xbmc.python.pluginsource", "xbmc.python.script", "xbmc.python.weather",
1157 "xbmc.python.subtitles", "xbmc.python.lyrics", "xbmc.gui.skin", "xbmc.gui.webinterface",
1158 "xbmc.pvrclient", "xbmc.addon.video", "xbmc.addon.audio", "xbmc.addon.image", "xbmc.addon.executable",
1160 "default": "unknown"
1164 "enum": [ "unknown", "video", "audio", "image", "executable" ],
1165 "default": "unknown"
1168 "extends": "Item.Fields.Base",
1169 "items": { "type": "string",
1170 "enum": [ "name", "version", "summary", "description", "path", "author", "thumbnail", "disclaimer", "fanart",
1171 "dependencies", "broken", "extrainfo", "rating", "enabled" ]
1175 "extends": "Item.Details.Base",
1177 "addonid": { "type": "string", "required": true },
1178 "type": { "$ref": "Addon.Types", "required": true },
1179 "name": { "type": "string" },
1180 "version": { "type": "string" },
1181 "summary": { "type": "string" },
1182 "description": { "type": "string" },
1183 "path": { "type": "string" },
1184 "author": { "type": "string" },
1185 "thumbnail": { "type": "string" },
1186 "disclaimer": { "type": "string" },
1187 "fanart": { "type": "string" },
1188 "dependencies": { "type": "array",
1189 "items": { "type": "object",
1191 "addonid": { "type": "string", "required": true },
1192 "version": { "type": "string", "required": true },
1193 "optional": { "type": "boolean", "required": true }
1197 "broken": { "type": [ "boolean", "string" ] },
1198 "extrainfo": { "type": "array",
1199 "items": { "type": "object",
1201 "key": { "type": "string", "required": true },
1202 "value": { "type": "string", "required": true }
1206 "rating": { "type": "integer" },
1207 "enabled": { "type": "boolean" }
1210 "GUI.Property.Name": {
1212 "enum": [ "currentwindow", "currentcontrol", "skin", "fullscreen", "stereoscopicmode" ]
1214 "GUI.Property.Value": {
1217 "currentwindow": { "type": "object",
1219 "id": { "type": "integer", "required": true },
1220 "label": { "type": "string", "required": true }
1223 "currentcontrol": { "type": "object",
1225 "label": { "type": "string", "required": true }
1228 "skin": { "type": "object",
1230 "id": { "type": "string", "required": true, "minLength": 1 },
1231 "name": { "type": "string" }
1234 "fullscreen": { "type": "boolean" },
1235 "stereoscopicmode": { "$ref": "GUI.Stereoscopy.Mode" }
1238 "GUI.Stereoscopy.Mode": {
1241 "mode": { "type": "string", "required": true, "enum": [ "off", "split_vertical", "split_horizontal", "row_interleaved", "hardware_based", "anaglyph_cyan_red", "anaglyph_green_magenta", "monoscopic" ] },
1242 "label": { "type": "string", "required": true }
1245 "System.Property.Name": {
1247 "enum": [ "canshutdown", "cansuspend", "canhibernate", "canreboot" ]
1249 "System.Property.Value": {
1252 "canshutdown": { "type": "boolean" },
1253 "cansuspend": { "type": "boolean" },
1254 "canhibernate": { "type": "boolean" },
1255 "canreboot": { "type": "boolean" }
1258 "Application.Property.Name": {
1260 "enum": [ "volume", "muted", "name", "version" ]
1262 "Application.Property.Value": {
1265 "volume": { "type": "integer", "minimum": 0, "maximum": 100 },
1266 "muted": { "type": "boolean" },
1267 "name": { "type": "string", "minLength": 1 },
1268 "version": { "type": "object",
1270 "major": { "type": "integer", "minimum": 0, "required": true },
1271 "minor": { "type": "integer", "minimum": 0, "required": true },
1272 "revision": { "type": [ "string", "integer" ] },
1273 "tag": { "type": "string", "enum": [ "prealpha", "alpha", "beta", "releasecandidate", "stable" ], "required": true }
1278 "Favourite.Fields.Favourite": {
1279 "extends": "Item.Fields.Base",
1280 "items": { "type": "string",
1281 "enum": [ "window", "windowparameter", "thumbnail", "path" ]
1286 "enum": [ "media", "window", "script", "unknown" ]
1288 "Favourite.Details.Favourite": {
1291 "title": { "type": "string", "required": true },
1292 "type": { "$ref": "Favourite.Type", "required": true },
1293 "path": { "type": "string" },
1294 "window": { "type": "string" },
1295 "windowparameter": { "type": "string" },
1296 "thumbnail": { "type": "string" }
1298 "additionalProperties": false