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
38 "enum": [ "monday", "tuesday", "wednesday", "thursday",
39 "friday", "saturday", "sunday" ]
41 "Global.IncrementDecrement": {
43 "enum": [ "increment", "decrement" ]
47 { "type": "boolean", "required": true },
48 { "type": "string", "enum": [ "toggle" ], "required": true }
51 "Global.String.NotEmpty": {
55 "Configuration.Notifications": {
58 "Player": { "type": "boolean", "required": true },
59 "Playlist": { "type": "boolean", "required": true },
60 "GUI": { "type": "boolean", "required": true },
61 "System": { "type": "boolean", "required": true },
62 "VideoLibrary": { "type": "boolean", "required": true },
63 "AudioLibrary": { "type": "boolean", "required": true },
64 "Application": { "type": "boolean", "required": true },
65 "Input": { "type": "boolean", "required": true },
66 "PVR": { "type": "boolean", "required": true },
67 "Other": { "type": "boolean", "required": true }
69 "additionalProperties": false
72 "type": "object", "required": true,
74 "notifications": { "$ref": "Configuration.Notifications", "required": true }
79 "enum": [ "video", "music", "pictures", "files", "programs" ]
89 "start": { "type": "integer", "minimum": 0, "default": 0, "description": "Index of the first item to return" },
90 "end": { "$ref": "List.Amount", "description": "Index of the last item to return" }
92 "additionalProperties": false
94 "List.LimitsReturned": {
97 "start": { "type": "integer", "minimum": 0, "default": 0 },
98 "end": { "$ref": "List.Amount" },
99 "total": { "type": "integer", "minimum": 0, "required": true }
101 "additionalProperties": false
106 "method": { "type": "string", "default": "none",
107 "enum": [ "none", "label", "date", "size", "file", "path", "drivetype", "title", "track", "time", "artist",
108 "album", "albumtype", "genre", "country", "year", "rating", "votes", "top250", "programcount",
109 "playlist", "episode", "season", "totalepisodes", "watchedepisodes", "tvshowstatus", "tvshowtitle",
110 "sorttitle", "productioncode", "mpaa", "studio", "dateadded", "lastplayed", "playcount", "listeners",
111 "bitrate", "random" ]
113 "order": { "type": "string", "default": "ascending", "enum": [ "ascending", "descending" ] },
114 "ignorearticle": { "type": "boolean", "default": false }
122 "PVR.Channel.Type": {
124 "enum": [ "tv", "radio" ]
134 "enum": [ "unknown", "video", "audio", "picture", "mixed" ]
136 "Playlist.Property.Name": {
138 "enum": [ "type", "size" ]
140 "Playlist.Property.Value": {
143 "type": { "$ref": "Playlist.Type" },
144 "size": { "type": "integer", "minimum": 0 }
147 "Playlist.Position": {
154 { "type": "object", "properties": { "file": { "type": "string", "description": "Path to a file (not a directory) to be added to the playlist", "required": true } }, "additionalProperties": false },
155 { "type": "object", "properties": { "directory": { "type": "string", "required": true }, "recursive": { "type": "boolean", "default": false }, "media": { "$ref": "Files.Media", "default": "files" } }, "additionalProperties": false },
156 { "type": "object", "properties": { "movieid": { "$ref": "Library.Id", "required": true } }, "additionalProperties": false },
157 { "type": "object", "properties": { "episodeid": { "$ref": "Library.Id", "required": true } }, "additionalProperties": false },
158 { "type": "object", "properties": { "musicvideoid": { "$ref": "Library.Id", "required": true } }, "additionalProperties": false },
159 { "type": "object", "properties": { "artistid": { "$ref": "Library.Id", "required": true } }, "additionalProperties": false },
160 { "type": "object", "properties": { "albumid": { "$ref": "Library.Id", "required": true } }, "additionalProperties": false },
161 { "type": "object", "properties": { "songid": { "$ref": "Library.Id", "required": true } }, "additionalProperties": false },
162 { "type": "object", "properties": { "genreid": { "$ref": "Library.Id", "required": true, "description": "Identification of a genre from the AudioLibrary" } }, "additionalProperties": false }
173 "enum": [ "video", "audio", "picture" ]
175 "Player.Position.Percentage": {
180 "Player.Position.Time": {
182 "additionalProperties": false,
184 "hours": { "type": "integer", "minimum": 0, "maximum": 23, "default": 0 },
185 "minutes": { "type": "integer", "minimum": 0, "maximum": 59, "default": 0 },
186 "seconds": { "type": "integer", "minimum": 0, "maximum": 59, "default": 0 },
187 "milliseconds": { "type": "integer", "minimum": 0, "maximum": 999, "default": 0 }
194 "speed": { "type": "integer" }
199 "enum": [ "off", "one", "all" ]
201 "Player.Audio.Stream": {
204 "index": { "type": "integer", "minimum": 0, "required": true },
205 "name": { "type": "string", "required": true },
206 "language": { "type": "string", "required": true },
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" },
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 "Media.Artwork.Set": {
374 "thumb": { "type": [ "null", { "$ref": "Global.String.NotEmpty", "required": true } ], "default": "" },
375 "poster": { "type": [ "null", { "$ref": "Global.String.NotEmpty", "required": true } ], "default": "" },
376 "banner": { "type": [ "null", { "$ref": "Global.String.NotEmpty", "required": true } ], "default": "" },
377 "fanart": { "type": [ "null", { "$ref": "Global.String.NotEmpty", "required": true } ], "default": "" }
379 "additionalProperties": { "type": [ "null", { "$ref": "Global.String.NotEmpty", "required": true } ] }
381 "Library.Fields.Genre": {
382 "extends": "Item.Fields.Base",
383 "items": { "type": "string", "enum": [ "title", "thumbnail" ] }
385 "Library.Details.Genre": {
386 "extends": "Item.Details.Base",
388 "genreid": { "$ref": "Library.Id", "required": true },
389 "title": { "type": "string" },
390 "thumbnail": { "type": "string" }
393 "Audio.Fields.Artist": {
394 "extends": "Item.Fields.Base",
395 "items": { "type": "string",
396 "enum": [ "instrument", "style", "mood", "born", "formed",
397 "description", "genre", "died", "disbanded",
398 "yearsactive", "musicbrainzartistid", "fanart",
399 "thumbnail", "compilationartist" ]
402 "Audio.Fields.Album": {
403 "extends": "Item.Fields.Base",
404 "items": { "type": "string",
405 "description": "Requesting the genreid and/or artistid field will result in increased response times",
406 "enum": [ "title", "description", "artist", "genre",
407 "theme", "mood", "style", "type", "albumlabel",
408 "rating", "year", "musicbrainzalbumid",
409 "musicbrainzalbumartistid", "fanart", "thumbnail",
410 "playcount", "genreid", "artistid", "displayartist" ]
413 "Audio.Fields.Song": {
414 "extends": "Item.Fields.Base",
415 "items": { "type": "string",
416 "description": "Requesting the genreid, artistid and/or albumartistid field will result in increased response times",
417 "enum": [ "title", "artist", "albumartist", "genre", "year",
418 "rating", "album", "track", "duration", "comment",
419 "lyrics", "musicbrainztrackid", "musicbrainzartistid",
420 "musicbrainzalbumid", "musicbrainzalbumartistid",
421 "playcount", "fanart", "thumbnail", "file", "albumid",
422 "lastplayed", "disc", "genreid", "artistid", "displayartist",
426 "Audio.Details.Base": {
427 "extends": "Media.Details.Base",
429 "genre": { "$ref": "Array.String" }
432 "Audio.Details.Media": {
433 "extends": "Audio.Details.Base",
435 "title": { "type": "string" },
436 "artist": { "$ref": "Array.String" },
437 "year": { "type": "integer" },
438 "rating": { "type": "integer" },
439 "musicbrainzalbumid": { "type": "string" },
440 "musicbrainzalbumartistid": { "type": "string" },
441 "genreid": { "$ref": "Array.Integer" },
442 "artistid": { "$ref": "Array.Integer" },
443 "displayartist": { "type" : "string" }
446 "Audio.Details.Artist": {
447 "extends": "Audio.Details.Base",
449 "artistid": { "$ref": "Library.Id", "required": true },
450 "artist": { "type": "string", "required": true },
451 "instrument": { "$ref": "Array.String" },
452 "style": { "$ref": "Array.String" },
453 "mood": { "$ref": "Array.String" },
454 "born": { "type": "string" },
455 "formed": { "type": "string" },
456 "description": { "type": "string" },
457 "died": { "type": "string" },
458 "disbanded": { "type": "string" },
459 "yearsactive": { "$ref": "Array.String" },
460 "compilationartist": { "type": "boolean" },
461 "musicbrainzartistid": { "type": "string" }
464 "Audio.Details.Album": {
465 "extends": "Audio.Details.Media",
467 "albumid": { "$ref": "Library.Id", "required": true },
468 "description": { "type": "string" },
469 "theme": { "$ref": "Array.String" },
470 "mood": { "$ref": "Array.String" },
471 "style": { "$ref": "Array.String" },
472 "type": { "type": "string" },
473 "albumlabel": { "type": "string" },
474 "playcount": { "type": "integer" }
477 "Audio.Details.Song": {
478 "extends": "Audio.Details.Media",
480 "songid": { "$ref": "Library.Id", "required": true },
481 "file": { "type": "string" },
482 "albumartist": { "$ref": "Array.String" },
483 "album": { "type": "string" },
484 "track": { "type": "integer" },
485 "duration": { "type": "integer" },
486 "comment": { "type": "string" },
487 "lyrics": { "type": "string" },
488 "playcount": { "type": "integer" },
489 "musicbrainztrackid": { "type": "string" },
490 "musicbrainzartistid": { "type": "string" },
491 "albumid": { "$ref": "Library.Id" },
492 "lastplayed": { "type": "string" },
493 "disc": { "type": "integer" },
494 "albumartistid": { "$ref": "Array.Integer" }
497 "Video.Fields.Movie": {
498 "extends": "Item.Fields.Base",
499 "items": { "type": "string",
500 "description": "Requesting the cast, showlink and/or tag field will result in increased response times",
501 "enum": [ "title", "genre", "year", "rating", "director", "trailer",
502 "tagline", "plot", "plotoutline", "originaltitle", "lastplayed",
503 "playcount", "writer", "studio", "mpaa", "cast", "country",
504 "imdbnumber", "runtime", "set", "showlink", "streamdetails",
505 "top250", "votes", "fanart", "thumbnail", "file", "sorttitle",
506 "resume", "setid", "dateadded", "tag", "art" ]
509 "Video.Fields.MovieSet": {
510 "extends": "Item.Fields.Base",
511 "items": { "type": "string",
512 "enum": [ "title", "playcount", "fanart", "thumbnail", "art" ]
515 "Video.Fields.TVShow": {
516 "extends": "Item.Fields.Base",
517 "items": { "type": "string",
518 "description": "Requesting the cast field will result in increased response times",
519 "enum": [ "title", "genre", "year", "rating", "plot",
520 "studio", "mpaa", "cast", "playcount", "episode",
521 "imdbnumber", "premiered", "votes", "lastplayed",
522 "fanart", "thumbnail", "file", "originaltitle",
523 "sorttitle", "episodeguide", "season", "watchedepisodes",
524 "dateadded", "tag", "lastplayed", "art" ]
527 "Video.Fields.Season": {
528 "extends": "Item.Fields.Base",
529 "items": { "type": "string",
530 "enum": [ "season", "showtitle", "playcount", "episode", "fanart", "thumbnail", "tvshowid",
531 "watchedepisodes", "art" ]
534 "Video.Fields.Episode": {
535 "extends": "Item.Fields.Base",
536 "items": { "type": "string",
537 "description": "Requesting the cast field will result in increased response times",
538 "enum": [ "title", "plot", "votes", "rating", "writer",
539 "firstaired", "playcount", "runtime", "director",
540 "productioncode", "season", "episode", "originaltitle",
541 "showtitle", "cast", "streamdetails", "lastplayed", "fanart",
542 "thumbnail", "file", "resume", "tvshowid", "dateadded",
546 "Video.Fields.MusicVideo": {
547 "extends": "Item.Fields.Base",
548 "items": { "type": "string",
549 "enum": [ "title", "playcount", "runtime", "director",
550 "studio", "year", "plot", "album", "artist",
551 "genre", "track", "streamdetails", "lastplayed",
552 "fanart", "thumbnail", "file", "resume", "dateadded",
558 "items": { "type": "object",
560 "name": { "type": "string", "required": true },
561 "role": { "type": "string", "required": true },
562 "order": { "type": "integer", "required": true },
563 "thumbnail": { "type": "string" }
565 "additionalProperties": false
571 "audio": { "type": "array", "minItems": 1,
572 "items": { "type": "object",
574 "codec": { "type": "string" },
575 "language": { "type": "string" },
576 "channels": { "type": "integer" }
578 "additionalProperties": false
581 "video": { "type": "array", "minItems": 1,
582 "items": { "type": "object",
584 "codec": { "type": "string" },
585 "aspect": { "type": "number" },
586 "width": { "type": "integer" },
587 "height": { "type": "integer" },
588 "duration": { "type": "integer" }
590 "additionalProperties": false
593 "subtitle": { "type": "array", "minItems": 1,
594 "items": { "type": "object",
596 "language": { "type": "string" }
598 "additionalProperties": false
602 "additionalProperties": false
607 "position": { "type": "number", "minimum": 0 },
608 "total": { "type": "number", "minimum": 0 }
610 "additionalProperties": false
612 "Video.Details.Base": {
613 "extends": "Media.Details.Base",
615 "playcount": { "type": "integer" },
616 "art": { "$ref": "Media.Artwork" }
619 "Video.Details.Media": {
620 "extends": "Video.Details.Base",
622 "title": { "type": "string" }
625 "Video.Details.Item": {
626 "extends": "Video.Details.Media",
628 "file": { "type": "string" },
629 "plot": { "type": "string" },
630 "lastplayed": { "type": "string" },
631 "dateadded": { "type": "string" }
634 "Video.Details.File": {
635 "extends": "Video.Details.Item",
637 "runtime": { "type": "integer", "description": "Runtime in seconds" },
638 "director": { "$ref": "Array.String" },
639 "streamdetails": { "$ref": "Video.Streams" },
640 "resume": { "$ref": "Video.Resume" }
643 "Video.Details.Movie": {
644 "extends": "Video.Details.File",
646 "movieid": { "$ref": "Library.Id", "required": true },
647 "genre": { "$ref": "Array.String" },
648 "year": { "type": "integer" },
649 "rating": { "type": "number" },
650 "trailer": { "type": "string" },
651 "tagline": { "type": "string" },
652 "plotoutline": { "type": "string" },
653 "originaltitle": { "type": "string" },
654 "sorttitle": { "type": "string" },
655 "writer": { "$ref": "Array.String" },
656 "studio": { "$ref": "Array.String" },
657 "mpaa": { "type": "string" },
658 "cast": { "$ref": "Video.Cast" },
659 "country": { "$ref": "Array.String" },
660 "imdbnumber": { "type": "string" },
661 "set": { "type": "string" },
662 "showlink": { "$ref": "Array.String" },
663 "top250": { "type": "integer" },
664 "votes": { "type": "string" },
665 "setid": { "$ref": "Library.Id" },
666 "tag": { "$ref": "Array.String" }
669 "Video.Details.MovieSet": {
670 "extends": "Video.Details.Media",
672 "setid": { "$ref": "Library.Id", "required": true }
675 "Video.Details.MovieSet.Extended": {
676 "extends": "Video.Details.MovieSet",
678 "limits": { "$ref": "List.LimitsReturned", "required": true },
679 "movies": { "type": "array",
680 "items": { "$ref": "Video.Details.Movie" }
684 "Video.Details.TVShow": {
685 "extends": "Video.Details.Item",
687 "tvshowid": { "$ref": "Library.Id", "required": true },
688 "genre": { "$ref": "Array.String" },
689 "year": { "type": "integer" },
690 "rating": { "type": "number" },
691 "originaltitle": { "type": "string" },
692 "sorttitle": { "type": "string" },
693 "studio": { "$ref": "Array.String" },
694 "mpaa": { "type": "string" },
695 "cast": { "$ref": "Video.Cast" },
696 "episode": { "type": "integer" },
697 "watchedepisodes": { "type": "integer" },
698 "imdbnumber": { "type": "string" },
699 "premiered": { "type": "string" },
700 "votes": { "type": "string" },
701 "episodeguide": { "type": "string" },
702 "season": { "type": "integer" },
703 "tag": { "$ref": "Array.String" }
706 "Video.Details.Season": {
707 "extends": "Video.Details.Base",
709 "seasonid": { "$ref": "Library.Id", "required": true },
710 "season": { "type": "integer", "required": true },
711 "showtitle": { "type": "string" },
712 "episode": { "type": "integer" },
713 "watchedepisodes": { "type": "integer" },
714 "tvshowid": { "$ref": "Library.Id" }
717 "Video.Details.Episode": {
718 "extends": "Video.Details.File",
720 "episodeid": { "$ref": "Library.Id", "required": true },
721 "votes": { "type": "string" },
722 "rating": { "type": "number" },
723 "writer": { "$ref": "Array.String" },
724 "firstaired": { "type": "string" },
725 "productioncode": { "type": "string" },
726 "season": { "type": "integer" },
727 "episode": { "type": "integer" },
728 "uniqueid": { "type": "object", "additionalProperties": { "type": "string", "minLength": 1 } },
729 "originaltitle": { "type": "string" },
730 "showtitle": { "type": "string" },
731 "cast": { "$ref": "Video.Cast" },
732 "tvshowid": { "$ref": "Library.Id" }
735 "Video.Details.MusicVideo": {
736 "extends": "Video.Details.File",
738 "musicvideoid": { "$ref": "Library.Id", "required": true },
739 "studio": { "$ref": "Array.String" },
740 "year": { "type": "integer" },
741 "album": { "type": "string" },
742 "artist": { "$ref": "Array.String" },
743 "genre": { "$ref": "Array.String" },
744 "track": { "type": "integer" },
745 "tag": { "$ref": "Array.String" }
748 "PVR.Property.Name": {
750 "enum": [ "available", "recording", "scanning" ]
752 "PVR.Property.Value": {
755 "available": { "type": "boolean" },
756 "recording": { "type": "boolean" },
757 "scanning": { "type": "boolean" }
760 "PVR.ChannelGroup.Id": {
762 { "$ref": "Library.Id", "required": true },
763 { "type": "string", "enum": [ "alltv", "allradio" ], "required": true }
766 "PVR.Fields.Channel": {
767 "extends": "Item.Fields.Base",
768 "items": { "type": "string",
769 "enum": [ "thumbnail", "channeltype", "hidden", "locked", "channel", "lastplayed" ]
772 "PVR.Details.Channel": {
773 "extends": "Item.Details.Base",
775 "channelid": { "$ref": "Library.Id", "required": true },
776 "channel": { "type": "string" },
777 "channeltype": { "$ref": "PVR.Channel.Type" },
778 "hidden": { "type": "boolean" },
779 "locked": { "type": "boolean" },
780 "thumbnail": { "type": "string" },
781 "lastplayed": { "type": "string" }
784 "PVR.Details.ChannelGroup": {
785 "extends": "Item.Details.Base",
787 "channelgroupid": { "$ref": "Library.Id", "required": true },
788 "channeltype": { "$ref": "PVR.Channel.Type", "required": true }
791 "PVR.Details.ChannelGroup.Extended": {
792 "extends": "PVR.Details.ChannelGroup",
794 "limits": { "$ref": "List.LimitsReturned", "required": true },
795 "channels": { "type": "array",
796 "items": { "$ref": "PVR.Details.Channel" }
800 "PVR.Fields.Broadcast": {
801 "extends": "Item.Fields.Base",
802 "items": { "type": "string",
803 "enum": [ "title", "plot", "plotoutline", "starttime",
804 "endtime", "runtime", "progress", "progresspercentage",
805 "genre", "episodename", "episodenum", "episodepart",
806 "firstaired", "hastimer", "isactive", "parentalrating",
807 "wasactive", "thumbnail", "rating" ]
810 "PVR.Details.Broadcast": {
811 "extends": "Item.Details.Base",
813 "broadcastid": { "$ref": "Library.Id", "required": true },
814 "title": { "type": "string" },
815 "plot": { "type": "string" },
816 "plotoutline": { "type": "string" },
817 "starttime": { "type": "string" },
818 "endtime": { "type": "string" },
819 "runtime": { "type": "integer" },
820 "progress": { "type": "integer" },
821 "progresspercentage": { "type": "number" },
822 "genre": { "type": "string" },
823 "episodename": { "type": "string" },
824 "episodenum": { "type": "integer" },
825 "episodepart": { "type": "integer" },
826 "firstaired": { "type": "string" },
827 "hastimer": { "type": "boolean" },
828 "isactive": { "type": "boolean" },
829 "parentalrating": { "type": "integer" },
830 "wasactive": { "type": "boolean" },
831 "thumbnail": { "type": "string" },
832 "rating": { "type": "integer" }
837 "enum": [ "unknown", "new", "scheduled", "recording", "completed",
838 "aborted", "cancelled", "conflict_ok", "conflict_notok",
841 "PVR.Fields.Timer": {
842 "extends": "Item.Fields.Base",
843 "items": { "type": "string",
844 "enum": [ "title", "summary", "channelid", "isradio", "repeating",
845 "starttime", "endtime", "runtime", "lifetime", "firstday",
846 "weekdays", "priority", "startmargin", "endmargin", "state",
847 "file", "directory" ]
850 "PVR.Details.Timer": {
851 "extends": "Item.Details.Base",
853 "timerid": { "$ref": "Library.Id", "required": true },
854 "title": { "type": "string" },
855 "summary": { "type": "string" },
856 "channelid": { "$ref": "Library.Id" },
857 "isradio": { "type": "boolean" },
858 "repeating": { "type": "boolean" },
859 "starttime": { "type": "string" },
860 "endtime": { "type": "string" },
861 "runtime": { "type": "integer" },
862 "lifetime": { "type": "integer" },
863 "firstday": { "type": "string" },
864 "weekdays": { "type": "array",
865 "items": { "$ref": "Global.Weekday" },
868 "priority": { "type": "integer" },
869 "startmargin": { "type": "integer" },
870 "endmargin": { "type": "integer" },
871 "state": { "$ref": "PVR.TimerState" },
872 "file": { "type": "string" },
873 "directory": { "type": "string" }
876 "PVR.Fields.Recording": {
877 "extends": "Item.Fields.Base",
878 "items": { "type": "string",
879 "enum": [ "title", "plot", "plotoutline", "genre", "playcount",
880 "resume", "channel", "starttime","endtime", "runtime",
881 "lifetime", "icon", "art", "streamurl", "file",
885 "PVR.Details.Recording": {
886 "extends": "Item.Details.Base",
888 "recordingid": { "$ref": "Library.Id", "required": true },
889 "title": { "type": "string" },
890 "plot": { "type": "string" },
891 "plotoutline": { "type": "string" },
892 "genre": { "type": "string" },
893 "playcount": { "type": "integer" },
894 "resume": { "$ref": "Video.Resume" },
895 "channel": { "type": "string" },
896 "starttime": { "type": "string" },
897 "endtime": { "type": "string" },
898 "runtime": { "type": "integer" },
899 "lifetime": { "type": "integer" },
900 "icon": { "type": "string" },
901 "art": { "$ref": "Media.Artwork" },
902 "streamurl": { "type": "string" },
903 "file": { "type": "string" },
904 "directory": { "type": "string" }
907 "Textures.Details.Size": {
910 "size": { "type": "integer", "description": "Size of the texture (1 == largest)" },
911 "width": { "type": "integer", "description": "Width of texture" },
912 "height": { "type": "integer", "description": "Height of texture" },
913 "usecount": { "type": "integer", "description": "Number of uses" },
914 "lastused": { "type": "string", "description": "Date of last use" }
917 "Textures.Fields.Texture": {
918 "extends": "Item.Fields.Base",
919 "items": { "type": "string",
920 "enum": [ "url", "cachedurl", "lasthashcheck", "imagehash", "sizes" ]
923 "Textures.Details.Texture": {
926 "textureid": { "$ref": "Library.Id", "required": "true" },
927 "url": { "type": "string", "description": "Original source URL" },
928 "cachedurl": { "type": "string", "description": "Cached URL on disk" },
929 "lasthashcheck": { "type": "string", "description": "Last time source was checked for changes" },
930 "imagehash": { "type": "string", "description": "Hash of image" },
931 "sizes": { "type": "array", "items": { "$ref": "Textures.Details.Size" } }
934 "Profiles.Password": {
937 "value": { "type": "string", "required": true, "description": "Password" },
938 "encryption": { "type": "string", "description": "Password Encryption", "default": "md5", "enum": [ "none", "md5" ] }
941 "Profiles.Fields.Profile": {
942 "extends": "Item.Fields.Base",
943 "items": { "type": "string", "enum": [ "thumbnail", "lockmode" ] }
945 "Profiles.Details.Profile": {
946 "extends": "Item.Details.Base",
948 "thumbnail": { "type": "string" },
949 "lockmode": { "type": "integer" }
952 "List.Filter.Rule": {
955 "operator": { "$ref": "List.Filter.Operators", "required": true },
958 { "type": "string", "required": true },
959 { "type": "array", "items": { "type": "string" }, "required": true }
964 "List.Filter.Rule.Movies": {
965 "extends": "List.Filter.Rule",
967 "field": { "$ref": "List.Filter.Fields.Movies", "required": true }
970 "List.Filter.Rule.TVShows": {
971 "extends": "List.Filter.Rule",
973 "field": { "$ref": "List.Filter.Fields.TVShows", "required": true }
976 "List.Filter.Rule.Episodes": {
977 "extends": "List.Filter.Rule",
979 "field": { "$ref": "List.Filter.Fields.Episodes", "required": true }
982 "List.Filter.Rule.MusicVideos": {
983 "extends": "List.Filter.Rule",
985 "field": { "$ref": "List.Filter.Fields.MusicVideos", "required": true }
988 "List.Filter.Rule.Artists": {
989 "extends": "List.Filter.Rule",
991 "field": { "$ref": "List.Filter.Fields.Artists", "required": true }
994 "List.Filter.Rule.Albums": {
995 "extends": "List.Filter.Rule",
997 "field": { "$ref": "List.Filter.Fields.Albums", "required": true }
1000 "List.Filter.Rule.Songs": {
1001 "extends": "List.Filter.Rule",
1003 "field": { "$ref": "List.Filter.Fields.Songs", "required": true }
1006 "List.Filter.Rule.Textures": {
1007 "extends": "List.Filter.Rule",
1009 "field": { "$ref": "List.Filter.Fields.Textures", "required": true }
1012 "List.Filter.Movies": {
1016 "and": { "type": "array",
1017 "items": { "$ref": "List.Filter.Movies" },
1018 "minItems": 1, "required": true
1024 "or": { "type": "array",
1025 "items": { "$ref": "List.Filter.Movies" },
1026 "minItems": 1, "required": true
1030 { "$ref": "List.Filter.Rule.Movies" }
1033 "List.Filter.TVShows": {
1037 "and": { "type": "array",
1038 "items": { "$ref": "List.Filter.TVShows" },
1039 "minItems": 1, "required": true
1045 "or": { "type": "array",
1046 "items": { "$ref": "List.Filter.TVShows" },
1047 "minItems": 1, "required": true
1051 { "$ref": "List.Filter.Rule.TVShows" }
1054 "List.Filter.Episodes": {
1058 "and": { "type": "array",
1059 "items": { "$ref": "List.Filter.Episodes" },
1060 "minItems": 1, "required": true
1066 "or": { "type": "array",
1067 "items": { "$ref": "List.Filter.Episodes" },
1068 "minItems": 1, "required": true
1072 { "$ref": "List.Filter.Rule.Episodes" }
1075 "List.Filter.MusicVideos": {
1079 "and": { "type": "array",
1080 "items": { "$ref": "List.Filter.MusicVideos" },
1081 "minItems": 1, "required": true
1087 "or": { "type": "array",
1088 "items": { "$ref": "List.Filter.MusicVideos" },
1089 "minItems": 1, "required": true
1093 { "$ref": "List.Filter.Rule.MusicVideos" }
1096 "List.Filter.Artists": {
1100 "and": { "type": "array",
1101 "items": { "$ref": "List.Filter.Artists" },
1102 "minItems": 1, "required": true
1108 "or": { "type": "array",
1109 "items": { "$ref": "List.Filter.Artists" },
1110 "minItems": 1, "required": true
1114 { "$ref": "List.Filter.Rule.Artists" }
1117 "List.Filter.Albums": {
1121 "and": { "type": "array",
1122 "items": { "$ref": "List.Filter.Albums" },
1123 "minItems": 1, "required": true
1129 "or": { "type": "array",
1130 "items": { "$ref": "List.Filter.Albums" },
1131 "minItems": 1, "required": true
1135 { "$ref": "List.Filter.Rule.Albums" }
1138 "List.Filter.Songs": {
1142 "and": { "type": "array",
1143 "items": { "$ref": "List.Filter.Songs" },
1144 "minItems": 1, "required": true
1150 "or": { "type": "array",
1151 "items": { "$ref": "List.Filter.Songs" },
1152 "minItems": 1, "required": true
1156 { "$ref": "List.Filter.Rule.Songs" }
1159 "List.Filter.Textures": {
1163 "and": { "type": "array",
1164 "items": { "$ref": "List.Filter.Textures" },
1165 "minItems": 1, "required": true
1171 "or": { "type": "array",
1172 "items": { "$ref": "List.Filter.Textures" },
1173 "minItems": 1, "required": true
1177 { "$ref": "List.Filter.Rule.Textures" }
1181 "extends": [ "Video.Details.File", "Audio.Details.Media" ],
1183 "id": { "$ref": "Library.Id" },
1184 "type": { "type": "string", "enum": [ "unknown", "movie", "episode", "musicvideo", "song", "picture", "channel" ] },
1185 "albumartist": { "$ref": "Array.String" },
1186 "album": { "type": "string" },
1187 "track": { "type": "integer" },
1188 "duration": { "type": "integer" },
1189 "comment": { "type": "string" },
1190 "lyrics": { "type": "string" },
1191 "musicbrainztrackid": { "type": "string" },
1192 "musicbrainzartistid": { "type": "string" },
1193 "trailer": { "type": "string" },
1194 "tagline": { "type": "string" },
1195 "plotoutline": { "type": "string" },
1196 "originaltitle": { "type": "string" },
1197 "writer": { "$ref": "Array.String" },
1198 "studio": { "$ref": "Array.String" },
1199 "mpaa": { "type": "string" },
1200 "cast": { "$ref": "Video.Cast" },
1201 "country": { "$ref": "Array.String" },
1202 "imdbnumber": { "type": "string" },
1203 "premiered": { "type": "string" },
1204 "productioncode": { "type": "string" },
1205 "set": { "type": "string" },
1206 "showlink": { "$ref": "Array.String" },
1207 "top250": { "type": "integer" },
1208 "votes": { "type": "string" },
1209 "firstaired": { "type": "string" },
1210 "season": { "type": "integer" },
1211 "episode": { "type": "integer" },
1212 "showtitle": { "type": "string" },
1213 "albumid": { "$ref": "Library.Id" },
1214 "setid": { "$ref": "Library.Id" },
1215 "tvshowid": { "$ref": "Library.Id" },
1216 "watchedepisodes": { "type": "integer" },
1217 "disc": { "type": "integer" },
1218 "tag": { "$ref": "Array.String" },
1219 "albumartistid": { "$ref": "Array.Integer" },
1220 "uniqueid": { "type": "object", "additionalProperties": { "type": "string", "minLength": 1 } },
1221 "episodeguide": { "type": "string" },
1222 "sorttitle": { "type": "string" },
1223 "description": { "type": "string" },
1224 "theme": { "$ref": "Array.String" },
1225 "mood": { "$ref": "Array.String" },
1226 "style": { "$ref": "Array.String" },
1227 "albumlabel": { "type": "string" }
1230 "List.Fields.All": {
1231 "extends": "Item.Fields.Base",
1232 "items": { "type": "string",
1233 "enum": [ "title", "artist", "albumartist", "genre", "year", "rating",
1234 "album", "track", "duration", "comment", "lyrics", "musicbrainztrackid",
1235 "musicbrainzartistid", "musicbrainzalbumid", "musicbrainzalbumartistid",
1236 "playcount", "fanart", "director", "trailer", "tagline", "plot",
1237 "plotoutline", "originaltitle", "lastplayed", "writer", "studio",
1238 "mpaa", "cast", "country", "imdbnumber", "premiered", "productioncode",
1239 "runtime", "set", "showlink", "streamdetails", "top250", "votes",
1240 "firstaired", "season", "episode", "showtitle", "thumbnail", "file",
1241 "resume", "artistid", "albumid", "tvshowid", "setid", "watchedepisodes",
1242 "disc", "tag", "art", "genreid", "displayartist", "albumartistid",
1243 "description", "theme", "mood", "style", "albumlabel", "sorttitle",
1244 "episodeguide", "uniqueid", "dateadded", "channel", "channeltype", "hidden",
1245 "locked", "channelnumber", "starttime", "endtime" ]
1249 "extends": "List.Item.Base",
1251 "channel": { "type": "string" },
1252 "channeltype": { "$ref": "PVR.Channel.Type" },
1253 "hidden": { "type": "boolean" },
1254 "locked": { "type": "boolean" },
1255 "channelnumber": { "type": "integer" },
1256 "starttime": { "type": "string" },
1257 "endtime": { "type": "string" }
1260 "List.Fields.Files": {
1261 "extends": "Item.Fields.Base",
1262 "items": { "type": "string",
1263 "enum": [ "title", "artist", "albumartist", "genre", "year", "rating",
1264 "album", "track", "duration", "comment", "lyrics", "musicbrainztrackid",
1265 "musicbrainzartistid", "musicbrainzalbumid", "musicbrainzalbumartistid",
1266 "playcount", "fanart", "director", "trailer", "tagline", "plot",
1267 "plotoutline", "originaltitle", "lastplayed", "writer", "studio",
1268 "mpaa", "cast", "country", "imdbnumber", "premiered", "productioncode",
1269 "runtime", "set", "showlink", "streamdetails", "top250", "votes",
1270 "firstaired", "season", "episode", "showtitle", "thumbnail", "file",
1271 "resume", "artistid", "albumid", "tvshowid", "setid", "watchedepisodes",
1272 "disc", "tag", "art", "genreid", "displayartist", "albumartistid",
1273 "description", "theme", "mood", "style", "albumlabel", "sorttitle",
1274 "episodeguide", "uniqueid", "dateadded", "size", "lastmodified", "mimetype" ]
1278 "extends": "List.Item.Base",
1280 "file": { "type": "string", "required": true },
1281 "filetype": { "type": "string", "enum": [ "file", "directory" ], "required": true },
1282 "size": { "type": "integer", "description": "Size of the file in bytes" },
1283 "lastmodified": { "type": "string" },
1284 "mimetype": { "type": "string" }
1287 "List.Items.Sources": {
1290 "extends": "Item.Details.Base",
1292 "file": { "type": "string", "required": true }
1298 "enum": [ "unknown", "xbmc.metadata.scraper.albums", "xbmc.metadata.scraper.artists", "xbmc.metadata.scraper.movies",
1299 "xbmc.metadata.scraper.musicvideos", "xbmc.metadata.scraper.tvshows", "xbmc.ui.screensaver",
1300 "xbmc.player.musicviz", "xbmc.python.pluginsource", "xbmc.python.script", "xbmc.python.weather",
1301 "xbmc.python.subtitles", "xbmc.python.lyrics", "xbmc.gui.skin", "xbmc.gui.webinterface",
1302 "xbmc.pvrclient", "xbmc.addon.video", "xbmc.addon.audio", "xbmc.addon.image", "xbmc.addon.executable",
1303 "xbmc.service", "xbmc.subtitle.module" ],
1304 "default": "unknown"
1308 "enum": [ "unknown", "video", "audio", "image", "executable" ],
1309 "default": "unknown"
1312 "extends": "Item.Fields.Base",
1313 "items": { "type": "string",
1314 "enum": [ "name", "version", "summary", "description", "path", "author", "thumbnail", "disclaimer", "fanart",
1315 "dependencies", "broken", "extrainfo", "rating", "enabled" ]
1319 "extends": "Item.Details.Base",
1321 "addonid": { "type": "string", "required": true },
1322 "type": { "$ref": "Addon.Types", "required": true },
1323 "name": { "type": "string" },
1324 "version": { "type": "string" },
1325 "summary": { "type": "string" },
1326 "description": { "type": "string" },
1327 "path": { "type": "string" },
1328 "author": { "type": "string" },
1329 "thumbnail": { "type": "string" },
1330 "disclaimer": { "type": "string" },
1331 "fanart": { "type": "string" },
1332 "dependencies": { "type": "array",
1333 "items": { "type": "object",
1335 "addonid": { "type": "string", "required": true },
1336 "version": { "type": "string", "required": true },
1337 "optional": { "type": "boolean", "required": true }
1341 "broken": { "type": [ "boolean", "string" ] },
1342 "extrainfo": { "type": "array",
1343 "items": { "type": "object",
1345 "key": { "type": "string", "required": true },
1346 "value": { "type": "string", "required": true }
1350 "rating": { "type": "integer" },
1351 "enabled": { "type": "boolean" }
1354 "GUI.Property.Name": {
1356 "enum": [ "currentwindow", "currentcontrol", "skin", "fullscreen", "stereoscopicmode" ]
1358 "GUI.Property.Value": {
1361 "currentwindow": { "type": "object",
1363 "id": { "type": "integer", "required": true },
1364 "label": { "type": "string", "required": true }
1367 "currentcontrol": { "type": "object",
1369 "label": { "type": "string", "required": true }
1372 "skin": { "type": "object",
1374 "id": { "type": "string", "required": true, "minLength": 1 },
1375 "name": { "type": "string" }
1378 "fullscreen": { "type": "boolean" },
1379 "stereoscopicmode": { "$ref": "GUI.Stereoscopy.Mode" }
1382 "GUI.Stereoscopy.Mode": {
1385 "mode": { "type": "string", "required": true, "enum": [ "off", "split_vertical", "split_horizontal", "row_interleaved", "hardware_based", "anaglyph_cyan_red", "anaglyph_green_magenta", "monoscopic" ] },
1386 "label": { "type": "string", "required": true }
1389 "System.Property.Name": {
1391 "enum": [ "canshutdown", "cansuspend", "canhibernate", "canreboot" ]
1393 "System.Property.Value": {
1396 "canshutdown": { "type": "boolean" },
1397 "cansuspend": { "type": "boolean" },
1398 "canhibernate": { "type": "boolean" },
1399 "canreboot": { "type": "boolean" }
1402 "Application.Property.Name": {
1404 "enum": [ "volume", "muted", "name", "version" ]
1406 "Application.Property.Value": {
1409 "volume": { "type": "integer", "minimum": 0, "maximum": 100 },
1410 "muted": { "type": "boolean" },
1411 "name": { "type": "string", "minLength": 1 },
1412 "version": { "type": "object",
1414 "major": { "type": "integer", "minimum": 0, "required": true },
1415 "minor": { "type": "integer", "minimum": 0, "required": true },
1416 "revision": { "type": [ "string", "integer" ] },
1417 "tag": { "type": "string", "enum": [ "prealpha", "alpha", "beta", "releasecandidate", "stable" ], "required": true }
1422 "Favourite.Fields.Favourite": {
1423 "extends": "Item.Fields.Base",
1424 "items": { "type": "string",
1425 "enum": [ "window", "windowparameter", "thumbnail", "path" ]
1430 "enum": [ "media", "window", "script", "unknown" ]
1432 "Favourite.Details.Favourite": {
1435 "title": { "type": "string", "required": true },
1436 "type": { "$ref": "Favourite.Type", "required": true },
1437 "path": { "type": "string" },
1438 "window": { "type": "string" },
1439 "windowparameter": { "type": "string" },
1440 "thumbnail": { "type": "string" }
1442 "additionalProperties": false
1447 "boolean", "integer", "number", "string", "action", "list",
1453 "enum": [ "basic", "standard", "advanced", "expert" ]
1457 { "type": "boolean", "required": true },
1458 { "type": "integer", "required": true },
1459 { "type": "number", "required": true },
1460 { "type": "string", "required": true }
1463 "Setting.Value.List": {
1465 "items": { "$ref": "Setting.Value" }
1467 "Setting.Value.Extended": {
1469 { "type": "boolean", "required": true },
1470 { "type": "integer", "required": true },
1471 { "type": "number", "required": true },
1472 { "type": "string", "required": true },
1473 { "$ref": "Setting.Value.List", "required": true }
1476 "Setting.Details.ControlBase": {
1479 "type": { "type": "string", "required": true },
1480 "format": { "type": "string", "required": true },
1481 "delayed": { "type": "boolean", "required": true }
1484 "Setting.Details.ControlCheckmark": {
1485 "extends": "Setting.Details.ControlBase",
1487 "type": { "type": "string", "required": true, "enum": [ "toggle" ] },
1488 "format": { "type": "string", "required": true, "enum": [ "boolean" ] }
1491 "Setting.Details.ControlSpinner": {
1492 "extends": "Setting.Details.ControlBase",
1494 "type": { "type": "string", "required": true, "enum": [ "spinner" ] },
1495 "formatlabel": { "type": "string" },
1496 "minimumlabel": { "type": "string" }
1499 "Setting.Details.ControlHeading": {
1500 "extends": "Setting.Details.ControlBase",
1502 "heading": { "type": "string" }
1505 "Setting.Details.ControlEdit": {
1506 "extends": "Setting.Details.ControlHeading",
1508 "type": { "type": "string", "required": true, "enum": [ "edit" ] },
1509 "hidden": { "type": "boolean", "required": true },
1510 "verifynewvalue": { "type": "boolean", "required": true }
1513 "Setting.Details.ControlButton": {
1514 "extends": "Setting.Details.ControlHeading",
1516 "type": { "type": "string", "required": true, "enum": [ "button" ] }
1519 "Setting.Details.ControlList": {
1520 "extends": "Setting.Details.ControlHeading",
1522 "type": { "type": "string", "required": true, "enum": [ "list" ] },
1523 "multiselect": { "type": "boolean", "required": true }
1526 "Setting.Details.Control": {
1528 { "$ref": "Setting.Details.ControlCheckmark", "required": true },
1529 { "$ref": "Setting.Details.ControlSpinner", "required": true },
1530 { "$ref": "Setting.Details.ControlEdit", "required": true },
1531 { "$ref": "Setting.Details.ControlButton", "required": true },
1532 { "$ref": "Setting.Details.ControlList", "required": true }
1535 "Setting.Details.Base": {
1538 "id": { "type": "string", "required": true, "minLength": 1 },
1539 "label": { "type": "string", "required": true },
1540 "help": { "type": "string" }
1543 "Setting.Details.SettingBase": {
1544 "extends": "Setting.Details.Base",
1546 "type": { "$ref": "Setting.Type", "required": true },
1547 "enabled": { "type": "boolean", "required": true },
1548 "level": { "type": "integer", "required": true },
1549 "parent": { "type": "string" },
1550 "control": { "$ref": "Setting.Details.Control" }
1552 "additionalProperties": false
1554 "Setting.Details.SettingBool": {
1555 "extends": "Setting.Details.SettingBase",
1557 "value": { "type": "boolean", "required": true },
1558 "default": { "type": "boolean", "required": true }
1560 "additionalProperties": false
1562 "Setting.Details.SettingInt": {
1563 "extends": "Setting.Details.SettingBase",
1565 "value": { "type": "integer", "required": true },
1566 "default": { "type": "integer", "required": true },
1567 "minimum": { "type": "integer" },
1568 "step": { "type": "integer" },
1569 "maximum": { "type": "integer" },
1570 "options": { "type": "array",
1571 "items": { "type": "object",
1573 "label": { "type": "string", "required": true },
1574 "value": { "type": "integer", "required": true }
1579 "additionalProperties": false
1581 "Setting.Details.SettingNumber": {
1582 "extends": "Setting.Details.SettingBase",
1584 "value": { "type": "number", "required": true },
1585 "default": { "type": "number", "required": true },
1586 "minimum": { "type": "number", "required": true },
1587 "step": { "type": "number", "required": true },
1588 "maximum": { "type": "number", "required": true }
1590 "additionalProperties": false
1592 "Setting.Details.SettingString": {
1593 "extends": "Setting.Details.SettingBase",
1595 "value": { "type": "string", "required": true },
1596 "default": { "type": "string", "required": true },
1597 "allowempty": { "type": "boolean", "required": true },
1598 "options": { "type": "array",
1599 "items": { "type": "object",
1601 "label": { "type": "string", "required": true },
1602 "value": { "type": "string", "required": true }
1608 "Setting.Details.SettingAction": {
1609 "extends": "Setting.Details.SettingBase",
1610 "additionalProperties": false
1612 "Setting.Details.SettingList": {
1613 "extends": "Setting.Details.SettingBase",
1615 "value": { "$ref": "Setting.Value.List", "required": true },
1616 "default": { "$ref": "Setting.Value.List", "required": true },
1617 "elementtype": { "$ref": "Setting.Type", "required": true },
1618 "definition": { "$ref": "Setting.Details.Setting", "required": true },
1619 "delimiter": { "type": "string", "required": true },
1620 "minimumItems": { "type": "integer" },
1621 "maximumItems": { "type": "integer" }
1623 "additionalProperties": false
1625 "Setting.Details.SettingPath": {
1626 "extends": "Setting.Details.SettingString",
1628 "writable": { "type": "boolean", "required": true },
1629 "sources": { "type": "array", "items": { "type": "string" } }
1631 "additionalProperties": false
1633 "Setting.Details.SettingAddon": {
1634 "extends": "Setting.Details.SettingString",
1636 "addontype": { "$ref": "Addon.Types", "required": true }
1638 "additionalProperties": false
1640 "Setting.Details.Setting": {
1642 { "$ref": "Setting.Details.SettingBool", "required": true },
1643 { "$ref": "Setting.Details.SettingInt", "required": true },
1644 { "$ref": "Setting.Details.SettingNumber", "required": true },
1645 { "$ref": "Setting.Details.SettingString", "required": true },
1646 { "$ref": "Setting.Details.SettingAction", "required": true },
1647 { "$ref": "Setting.Details.SettingList", "required": true },
1648 { "$ref": "Setting.Details.SettingPath", "required": true },
1649 { "$ref": "Setting.Details.SettingAddon", "required": true }
1652 "Setting.Details.Group": {
1655 "id": { "type": "string", "required": true, "minLength": 1 },
1658 "items": { "$ref": "Setting.Details.Setting" },
1663 "additionalProperties": false
1665 "Setting.Details.Category": {
1666 "extends": "Setting.Details.Base",
1670 "items": { "$ref": "Setting.Details.Group" },
1675 "additionalProperties": false
1677 "Setting.Details.Section": {
1678 "extends": "Setting.Details.Base",
1682 "items": { "$ref": "Setting.Details.Category" },
1687 "additionalProperties": false