3 "type": [ "null", "boolean" ],
8 "items": { "type": "string", "minLength": 1 }
12 "items": { "type": "integer" }
17 "hours": { "type": "integer", "required": true, "minimum": 0, "maximum": 23 },
18 "minutes": { "type": "integer", "required": true, "minimum": 0, "maximum": 59 },
19 "seconds": { "type": "integer", "required": true, "minimum": 0, "maximum": 59 },
20 "milliseconds": { "type": "integer", "required": true, "minimum": 0, "maximum": 999 }
22 "additionalProperties": false
24 "Configuration.Notifications": {
27 "Player": { "type": "boolean", "required": true },
28 "GUI": { "type": "boolean", "required": true },
29 "System": { "type": "boolean", "required": true },
30 "VideoLibrary": { "type": "boolean", "required": true },
31 "AudioLibrary": { "type": "boolean", "required": true },
32 "Other": { "type": "boolean", "required": true }
34 "additionalProperties": false
37 "type": "object", "required": true,
39 "notifications": { "$ref": "Configuration.Notifications", "required": true }
55 "enum": [ "unknown", "video", "audio", "picture", "mixed" ]
57 "Playlist.Property.Name": {
59 "enum": [ "type", "size" ]
61 "Playlist.Property.Value": {
64 "type": { "$ref": "Playlist.Type" },
65 "size": { "type": "integer", "minimum": 0 }
68 "Playlist.Position": {
75 { "type": "object", "properties": { "file": { "type": "string", "description": "Path to a file (not a directory) to be added to the playlist", "required": true } }, "additionalProperties": false },
76 { "type": "object", "properties": { "directory": { "type": "string", "required": true } }, "additionalProperties": false },
77 { "type": "object", "properties": { "movieid": { "$ref": "Library.Id", "required": true } }, "additionalProperties": false },
78 { "type": "object", "properties": { "episodeid": { "$ref": "Library.Id", "required": true } }, "additionalProperties": false },
79 { "type": "object", "properties": { "musicvideoid": { "$ref": "Library.Id", "required": true } }, "additionalProperties": false },
80 { "type": "object", "properties": { "artistid": { "$ref": "Library.Id", "required": true } }, "additionalProperties": false },
81 { "type": "object", "properties": { "albumid": { "$ref": "Library.Id", "required": true } }, "additionalProperties": false },
82 { "type": "object", "properties": { "songid": { "$ref": "Library.Id", "required": true } }, "additionalProperties": false },
83 { "type": "object", "properties": { "genreid": { "$ref": "Library.Id", "required": true, "description": "Identification of a genre from the AudioLibrary" } }, "additionalProperties": false }
94 "enum": [ "video", "audio", "picture" ]
96 "Player.Position.Percentage": {
105 "speed": { "type": "integer" }
110 "enum": [ "off", "one", "all" ]
112 "Player.Audio.Stream": {
115 "index": { "type": "integer", "minimum": 0, "required": true },
116 "name": { "type": "string", "required": true },
117 "language": { "type": "string", "required": true }
120 "Player.Audio.Stream.Extended": {
121 "extends": "Player.Audio.Stream",
123 "codec": { "type": "string", "required": true },
124 "bitrate": { "type": "integer", "required": true },
125 "channels": { "type": "integer", "required": true }
131 "index": { "type": "integer", "minimum": 0, "required": true },
132 "name": { "type": "string", "required": true },
133 "language": { "type": "string", "required": true }
136 "Player.Property.Name": {
138 "enum": [ "type", "partymode", "speed", "time", "percentage",
139 "totaltime", "playlistid", "position", "repeat", "shuffled",
140 "canseek", "canchangespeed", "canmove", "canzoom", "canrotate",
141 "canshuffle", "canrepeat", "currentaudiostream", "audiostreams",
142 "subtitleenabled", "currentsubtitle", "subtitles" ]
144 "Player.Property.Value": {
147 "type": { "$ref": "Player.Type" },
148 "partymode": { "type": "boolean" },
149 "speed": { "type": "integer" },
150 "time": { "$ref": "Global.Time" },
151 "percentage": { "$ref": "Player.Position.Percentage" },
152 "totaltime": { "$ref": "Global.Time" },
153 "playlistid": { "$ref": "Playlist.Id" },
154 "position": { "$ref": "Playlist.Position" },
155 "repeat": { "$ref": "Player.Repeat" },
156 "shuffled": { "type": "boolean" },
157 "canseek": { "type": "boolean" },
158 "canchangespeed": { "type": "boolean" },
159 "canmove": { "type": "boolean" },
160 "canzoom": { "type": "boolean" },
161 "canrotate": { "type": "boolean" },
162 "canshuffle": { "type": "boolean" },
163 "canrepeat": { "type": "boolean" },
164 "currentaudiostream": { "$ref": "Player.Audio.Stream.Extended" },
165 "audiostreams": { "type": "array", "items": { "$ref": "Player.Audio.Stream.Extended" } },
166 "subtitleenabled": { "type": "boolean" },
167 "currentsubtitle": { "$ref": "Player.Subtitle" },
168 "subtitles": { "type": "array", "items": { "$ref": "Player.Subtitle" } }
171 "Player.Notifications.Item.Type": {
173 "enum": [ "unknown", "movie", "episode", "musicvideo", "song" ]
175 "Player.Notifications.Item": {
177 { "type": "object", "description": "An unknown item does not have any additional information.",
179 "type": { "$ref": "Player.Notifications.Item.Type", "required": true }
182 { "type": "object", "description": "An item known to the database has an identification.",
184 "type": { "$ref": "Player.Notifications.Item.Type", "required": true },
185 "id": { "$ref": "Library.Id", "required": true }
188 { "type": "object", "description": "A movie item has a title and may have a release year.",
190 "type": { "$ref": "Player.Notifications.Item.Type", "required": true },
191 "title": { "type": "string", "required": true },
192 "year": { "type": "integer" }
195 { "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.",
197 "type": { "$ref": "Player.Notifications.Item.Type", "required": true },
198 "title": { "type": "string", "required": true },
199 "episode": { "type": "integer" },
200 "season": { "type": "integer" },
201 "showtitle": { "type": "string" }
204 { "type": "object", "description": "A music video has a title and may have an album and an artist.",
206 "type": { "$ref": "Player.Notifications.Item.Type", "required": true },
207 "title": { "type": "string", "required": true },
208 "album": { "type": "string" },
209 "artist": { "type": "string" }
212 { "type": "object", "description": "A song has a title and may have an album, an artist and a track number.",
214 "type": { "$ref": "Player.Notifications.Item.Type", "required": true },
215 "title": { "type": "string", "required": true },
216 "album": { "type": "string" },
217 "artist": { "type": "string" },
218 "track": { "type": "integer" }
223 "Player.Notifications.Player": {
226 "playerid": { "$ref": "Player.Id", "required": true },
227 "speed": { "type": "integer" }
230 "Player.Notifications.Player.Seek": {
231 "extends": "Player.Notifications.Player",
233 "time": { "$ref": "Global.Time" },
234 "seekoffset": { "$ref": "Global.Time" }
237 "Player.Notifications.Data": {
240 "item": { "$ref": "Player.Notifications.Item", "required": true },
241 "player": { "$ref": "Player.Notifications.Player", "required": true }
244 "Item.Fields.Base": {
247 "items": { "type": "string" }
249 "Item.Details.Base": {
252 "label": { "type": "string", "required": true }
255 "Media.Details.Base": {
256 "extends": "Item.Details.Base",
258 "fanart": { "type": "string" },
259 "thumbnail": { "type": "string" }
262 "Library.Fields.Genre": {
263 "extends": "Item.Fields.Base",
264 "items": { "type": "string", "enum": [ "title", "thumbnail" ] }
266 "Library.Details.Genre": {
267 "extends": "Item.Details.Base",
269 "genreid": { "$ref": "Library.Id", "required": true },
270 "title": { "type": "string" },
271 "thumbnail": { "type": "string" }
274 "Audio.Fields.Artist": {
275 "extends": "Item.Fields.Base",
276 "items": { "type": "string",
277 "enum": [ "instrument", "style", "mood", "born", "formed",
278 "description", "genre", "died", "disbanded",
279 "yearsactive", "musicbrainzartistid", "fanart",
283 "Audio.Fields.Album": {
284 "extends": "Item.Fields.Base",
285 "items": { "type": "string",
286 "enum": [ "title", "description", "artist", "genre",
287 "theme", "mood", "style", "type", "albumlabel",
288 "rating", "year", "musicbrainzalbumid",
289 "musicbrainzalbumartistid", "fanart", "thumbnail",
293 "Audio.Fields.Song": {
294 "extends": "Item.Fields.Base",
295 "items": { "type": "string",
296 "enum": [ "title", "artist", "albumartist", "genre", "year",
297 "rating", "album", "track", "duration", "comment",
298 "lyrics", "musicbrainztrackid", "musicbrainzartistid",
299 "musicbrainzalbumid", "musicbrainzalbumartistid",
300 "playcount", "fanart", "thumbnail", "file", "artistid",
304 "Audio.Details.Base": {
305 "extends": "Media.Details.Base",
307 "genre": { "type": "string" }
310 "Audio.Details.Media": {
311 "extends": "Audio.Details.Base",
313 "title": { "type": "string" },
314 "artist": { "type": "string" },
315 "year": { "type": "integer" },
316 "rating": { "type": "integer" },
317 "musicbrainzalbumid": { "type": "string" },
318 "musicbrainzalbumartistid": { "type": "string" }
321 "Audio.Details.Artist": {
322 "extends": "Audio.Details.Base",
324 "artistid": { "$ref": "Library.Id", "required": true },
325 "artist": { "type": "string", "required": true },
326 "instrument": { "type": "string" },
327 "style": { "type": "string" },
328 "mood": { "type": "string" },
329 "born": { "type": "string" },
330 "formed": { "type": "string" },
331 "description": { "type": "string" },
332 "died": { "type": "string" },
333 "disbanded": { "type": "string" },
334 "yearsactive": { "type": "string" },
335 "musicbrainzartistid": { "type": "string" }
338 "Audio.Details.Album": {
339 "extends": "Audio.Details.Media",
341 "albumid": { "$ref": "Library.Id", "required": true },
342 "description": { "type": "string" },
343 "theme": { "type": "string" },
344 "mood": { "type": "string" },
345 "style": { "type": "string" },
346 "type": { "type": "string" },
347 "albumlabel": { "type": "string" },
348 "artistid": { "$ref": "Library.Id" }
351 "Audio.Details.Song": {
352 "extends": "Audio.Details.Media",
354 "songid": { "$ref": "Library.Id", "required": true },
355 "file": { "type": "string" },
356 "albumartist": { "type": "string" },
357 "album": { "type": "string" },
358 "track": { "type": "integer" },
359 "duration": { "type": "integer" },
360 "comment": { "type": "string" },
361 "lyrics": { "type": "string" },
362 "playcount": { "type": "integer" },
363 "musicbrainztrackid": { "type": "string" },
364 "musicbrainzartistid": { "type": "string" },
365 "artistid": { "$ref": "Library.Id" },
366 "albumid": { "$ref": "Library.Id" }
369 "Video.Fields.Movie": {
370 "extends": "Item.Fields.Base",
371 "items": { "type": "string",
372 "description": "Requesting the cast, set, showling and/or resume field will result in increased response times",
373 "enum": [ "title", "genre", "year", "rating", "director", "trailer",
374 "tagline", "plot", "plotoutline", "originaltitle", "lastplayed",
375 "playcount", "writer", "studio", "mpaa", "cast", "country",
376 "imdbnumber", "premiered", "productioncode", "runtime", "set",
377 "showlink", "streamdetails", "top250", "votes", "fanart",
378 "thumbnail", "file", "sorttitle", "resume", "setid" ]
381 "Video.Fields.MovieSet": {
382 "extends": "Item.Fields.Base",
383 "items": { "type": "string",
384 "enum": [ "title", "playcount", "fanart", "thumbnail" ]
387 "Video.Fields.TVShow": {
388 "extends": "Item.Fields.Base",
389 "items": { "type": "string",
390 "description": "Requesting the cast field will result in increased response times",
391 "enum": [ "title", "genre", "year", "rating", "plot",
392 "studio", "mpaa", "cast", "playcount", "episode",
393 "imdbnumber", "premiered", "votes", "lastplayed",
394 "fanart", "thumbnail", "file", "originaltitle",
395 "sorttitle", "episodeguide" ]
398 "Video.Fields.Season": {
399 "extends": "Item.Fields.Base",
400 "items": { "type": "string",
401 "enum": [ "season", "showtitle", "playcount", "episode", "fanart", "thumbnail", "tvshowid" ]
404 "Video.Fields.Episode": {
405 "extends": "Item.Fields.Base",
406 "items": { "type": "string",
407 "description": "Requesting the cast and/or resume field will result in increased response times",
408 "enum": [ "title", "plot", "votes", "rating", "writer",
409 "firstaired", "playcount", "runtime", "director",
410 "productioncode", "season", "episode", "originaltitle",
411 "showtitle", "cast", "streamdetails", "lastplayed", "fanart",
412 "thumbnail", "file", "resume", "tvshowid" ]
415 "Video.Fields.MusicVideo": {
416 "extends": "Item.Fields.Base",
417 "items": { "type": "string",
418 "description": "Requesting the resume field will result in increased response times",
419 "enum": [ "title", "playcount", "runtime", "director",
420 "studio", "year", "plot", "album", "artist",
421 "genre", "track", "streamdetails", "lastplayed",
422 "fanart", "thumbnail", "file", "resume" ]
427 "items": { "type": "object",
429 "name": { "type": "string", "required": true },
430 "role": { "type": "string", "required": true },
431 "thumbnail": { "type": "string" }
433 "additionalProperties": false
439 "audio": { "type": "array", "minItems": 1,
440 "items": { "type": "object",
442 "codec": { "type": "string" },
443 "language": { "type": "string" },
444 "channels": { "type": "integer" }
446 "additionalProperties": false
449 "video": { "type": "array", "minItems": 1,
450 "items": { "type": "object",
452 "codec": { "type": "string" },
453 "aspect": { "type": "number" },
454 "width": { "type": "integer" },
455 "height": { "type": "integer" },
456 "duration": { "type": "integer" }
458 "additionalProperties": false
461 "subtitle": { "type": "array", "minItems": 1,
462 "items": { "type": "object",
464 "language": { "type": "string" }
466 "additionalProperties": false
470 "additionalProperties": false
475 "position": { "type": "number", "minimum": 0 },
476 "total": { "type": "number", "minimum": 0 }
478 "additionalProperties": false
480 "Video.Details.Base": {
481 "extends": "Media.Details.Base",
483 "playcount": { "type": "integer" }
486 "Video.Details.Media": {
487 "extends": "Video.Details.Base",
489 "title": { "type": "string" }
492 "Video.Details.Item": {
493 "extends": "Video.Details.Media",
495 "file": { "type": "string" },
496 "plot": { "type": "string" },
497 "lastplayed": { "type": "string" }
500 "Video.Details.File": {
501 "extends": "Video.Details.Item",
503 "runtime": { "type": "string" },
504 "director": { "type": "string" },
505 "streamdetails": { "$ref": "Video.Streams" },
506 "resume": { "$ref": "Video.Resume" }
509 "Video.Details.Movie": {
510 "extends": "Video.Details.File",
512 "movieid": { "$ref": "Library.Id", "required": true },
513 "genre": { "type": "string" },
514 "year": { "type": "integer" },
515 "rating": { "type": "number" },
516 "trailer": { "type": "string" },
517 "tagline": { "type": "string" },
518 "plotoutline": { "type": "string" },
519 "originaltitle": { "type": "string" },
520 "sorttitle": { "type": "string" },
521 "writer": { "type": "string" },
522 "studio": { "type": "string" },
523 "mpaa": { "type": "string" },
524 "cast": { "$ref": "Video.Cast" },
525 "country": { "type": "string" },
526 "imdbnumber": { "type": "string" },
527 "premiered": { "type": "string" },
528 "productioncode": { "type": "string" },
529 "set": { "$ref": "Array.String" },
530 "showlink": { "type": "string" },
531 "top250": { "type": "integer" },
532 "votes": { "type": "string" },
533 "setid": { "$ref": "Array.Integer" }
536 "Video.Details.MovieSet": {
537 "extends": "Video.Details.Media",
539 "setid": { "$ref": "Library.Id", "required": true }
542 "Video.Details.MovieSet.Extended": {
543 "extends": "Video.Details.MovieSet",
545 "movies": { "type": "array",
546 "items": { "$ref": "Video.Details.Movie" }
550 "Video.Details.TVShow": {
551 "extends": "Video.Details.Item",
553 "tvshowid": { "$ref": "Library.Id", "required": true },
554 "genre": { "type": "string" },
555 "year": { "type": "integer" },
556 "rating": { "type": "number" },
557 "originaltitle": { "type": "string" },
558 "sorttitle": { "type": "string" },
559 "studio": { "type": "string" },
560 "mpaa": { "type": "string" },
561 "cast": { "$ref": "Video.Cast" },
562 "episode": { "type": "integer" },
563 "imdbnumber": { "type": "string" },
564 "premiered": { "type": "string" },
565 "votes": { "type": "string" },
566 "episodeguide": { "type": "string" }
569 "Video.Details.Season": {
570 "extends": "Video.Details.Base",
572 "season": { "type": "integer", "required": true },
573 "showtitle": { "type": "string" },
574 "episode": { "type": "integer" },
575 "tvshowid": { "$ref": "Library.Id" }
578 "Video.Details.Episode": {
579 "extends": "Video.Details.File",
581 "episodeid": { "$ref": "Library.Id", "required": true },
582 "votes": { "type": "string" },
583 "rating": { "type": "number" },
584 "writer": { "type": "string" },
585 "firstaired": { "type": "string" },
586 "productioncode": { "type": "string" },
587 "season": { "type": "integer" },
588 "episode": { "type": "integer" },
589 "originaltitle": { "type": "string" },
590 "showtitle": { "type": "string" },
591 "cast": { "$ref": "Video.Cast" },
592 "tvshowid": { "$ref": "Library.Id" }
595 "Video.Details.MusicVideo": {
596 "extends": "Video.Details.File",
598 "musicvideoid": { "$ref": "Library.Id", "required": true },
599 "studio": { "type": "string" },
600 "year": { "type": "integer" },
601 "album": { "type": "string" },
602 "artist": { "type": "string" },
603 "genre": { "type": "string" },
604 "track": { "type": "integer" }
609 "enum": [ "video", "music", "pictures", "files", "programs" ]
619 "start": { "type": "integer", "minimum": 0, "default": 0 },
620 "end": { "type": "integer", "minimum": 0, "default": -1 }
622 "additionalProperties": false
627 "method": { "type": "string", "default": "none",
628 "enum": [ "none", "label", "date", "size", "file", "drivetype", "track", "duration", "title", "artist",
629 "album", "genre", "year", "videorating", "programcount", "playlist", "episode", "videotitle",
630 "sorttitle", "productioncode", "songrating", "mpaarating", "videoruntime", "studio", "fullpath",
631 "lastplayed", "unsorted", "max" ]
633 "order": { "type": "string", "default": "ascending", "enum": [ "ascending", "descending" ] },
634 "ignorearticle": { "type": "boolean", "default": false }
637 "List.LimitsReturned": {
640 "start": { "type": "integer", "minimum": 0, "default": 0 },
641 "end": { "type": "integer", "minimum": 0, "default": -1 },
642 "total": { "type": "integer", "minimum": 0, "required": true }
644 "additionalProperties": false
647 "extends": "Item.Fields.Base",
648 "items": { "type": "string",
649 "enum": [ "title", "artist", "albumartist", "genre", "year", "rating",
650 "album", "track", "duration", "comment", "lyrics", "musicbrainztrackid",
651 "musicbrainzartistid", "musicbrainzalbumid", "musicbrainzalbumartistid",
652 "playcount", "fanart", "director", "trailer", "tagline", "plot",
653 "plotoutline", "originaltitle", "lastplayed", "writer", "studio",
654 "mpaa", "cast", "country", "imdbnumber", "premiered", "productioncode",
655 "runtime", "set", "showlink", "streamdetails", "top250", "votes",
656 "firstaired", "season", "episode", "showtitle", "thumbnail", "file",
657 "resume", "artistid", "albumid", "tvshowid", "setid" ]
661 "extends": [ "Video.Details.File", "Audio.Details.Media" ],
663 "id": { "$ref": "Library.Id" },
664 "type": { "type": "string", "enum": [ "unknown", "movie", "episode", "musicvideo", "song", "picture" ] },
665 "albumartist": { "type": "string" },
666 "album": { "type": "string" },
667 "track": { "type": "integer" },
668 "duration": { "type": "integer" },
669 "comment": { "type": "string" },
670 "lyrics": { "type": "string" },
671 "musicbrainztrackid": { "type": "string" },
672 "musicbrainzartistid": { "type": "string" },
673 "trailer": { "type": "string" },
674 "tagline": { "type": "string" },
675 "plotoutline": { "type": "string" },
676 "originaltitle": { "type": "string" },
677 "writer": { "type": "string" },
678 "studio": { "type": "string" },
679 "mpaa": { "type": "string" },
680 "cast": { "$ref": "Video.Cast" },
681 "country": { "type": "string" },
682 "imdbnumber": { "type": "string" },
683 "premiered": { "type": "string" },
684 "productioncode": { "type": "string" },
685 "set": { "$ref": "Array.String" },
686 "showlink": { "type": "string" },
687 "top250": { "type": "integer" },
688 "votes": { "type": "string" },
689 "firstaired": { "type": "string" },
690 "season": { "type": "integer" },
691 "episode": { "type": "integer" },
692 "showtitle": { "type": "string" },
693 "artistid": { "$ref": "Library.Id" },
694 "albumid": { "$ref": "Library.Id" },
695 "setid": { "$ref": "Array.Integer" },
696 "tvshowid": { "$ref": "Library.Id" }
700 "extends": "List.Item.All",
702 "file": { "type": "string", "required": true },
703 "filetype": { "type": "string", "enum": [ "file", "directory" ], "required": true }
706 "List.Items.Sources": {
709 "extends": "Item.Details.Base",
711 "file": { "type": "string", "required": true }
715 "System.Property.Name": {
717 "enum": [ "canshutdown", "cansuspend", "canhibernate", "canreboot" ]
719 "System.Property.Value": {
722 "canshutdown": { "type": "boolean" },
723 "cansuspend": { "type": "boolean" },
724 "canhibernate": { "type": "boolean" },
725 "canreboot": { "type": "boolean" }
728 "Application.Property.Name": {
730 "enum": [ "volume", "muted", "name", "version" ]
732 "Application.Property.Value": {
735 "volume": { "type": "integer" },
736 "muted": { "type": "boolean" },
737 "name": { "type": "string", "minLength": 1 },
738 "version": { "type": "object",
740 "major": { "type": "integer", "minimum": 0, "required": true },
741 "minor": { "type": "integer", "minimum": 0, "required": true },
742 "revision": { "type": [ "string", "integer" ] },
743 "tag": { "type": "string", "enum": [ "prealpha", "alpha", "beta", "releasecandidate", "stable" ], "required": true }