PageRenderTime 56ms CodeModel.GetById 24ms RepoModel.GetById 0ms app.codeStats 0ms

/xbmc/interfaces/json-rpc/schema/types.json

http://github.com/xbmc/xbmc
JSON | 2018 lines | 2018 code | 0 blank | 0 comment | 0 complexity | 1b9681b696d79ffe8b4d4c4fc3fcc6e9 MD5 | raw file
Possible License(s): GPL-3.0, CC-BY-SA-3.0, LGPL-2.0, 0BSD, Unlicense, GPL-2.0, AGPL-1.0, BSD-3-Clause, LGPL-2.1, LGPL-3.0

Large files files are truncated, but you can click here to view the full file

  1. {
  2. "Optional.Boolean": {
  3. "type": [ "null", "boolean" ],
  4. "default": null
  5. },
  6. "Optional.String": {
  7. "type": [ "null", "string" ],
  8. "default": null
  9. },
  10. "Optional.Integer": {
  11. "type": [ "null", "integer" ],
  12. "default": null
  13. },
  14. "Optional.Number": {
  15. "type": [ "null", "number" ],
  16. "default": null
  17. },
  18. "Array.String": {
  19. "type": "array",
  20. "items": { "type": "string", "minLength": 1 }
  21. },
  22. "Array.Integer": {
  23. "type": "array",
  24. "items": { "type": "integer" }
  25. },
  26. "Global.Time": {
  27. "type": "object",
  28. "properties": {
  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 }
  33. },
  34. "additionalProperties": false
  35. },
  36. "Global.Weekday": {
  37. "type": "string",
  38. "enum": [ "monday", "tuesday", "wednesday", "thursday",
  39. "friday", "saturday", "sunday" ]
  40. },
  41. "Global.IncrementDecrement": {
  42. "type": "string",
  43. "enum": [ "increment", "decrement" ]
  44. },
  45. "Global.Toggle": {
  46. "type": [
  47. { "type": "boolean", "required": true },
  48. { "type": "string", "enum": [ "toggle" ], "required": true }
  49. ]
  50. },
  51. "Global.String.NotEmpty": {
  52. "type": "string",
  53. "minLength": 1
  54. },
  55. "Configuration.Notifications": {
  56. "type": "object",
  57. "properties": {
  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 }
  68. },
  69. "additionalProperties": false
  70. },
  71. "Configuration": {
  72. "type": "object", "required": true,
  73. "properties": {
  74. "notifications": { "$ref": "Configuration.Notifications", "required": true }
  75. }
  76. },
  77. "Files.Media": {
  78. "type": "string",
  79. "enum": [ "video", "music", "pictures", "files", "programs" ]
  80. },
  81. "List.Amount": {
  82. "type": "integer",
  83. "default": -1,
  84. "minimum": 0
  85. },
  86. "List.Limits": {
  87. "type": "object",
  88. "properties": {
  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" }
  91. },
  92. "additionalProperties": false
  93. },
  94. "List.LimitsReturned": {
  95. "type": "object",
  96. "properties": {
  97. "start": { "type": "integer", "minimum": 0, "default": 0 },
  98. "end": { "$ref": "List.Amount" },
  99. "total": { "type": "integer", "minimum": 0, "required": true }
  100. },
  101. "additionalProperties": false
  102. },
  103. "List.Sort": {
  104. "type": "object",
  105. "properties": {
  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", "userrating", "votes", "top250", "programcount",
  109. "playlist", "episode", "season", "totalepisodes", "watchedepisodes", "tvshowstatus", "tvshowtitle",
  110. "sorttitle", "productioncode", "mpaa", "studio", "dateadded", "lastplayed", "playcount", "listeners",
  111. "bitrate", "random", "totaldiscs", "originaldate", "bpm" ]
  112. },
  113. "order": { "type": "string", "default": "ascending", "enum": [ "ascending", "descending" ] },
  114. "ignorearticle": { "type": "boolean", "default": false },
  115. "useartistsortname": { "type": "boolean", "default": false }
  116. }
  117. },
  118. "Library.Id": {
  119. "type": "integer",
  120. "default": -1,
  121. "minimum": 1
  122. },
  123. "PVR.Channel.Type": {
  124. "type": "string",
  125. "enum": [ "tv", "radio" ]
  126. },
  127. "Playlist.Id": {
  128. "type": "integer",
  129. "minimum": 0,
  130. "maximum": 2,
  131. "default": -1
  132. },
  133. "Playlist.Type": {
  134. "type": "string",
  135. "enum": [ "unknown", "video", "audio", "picture", "mixed" ]
  136. },
  137. "Playlist.Property.Name": {
  138. "type": "string",
  139. "enum": [ "type", "size" ]
  140. },
  141. "Playlist.Property.Value": {
  142. "type": "object",
  143. "properties": {
  144. "type": { "$ref": "Playlist.Type" },
  145. "size": { "type": "integer", "minimum": 0 }
  146. }
  147. },
  148. "Playlist.Position": {
  149. "type": "integer",
  150. "minimum": 0,
  151. "default": -1
  152. },
  153. "Playlist.Item": {
  154. "type": [
  155. { "type": "object", "properties": { "file": { "type": "string", "description": "Path to a file (not a directory) to be added to the playlist", "required": true } }, "additionalProperties": false },
  156. { "type": "object", "properties": { "directory": { "type": "string", "required": true }, "recursive": { "type": "boolean", "default": false }, "media": { "$ref": "Files.Media", "default": "files" } }, "additionalProperties": false },
  157. { "type": "object", "properties": { "movieid": { "$ref": "Library.Id", "required": true } }, "additionalProperties": false },
  158. { "type": "object", "properties": { "episodeid": { "$ref": "Library.Id", "required": true } }, "additionalProperties": false },
  159. { "type": "object", "properties": { "musicvideoid": { "$ref": "Library.Id", "required": true } }, "additionalProperties": false },
  160. { "type": "object", "properties": { "artistid": { "$ref": "Library.Id", "required": true } }, "additionalProperties": false },
  161. { "type": "object", "properties": { "albumid": { "$ref": "Library.Id", "required": true } }, "additionalProperties": false },
  162. { "type": "object", "properties": { "songid": { "$ref": "Library.Id", "required": true } }, "additionalProperties": false },
  163. { "type": "object", "properties": { "genreid": { "$ref": "Library.Id", "required": true, "description": "Identification of a genre from the AudioLibrary" } }, "additionalProperties": false }
  164. ]
  165. },
  166. "Player.Id": {
  167. "type": "integer",
  168. "minimum": 0,
  169. "maximum": 2,
  170. "default": -1
  171. },
  172. "Player.Type": {
  173. "type": "string",
  174. "enum": [ "video", "audio", "picture" ]
  175. },
  176. "Player.Position.Percentage": {
  177. "type": "number",
  178. "minimum": 0.0,
  179. "maximum": 100.0
  180. },
  181. "Player.Position.Time": {
  182. "type": "object",
  183. "additionalProperties": false,
  184. "properties": {
  185. "hours": { "type": "integer", "minimum": 0, "maximum": 23, "default": 0 },
  186. "minutes": { "type": "integer", "minimum": 0, "maximum": 59, "default": 0 },
  187. "seconds": { "type": "integer", "minimum": 0, "maximum": 59, "default": 0 },
  188. "milliseconds": { "type": "integer", "minimum": 0, "maximum": 999, "default": 0 }
  189. }
  190. },
  191. "Player.Speed": {
  192. "type": "object",
  193. "required": true,
  194. "properties": {
  195. "speed": { "type": "integer" }
  196. }
  197. },
  198. "Player.ViewMode": {
  199. "type": "string",
  200. "enum": [ "normal", "zoom", "stretch4x3", "widezoom", "stretch16x9", "original",
  201. "stretch16x9nonlin", "zoom120width", "zoom110width" ]
  202. },
  203. "Player.CustomViewMode": {
  204. "type": "object",
  205. "required": true,
  206. "properties": {
  207. "zoom": { "type": [
  208. { "type": "string", "enum": [ "increase", "decrease" ], "required": true },
  209. { "$ref": "Optional.Number", "minimum":0.5, "maximum": 2.0, "description": "Zoom where 1.0 means 100%", "required": true } ] },
  210. "pixelratio": { "type": [
  211. { "type": "string", "enum": [ "increase", "decrease" ], "required": true },
  212. { "$ref": "Optional.Number", "minimum":0.5, "maximum": 2.0, "description": "Pixel aspect ratio where 1.0 means square pixel", "required": true } ] },
  213. "verticalshift": { "type": [
  214. { "type": "string", "enum": [ "increase", "decrease" ], "required": true },
  215. { "$ref": "Optional.Number", "minimum": -2.0, "maximum": 2.0, "description": "Vertical shift 1.0 means shift to bottom", "required": true } ] },
  216. "nonlinearstretch": { "type": [
  217. { "type": "string", "enum": [ "increase", "decrease" ], "required": true },
  218. { "$ref": "Optional.Boolean", "description": "Flag to enable nonlinear stretch", "required": true } ] }
  219. }
  220. },
  221. "Player.Repeat": {
  222. "type": "string",
  223. "enum": [ "off", "one", "all" ]
  224. },
  225. "Player.Audio.Stream": {
  226. "type": "object",
  227. "properties": {
  228. "index": { "type": "integer", "minimum": 0, "required": true },
  229. "name": { "type": "string", "required": true },
  230. "language": { "type": "string", "required": true },
  231. "codec": { "type": "string", "required": true },
  232. "bitrate": { "type": "integer", "required": true },
  233. "channels": { "type": "integer", "required": true },
  234. "isdefault": { "type": "boolean", "required": true },
  235. "isoriginal": { "type": "boolean", "required": true },
  236. "isimpaired": { "type": "boolean", "required": true },
  237. "samplerate": { "type": "integer", "required": true }
  238. }
  239. },
  240. "Player.Video.Stream": {
  241. "type": "object",
  242. "properties": {
  243. "index": { "type": "integer", "minimum": 0, "required": true },
  244. "name": { "type": "string", "required": true },
  245. "language": { "type": "string", "required": true },
  246. "codec": { "type": "string", "required": true },
  247. "width": { "type": "integer", "required": true },
  248. "height": { "type": "integer", "required": true }
  249. }
  250. },
  251. "Player.Subtitle": {
  252. "type": "object",
  253. "properties": {
  254. "index": { "type": "integer", "minimum": 0, "required": true },
  255. "name": { "type": "string", "required": true },
  256. "language": { "type": "string", "required": true },
  257. "isdefault": { "type": "boolean", "required": true },
  258. "isforced": { "type": "boolean", "required": true },
  259. "isimpaired": { "type": "boolean", "required": true }
  260. }
  261. },
  262. "Player.Property.Name": {
  263. "type": "string",
  264. "enum": [ "type", "partymode", "speed", "time", "percentage",
  265. "totaltime", "playlistid", "position", "repeat", "shuffled",
  266. "canseek", "canchangespeed", "canmove", "canzoom", "canrotate",
  267. "canshuffle", "canrepeat", "currentaudiostream", "audiostreams",
  268. "subtitleenabled", "currentsubtitle", "subtitles", "live",
  269. "currentvideostream", "videostreams" ]
  270. },
  271. "Player.Property.Value": {
  272. "type": "object",
  273. "properties": {
  274. "type": { "$ref": "Player.Type" },
  275. "partymode": { "type": "boolean" },
  276. "speed": { "type": "integer" },
  277. "time": { "$ref": "Global.Time" },
  278. "percentage": { "$ref": "Player.Position.Percentage" },
  279. "totaltime": { "$ref": "Global.Time" },
  280. "playlistid": { "$ref": "Playlist.Id" },
  281. "position": { "$ref": "Playlist.Position" },
  282. "repeat": { "$ref": "Player.Repeat" },
  283. "shuffled": { "type": "boolean" },
  284. "canseek": { "type": "boolean" },
  285. "canchangespeed": { "type": "boolean" },
  286. "canmove": { "type": "boolean" },
  287. "canzoom": { "type": "boolean" },
  288. "canrotate": { "type": "boolean" },
  289. "canshuffle": { "type": "boolean" },
  290. "canrepeat": { "type": "boolean" },
  291. "currentaudiostream": { "$ref": "Player.Audio.Stream" },
  292. "audiostreams": { "type": "array", "items": { "$ref": "Player.Audio.Stream" } },
  293. "currentvideostream": { "$ref": "Player.Video.Stream" },
  294. "videostreams": { "type": "array", "items": { "$ref": "Player.Video.Stream" } },
  295. "subtitleenabled": { "type": "boolean" },
  296. "currentsubtitle": { "$ref": "Player.Subtitle" },
  297. "subtitles": { "type": "array", "items": { "$ref": "Player.Subtitle" } },
  298. "live": { "type": "boolean" }
  299. }
  300. },
  301. "Notifications.Item.Type": {
  302. "type": "string",
  303. "enum": [ "unknown", "movie", "episode", "musicvideo", "song", "picture", "channel" ]
  304. },
  305. "Notifications.Item": {
  306. "type": [
  307. { "type": "object", "description": "An unknown item does not have any additional information.",
  308. "properties": {
  309. "type": { "$ref": "Notifications.Item.Type", "required": true }
  310. }
  311. },
  312. { "type": "object", "description": "An item known to the database has an identification.",
  313. "properties": {
  314. "type": { "$ref": "Notifications.Item.Type", "required": true },
  315. "id": { "$ref": "Library.Id", "required": true }
  316. }
  317. },
  318. { "type": "object", "description": "A movie item has a title and may have a release year.",
  319. "properties": {
  320. "type": { "$ref": "Notifications.Item.Type", "required": true },
  321. "title": { "type": "string", "required": true },
  322. "year": { "type": "integer" }
  323. }
  324. },
  325. { "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.",
  326. "properties": {
  327. "type": { "$ref": "Notifications.Item.Type", "required": true },
  328. "title": { "type": "string", "required": true },
  329. "episode": { "type": "integer" },
  330. "season": { "type": "integer" },
  331. "showtitle": { "type": "string" }
  332. }
  333. },
  334. { "type": "object", "description": "A music video has a title and may have an album and an artist.",
  335. "properties": {
  336. "type": { "$ref": "Notifications.Item.Type", "required": true },
  337. "title": { "type": "string", "required": true },
  338. "album": { "type": "string" },
  339. "artist": { "type": "string" }
  340. }
  341. },
  342. { "type": "object", "description": "A song has a title and may have an album, an artist and a track number.",
  343. "properties": {
  344. "type": { "$ref": "Notifications.Item.Type", "required": true },
  345. "title": { "type": "string", "required": true },
  346. "album": { "type": "string" },
  347. "artist": { "type": "string" },
  348. "track": { "type": "integer" }
  349. }
  350. },
  351. { "type": "object", "description": "A picture has a file path.",
  352. "properties": {
  353. "type": { "$ref": "Notifications.Item.Type", "required": true },
  354. "file": { "type": "string", "required": true }
  355. }
  356. },
  357. { "type": "object", "description": "A PVR channel is either a radio or tv channel and has a title.",
  358. "properties": {
  359. "type": { "$ref": "Notifications.Item.Type", "required": true },
  360. "id": { "$ref": "Library.Id", "required": true },
  361. "title": { "type": "string", "required": true },
  362. "channeltype": { "$ref": "PVR.Channel.Type", "required": true }
  363. }
  364. }
  365. ]
  366. },
  367. "Player.Notifications.Player": {
  368. "type": "object",
  369. "properties": {
  370. "playerid": { "$ref": "Player.Id", "required": true },
  371. "speed": { "type": "integer" }
  372. }
  373. },
  374. "Player.Notifications.Player.Seek": {
  375. "extends": "Player.Notifications.Player",
  376. "properties": {
  377. "time": { "$ref": "Global.Time" },
  378. "seekoffset": { "$ref": "Global.Time" }
  379. }
  380. },
  381. "Player.Notifications.Data": {
  382. "type": "object",
  383. "properties": {
  384. "item": { "$ref": "Notifications.Item", "required": true },
  385. "player": { "$ref": "Player.Notifications.Player", "required": true }
  386. }
  387. },
  388. "Item.Fields.Base": {
  389. "type": "array",
  390. "uniqueItems": true,
  391. "items": { "type": "string" }
  392. },
  393. "Item.Details.Base": {
  394. "type": "object",
  395. "properties": {
  396. "label": { "type": "string", "required": true }
  397. }
  398. },
  399. "Media.Details.Base": {
  400. "extends": "Item.Details.Base",
  401. "properties": {
  402. "fanart": { "type": "string" },
  403. "thumbnail": { "type": "string" }
  404. }
  405. },
  406. "Media.Artwork": {
  407. "type": "object",
  408. "properties": {
  409. "thumb": { "$ref": "Global.String.NotEmpty" },
  410. "poster": { "$ref": "Global.String.NotEmpty" },
  411. "banner": { "$ref": "Global.String.NotEmpty" },
  412. "fanart": { "$ref": "Global.String.NotEmpty" }
  413. },
  414. "additionalProperties": { "$ref": "Global.String.NotEmpty" }
  415. },
  416. "Media.Artwork.Set": {
  417. "type": "object",
  418. "properties": {
  419. "thumb": { "type": [ "null", { "$ref": "Global.String.NotEmpty", "required": true } ], "default": "" },
  420. "poster": { "type": [ "null", { "$ref": "Global.String.NotEmpty", "required": true } ], "default": "" },
  421. "banner": { "type": [ "null", { "$ref": "Global.String.NotEmpty", "required": true } ], "default": "" },
  422. "fanart": { "type": [ "null", { "$ref": "Global.String.NotEmpty", "required": true } ], "default": "" }
  423. },
  424. "additionalProperties": { "type": [ "null", { "$ref": "Global.String.NotEmpty", "required": true } ] }
  425. },
  426. "Video.Rating": {
  427. "type": "object",
  428. "properties": {
  429. "rating": { "type": "number", "required": true },
  430. "votes": { "type": "integer" },
  431. "default": { "type": "boolean" }
  432. }
  433. },
  434. "Video.Ratings": {
  435. "type": "object",
  436. "additionalProperties": { "$ref": "Video.Rating" }
  437. },
  438. "Video.Ratings.Set": {
  439. "type": "object",
  440. "additionalProperties": { "type": [ "null", { "$ref": "Video.Rating", "required": true } ] }
  441. },
  442. "Media.UniqueID": {
  443. "type": "object",
  444. "additionalProperties": { "$ref": "Global.String.NotEmpty" }
  445. },
  446. "Media.UniqueID.Set": {
  447. "type": "object",
  448. "additionalProperties": { "type": [ "null", { "$ref": "Global.String.NotEmpty", "required": true } ] }
  449. },
  450. "Library.Fields.Source": {
  451. "extends": "Item.Fields.Base",
  452. "items": { "type": "string", "enum": [ "file", "paths" ] }
  453. },
  454. "Library.Details.Source": {
  455. "extends": "Item.Details.Base",
  456. "properties": {
  457. "sourceid": { "$ref": "Library.Id", "required": true },
  458. "file": { "type": "string", "description": "The url encoded multipath string combining all paths of the source ", "required": true },
  459. "paths": { "$ref": "Array.String", "description": "The individual paths of the media source" }
  460. }
  461. },
  462. "Library.Fields.Genre": {
  463. "extends": "Item.Fields.Base",
  464. "items": { "type": "string", "enum": [ "title", "thumbnail", "sourceid" ] }
  465. },
  466. "Library.Details.Genre": {
  467. "extends": "Item.Details.Base",
  468. "properties": {
  469. "genreid": { "$ref": "Library.Id", "required": true },
  470. "title": { "type": "string" },
  471. "thumbnail": { "type": "string" },
  472. "sourceid": { "$ref": "Array.Integer", "description": "The ids of sources with songs of the genre" }
  473. }
  474. },
  475. "Library.Fields.Tag": {
  476. "extends": "Item.Fields.Base",
  477. "items": { "type": "string", "enum": [ "title" ] }
  478. },
  479. "Library.Details.Tag": {
  480. "extends": "Item.Details.Base",
  481. "properties": {
  482. "tagid": { "$ref": "Library.Id", "required": true },
  483. "title": { "type": "string" }
  484. }
  485. },
  486. "Audio.Fields.Role": {
  487. "extends": "Item.Fields.Base",
  488. "items": { "type": "string", "enum": [ "title" ] }
  489. },
  490. "Audio.Details.Role": {
  491. "extends": "Item.Details.Base",
  492. "properties": {
  493. "roleid": { "$ref": "Library.Id", "required": true },
  494. "title": { "type": "string" }
  495. }
  496. },
  497. "Audio.Fields.Artist": {
  498. "extends": "Item.Fields.Base",
  499. "items": { "type": "string",
  500. "description": "Requesting the (song)genreid/genre, roleid/role or sourceid fields will result in increased response times",
  501. "enum": [ "instrument", "style", "mood", "born", "formed",
  502. "description", "genre", "died", "disbanded",
  503. "yearsactive", "musicbrainzartistid", "fanart",
  504. "thumbnail", "compilationartist", "dateadded",
  505. "roles", "songgenres", "isalbumartist",
  506. "sortname", "type", "gender", "disambiguation", "art", "sourceid"]
  507. }
  508. },
  509. "Audio.Fields.Album": {
  510. "extends": "Item.Fields.Base",
  511. "items": { "type": "string",
  512. "description": "Requesting the songgenres, artistid and/or sourceid fields will result in increased response times",
  513. "enum": [ "title", "description", "artist", "genre",
  514. "theme", "mood", "style", "type", "albumlabel",
  515. "rating", "votes", "userrating","year", "musicbrainzalbumid",
  516. "musicbrainzalbumartistid", "fanart", "thumbnail",
  517. "playcount", "artistid", "displayartist",
  518. "compilation", "releasetype", "dateadded",
  519. "sortartist", "musicbrainzreleasegroupid", "songgenres", "art",
  520. "lastplayed", "sourceid","isboxset", "totaldiscs",
  521. "releasedate", "originaldate"]
  522. }
  523. },
  524. "Audio.Fields.Song": {
  525. "extends": "Item.Fields.Base",
  526. "items": { "type": "string",
  527. "description": "Requesting the genreid, artistid, albumartistid and/or sourceid fields will result in increased response times",
  528. "enum": [ "title", "artist", "albumartist", "genre", "year",
  529. "rating", "album", "track", "duration", "comment",
  530. "lyrics", "musicbrainztrackid", "musicbrainzartistid",
  531. "musicbrainzalbumid", "musicbrainzalbumartistid",
  532. "playcount", "fanart", "thumbnail", "file", "albumid",
  533. "lastplayed", "disc", "genreid", "artistid", "displayartist",
  534. "albumartistid", "albumreleasetype", "dateadded",
  535. "votes", "userrating", "mood", "contributors",
  536. "displaycomposer", "displayconductor", "displayorchestra", "displaylyricist",
  537. "sortartist", "art", "sourceid", "disctitle", "releasedate", "originaldate",
  538. "bpm", "samplerate", "bitrate", "channels"]
  539. }
  540. },
  541. "Audio.Album.ReleaseType": {
  542. "type": "string",
  543. "enum": [ "album", "single" ],
  544. "default": "album"
  545. },
  546. "Audio.Contributors": {
  547. "type": "array",
  548. "items": { "type": "object",
  549. "description": "The artist and the role they contribute to a song",
  550. "properties": {
  551. "name": { "type": "string", "required": true },
  552. "role": { "type": "string", "required": true },
  553. "roleid": { "$ref": "Library.Id", "required": true },
  554. "artistid": { "$ref": "Library.Id", "required": true }
  555. },
  556. "additionalProperties": false
  557. }
  558. },
  559. "Audio.Artist.Roles": {
  560. "type": "array",
  561. "items": { "type": "object",
  562. "description": "The various roles contributed by an artist to one or more songs",
  563. "properties": {
  564. "roleid": { "$ref": "Library.Id", "required": true },
  565. "role": { "type": "string", "required": true }
  566. },
  567. "additionalProperties": false
  568. }
  569. },
  570. "Audio.Details.Genres": {
  571. "type": "array",
  572. "items": { "type": "object",
  573. "properties": {
  574. "genreid": { "$ref": "Library.Id", "required": true },
  575. "title": { "type": "string" }
  576. }
  577. }
  578. },
  579. "Audio.Details.Base": {
  580. "extends": "Media.Details.Base",
  581. "properties": {
  582. "genre": { "$ref": "Array.String" },
  583. "dateadded": { "type": "string" },
  584. "art": { "$ref": "Media.Artwork" }
  585. }
  586. },
  587. "Audio.Details.Media": {
  588. "extends": "Audio.Details.Base",
  589. "properties": {
  590. "title": { "type": "string" },
  591. "artist": { "$ref": "Array.String" },
  592. "year": { "type": "integer" },
  593. "rating": { "type": "number" },
  594. "musicbrainzalbumartistid": { "$ref": "Array.String" },
  595. "artistid": { "$ref": "Array.Integer" },
  596. "displayartist": { "type" : "string" },
  597. "votes": { "type": "integer" },
  598. "userrating": { "type": "integer" },
  599. "sortartist": { "type" : "string" },
  600. "releasedate": { "type" : "string" },
  601. "originaldate": { "type" : "string" }
  602. }
  603. },
  604. "Audio.Details.Artist": {
  605. "extends": "Audio.Details.Base",
  606. "properties": {
  607. "artistid": { "$ref": "Library.Id", "required": true },
  608. "artist": { "type": "string", "required": true },
  609. "instrument": { "$ref": "Array.String" },
  610. "style": { "$ref": "Array.String" },
  611. "mood": { "$ref": "Array.String" },
  612. "born": { "type": "string" },
  613. "formed": { "type": "string" },
  614. "description": { "type": "string" },
  615. "died": { "type": "string" },
  616. "disbanded": { "type": "string" },
  617. "yearsactive": { "$ref": "Array.String" },
  618. "compilationartist": { "type": "boolean" },
  619. "musicbrainzartistid": { "$ref": "Array.String" },
  620. "roles": {"$ref": "Audio.Artist.Roles"},
  621. "songgenres": {"$ref": "Audio.Details.Genres"},
  622. "isalbumartist": { "type": "boolean" },
  623. "sortname": { "type": "string" },
  624. "type": { "type": "string" },
  625. "gender": { "type": "string" },
  626. "disambiguation": { "type": "string" },
  627. "sourceid": { "$ref": "Array.Integer" }
  628. }
  629. },
  630. "Audio.Details.Album": {
  631. "extends": "Audio.Details.Media",
  632. "properties": {
  633. "albumid": { "$ref": "Library.Id", "required": true },
  634. "description": { "type": "string" },
  635. "theme": { "$ref": "Array.String" },
  636. "mood": { "$ref": "Array.String" },
  637. "style": { "$ref": "Array.String" },
  638. "type": { "type": "string" },
  639. "albumlabel": { "type": "string" },
  640. "playcount": { "type": "integer" },
  641. "compilation": { "type": "boolean" },
  642. "releasetype": { "$ref": "Audio.Album.ReleaseType" },
  643. "musicbrainzreleasegroupid": { "type": "string" },
  644. "musicbrainzalbumid": { "type": "string" },
  645. "songgenres": {"$ref": "Audio.Details.Genres"},
  646. "lastplayed": { "type": "string" },
  647. "sourceid": { "$ref": "Array.Integer" },
  648. "isboxset" : { "type": "boolean" },
  649. "totaldiscs": { "type": "integer" }
  650. }
  651. },
  652. "Audio.Details.Song": {
  653. "extends": "Audio.Details.Media",
  654. "properties": {
  655. "songid": { "$ref": "Library.Id", "required": true },
  656. "file": { "type": "string" },
  657. "albumartist": { "$ref": "Array.String" },
  658. "album": { "type": "string" },
  659. "track": { "type": "integer" },
  660. "duration": { "type": "integer" },
  661. "comment": { "type": "string" },
  662. "lyrics": { "type": "string" },
  663. "playcount": { "type": "integer" },
  664. "musicbrainztrackid": { "type": "string" },
  665. "musicbrainzartistid": { "$ref": "Array.String" },
  666. "albumid": { "$ref": "Library.Id" },
  667. "lastplayed": { "type": "string" },
  668. "disc": { "type": "integer" },
  669. "albumartistid": { "$ref": "Array.Integer" },
  670. "albumreleasetype": { "$ref": "Audio.Album.ReleaseType" },
  671. "mood": { "type": "string"},
  672. "contributors": { "$ref": "Audio.Contributors" },
  673. "displaycomposer": { "type": "string"},
  674. "displayconductor": { "type": "string"},
  675. "displayorchestra": { "type": "string"},
  676. "displaylyricist": { "type": "string"},
  677. "genreid": { "$ref": "Array.Integer"},
  678. "sourceid": { "$ref": "Array.Integer" },
  679. "disctitle": { "type": "string" },
  680. "bpm": { "type": "Integer" },
  681. "samplerate": { "type": "Integer" },
  682. "bitrate": { "type": "Integer"},
  683. "channels": { "type": "Integer"}
  684. }
  685. },
  686. "Audio.Property.Name": {
  687. "type": "string",
  688. "enum": [ "missingartistid", "librarylastupdated" ]
  689. },
  690. "Audio.Property.Value": {
  691. "type": "object",
  692. "properties": {
  693. "missingartistid": { "$ref": "Library.Id" },
  694. "librarylastupdated": { "type": "string" }
  695. }
  696. },
  697. "Video.Fields.Movie": {
  698. "extends": "Item.Fields.Base",
  699. "items": { "type": "string",
  700. "description": "Requesting the cast, ratings, showlink, streamdetails, uniqueid and/or tag field will result in increased response times",
  701. "enum": [ "title", "genre", "year", "rating", "director", "trailer",
  702. "tagline", "plot", "plotoutline", "originaltitle", "lastplayed",
  703. "playcount", "writer", "studio", "mpaa", "cast", "country",
  704. "imdbnumber", "runtime", "set", "showlink", "streamdetails",
  705. "top250", "votes", "fanart", "thumbnail", "file", "sorttitle",
  706. "resume", "setid", "dateadded", "tag", "art", "userrating",
  707. "ratings", "premiered", "uniqueid" ]
  708. }
  709. },
  710. "Video.Fields.MovieSet": {
  711. "extends": "Item.Fields.Base",
  712. "items": { "type": "string",
  713. "enum": [ "title", "playcount", "fanart", "thumbnail", "art", "plot" ]
  714. }
  715. },
  716. "Video.Fields.TVShow": {
  717. "extends": "Item.Fields.Base",
  718. "items": { "type": "string",
  719. "description": "Requesting the cast, ratings, uniqueid and/or tag field will result in increased response times",
  720. "enum": [ "title", "genre", "year", "rating", "plot",
  721. "studio", "mpaa", "cast", "playcount", "episode",
  722. "imdbnumber", "premiered", "votes", "lastplayed",
  723. "fanart", "thumbnail", "file", "originaltitle",
  724. "sorttitle", "episodeguide", "season", "watchedepisodes",
  725. "dateadded", "tag", "art", "userrating", "ratings",
  726. "runtime", "uniqueid" ]
  727. }
  728. },
  729. "Video.Fields.Season": {
  730. "extends": "Item.Fields.Base",
  731. "items": { "type": "string",
  732. "enum": [ "season", "showtitle", "playcount", "episode", "fanart", "thumbnail", "tvshowid",
  733. "watchedepisodes", "art", "userrating", "title" ]
  734. }
  735. },
  736. "Video.Fields.Episode": {
  737. "extends": "Item.Fields.Base",
  738. "items": { "type": "string",
  739. "description": "Requesting the cast, ratings, streamdetails, uniqueid and/or tag field will result in increased response times",
  740. "enum": [ "title", "plot", "votes", "rating", "writer",
  741. "firstaired", "playcount", "runtime", "director",
  742. "productioncode", "season", "episode", "originaltitle",
  743. "showtitle", "cast", "streamdetails", "lastplayed", "fanart",
  744. "thumbnail", "file", "resume", "tvshowid", "dateadded",
  745. "uniqueid", "art", "specialsortseason", "specialsortepisode", "userrating",
  746. "seasonid", "ratings" ]
  747. }
  748. },
  749. "Video.Fields.MusicVideo": {
  750. "extends": "Item.Fields.Base",
  751. "items": { "type": "string",
  752. "description": "Requesting the streamdetails and/or tag field will result in increased response times",
  753. "enum": [ "title", "playcount", "runtime", "director",
  754. "studio", "year", "plot", "album", "artist",
  755. "genre", "track", "streamdetails", "lastplayed",
  756. "fanart", "thumbnail", "file", "resume", "dateadded",
  757. "tag", "art", "rating", "userrating", "premiered" ]
  758. }
  759. },
  760. "Video.Cast": {
  761. "type": "array",
  762. "items": { "type": "object",
  763. "properties": {
  764. "name": { "type": "string", "required": true },
  765. "role": { "type": "string", "required": true },
  766. "order": { "type": "integer", "required": true },
  767. "thumbnail": { "type": "string" }
  768. },
  769. "additionalProperties": false
  770. }
  771. },
  772. "Video.Streams": {
  773. "type": "object",
  774. "properties": {
  775. "audio": { "type": "array", "minItems": 1,
  776. "items": { "type": "object",
  777. "properties": {
  778. "codec": { "type": "string" },
  779. "language": { "type": "string" },
  780. "channels": { "type": "integer" }
  781. },
  782. "additionalProperties": false
  783. }
  784. },
  785. "video": { "type": "array", "minItems": 1,
  786. "items": { "type": "object",
  787. "properties": {
  788. "codec": { "type": "string" },
  789. "aspect": { "type": "number" },
  790. "width": { "type": "integer" },
  791. "height": { "type": "integer" },
  792. "duration": { "type": "integer" }
  793. },
  794. "additionalProperties": false
  795. }
  796. },
  797. "subtitle": { "type": "array", "minItems": 1,
  798. "items": { "type": "object",
  799. "properties": {
  800. "language": { "type": "string" }
  801. },
  802. "additionalProperties": false
  803. }
  804. }
  805. },
  806. "additionalProperties": false
  807. },
  808. "Video.Resume": {
  809. "type": "object",
  810. "properties": {
  811. "position": { "type": "number", "minimum": 0.0 },
  812. "total": { "type": "number", "minimum": 0.0 }
  813. },
  814. "additionalProperties": false
  815. },
  816. "Video.Details.Base": {
  817. "extends": "Media.Details.Base",
  818. "properties": {
  819. "playcount": { "type": "integer" },
  820. "art": { "$ref": "Media.Artwork" }
  821. }
  822. },
  823. "Video.Details.Media": {
  824. "extends": "Video.Details.Base",
  825. "properties": {
  826. "title": { "type": "string" }
  827. }
  828. },
  829. "Video.Details.Item": {
  830. "extends": "Video.Details.Media",
  831. "properties": {
  832. "file": { "type": "string" },
  833. "plot": { "type": "string" },
  834. "lastplayed": { "type": "string" },
  835. "dateadded": { "type": "string" }
  836. }
  837. },
  838. "Video.Details.File": {
  839. "extends": "Video.Details.Item",
  840. "properties": {
  841. "runtime": { "type": "integer", "description": "Runtime in seconds" },
  842. "director": { "$ref": "Array.String" },
  843. "streamdetails": { "$ref": "Video.Streams" },
  844. "resume": { "$ref": "Video.Resume" }
  845. }
  846. },
  847. "Video.Details.Movie": {
  848. "extends": "Video.Details.File",
  849. "properties": {
  850. "movieid": { "$ref": "Library.Id", "required": true },
  851. "genre": { "$ref": "Array.String" },
  852. "year": { "type": "integer" },
  853. "rating": { "type": "number" },
  854. "trailer": { "type": "string" },
  855. "tagline": { "type": "string" },
  856. "plotoutline": { "type": "string" },
  857. "originaltitle": { "type": "string" },
  858. "sorttitle": { "type": "string" },
  859. "writer": { "$ref": "Array.String" },
  860. "studio": { "$ref": "Array.String" },
  861. "mpaa": { "type": "string" },
  862. "cast": { "$ref": "Video.Cast" },
  863. "country": { "$ref": "Array.String" },
  864. "imdbnumber": { "type": "string" },
  865. "set": { "type": "string" },
  866. "showlink": { "$ref": "Array.String" },
  867. "top250": { "type": "integer" },
  868. "votes": { "type": "string" },
  869. "setid": { "$ref": "Library.Id" },
  870. "tag": { "$ref": "Array.String" },
  871. "userrating": { "type": "integer" },
  872. "ratings": { "type": "Video.Ratings" },
  873. "premiered": { "type": "string" },
  874. "uniqueid": { "$ref": "Media.UniqueID" }
  875. }
  876. },
  877. "Video.Details.MovieSet": {
  878. "extends": "Video.Details.Media",
  879. "properties": {
  880. "setid": { "$ref": "Library.Id", "required": true },
  881. "plot": { "type": "string" }
  882. }
  883. },
  884. "Video.Details.MovieSet.Extended": {
  885. "extends": "Video.Details.MovieSet",
  886. "properties": {
  887. "limits": { "$ref": "List.LimitsReturned", "required": true },
  888. "movies": { "type": "array",
  889. "items": { "$ref": "Video.Details.Movie" }
  890. }
  891. }
  892. },
  893. "Video.Details.TVShow": {
  894. "extends": "Video.Details.Item",
  895. "properties": {
  896. "tvshowid": { "$ref": "Library.Id", "required": true },
  897. "genre": { "$ref": "Array.String" },
  898. "year": { "type": "integer" },
  899. "rating": { "type": "number" },
  900. "originaltitle": { "type": "string" },
  901. "sorttitle": { "type": "string" },
  902. "studio": { "$ref": "Array.String" },
  903. "mpaa": { "type": "string" },
  904. "cast": { "$ref": "Video.Cast" },
  905. "episode": { "type": "integer" },
  906. "watchedepisodes": { "type": "integer" },
  907. "imdbnumber": { "type": "string" },
  908. "premiered": { "type": "string" },
  909. "votes": { "type": "string" },
  910. "episodeguide": { "type": "string" },
  911. "season": { "type": "integer" },
  912. "tag": { "$ref": "Array.String" },
  913. "userrating": { "type": "integer" },
  914. "ratings": { "type": "Video.Ratings" },
  915. "runtime": { "type": "integer", "description": "Runtime in seconds" },
  916. "status": { "type": "string", "description": "Returns 'returning series', 'in production', 'planned', 'cancelled' or 'ended'" },
  917. "uniqueid": { "$ref": "Media.UniqueID" }
  918. }
  919. },
  920. "Video.Details.Season": {
  921. "extends": "Video.Details.Base",
  922. "properties": {
  923. "seasonid": { "$ref": "Library.Id", "required": true },
  924. "season": { "type": "integer", "required": true },
  925. "showtitle": { "type": "string" },
  926. "episode": { "type": "integer" },
  927. "watchedepisodes": { "type": "integer" },
  928. "tvshowid": { "$ref": "Library.Id" },
  929. "userrating": { "type": "integer" },
  930. "title": { "type": "string" }
  931. }
  932. },
  933. "Video.Details.Episode": {
  934. "extends": "Video.Details.File",
  935. "properties": {
  936. "episodeid": { "$ref": "Library.Id", "required": true },
  937. "votes": { "type": "string" },
  938. "rating": { "type": "number" },
  939. "writer": { "$ref": "Array.String" },
  940. "firstaired": { "type": "string" },
  941. "productioncode": { "type": "string" },
  942. "season": { "type": "integer" },
  943. "episode": { "type": "integer" },
  944. "uniqueid": { "$ref": "Media.UniqueID" },
  945. "originaltitle": { "type": "string" },
  946. "showtitle": { "type": "string" },
  947. "cast": { "$ref": "Video.Cast" },
  948. "tvshowid": { "$ref": "Library.Id" },
  949. "specialsortseason": { "type": "integer" },
  950. "specialsortepisode": { "type": "integer" },
  951. "userrating": { "type": "integer" },
  952. "seasonid": { "$ref": "Library.Id" },
  953. "ratings": { "type": "Video.Ratings" }
  954. }
  955. },
  956. "Video.Details.MusicVideo": {
  957. "extends": "Video.Details.File",
  958. "properties": {
  959. "musicvideoid": { "$ref": "Library.Id", "required": true },
  960. "studio": { "$ref": "Array.String" },
  961. "year": { "type": "integer" },
  962. "album": { "type": "string" },
  963. "artist": { "$ref": "Array.String" },
  964. "genre": { "$ref": "Array.String" },
  965. "track": { "type": "integer" },
  966. "tag": { "$ref": "Array.String" },
  967. "rating": { "type": "number" },
  968. "userrating": { "type": "integer" },
  969. "premiered": { "type": "string" }
  970. }
  971. },
  972. "PVR.Property.Name": {
  973. "type": "string",
  974. "enum": [ "available", "recording", "scanning" ]
  975. },
  976. "PVR.Property.Value": {
  977. "type": "object",
  978. "properties": {
  979. "available": { "type": "boolean" },
  980. "recording": { "type": "boolean" },
  981. "scanning": { "type": "boolean" }
  982. }
  983. },
  984. "PVR.ChannelGroup.Id": {
  985. "type": [
  986. { "$ref": "Library.Id", "required": true },
  987. { "type": "string", "enum": [ "alltv", "allradio" ], "required": true }
  988. ]
  989. },
  990. "PVR.Fields.Broadcast": {
  991. "extends": "Item.Fields.Base",
  992. "items": { "type": "string",
  993. "enum": [ "title", "plot", "plotoutline", "starttime",
  994. "endtime", "runtime", "progress", "progresspercentage",
  995. "genre", "episodename", "episodenum", "episodepart",
  996. "firstaired", "hastimer", "isactive", "parentalrating",
  997. "wasactive", "thumbnail", "rating", "originaltitle", "cast",
  998. "director", "writer", "year", "imdbnumber", "hastimerrule",
  999. "hasrecording", "recording", "isseries", "isplayable" ]
  1000. }
  1001. },
  1002. "PVR.Details.Broadcast": {
  1003. "extends": "Item.Details.Base",
  1004. "properties": {
  1005. "broadcastid": { "$ref": "Library.Id", "required": true },
  1006. "title": { "type": "string" },
  1007. "plot": { "type": "string" },
  1008. "plotoutline": { "type": "string" },
  1009. "starttime": { "type": "string" },
  1010. "endtime": { "type": "string" },
  1011. "runtime": { "type": "integer" },
  1012. "progress": { "type": "integer" },
  1013. "progresspercentage": { "type": "number" },
  1014. "genre": { "type": "string" },
  1015. "episodename": { "type": "string" },
  1016. "episodenum": { "type": "integer" },
  1017. "episodepart": { "type": "integer" },
  1018. "firstaired": { "type": "string" },
  1019. "hastimer": { "type": "boolean" },
  1020. "isactive": { "type": "boolean" },
  1021. "parentalrating": { "type": "integer" },
  1022. "wasactive": { "type": "boolean" },
  1023. "thumbnail": { "type": "string" },
  1024. "rating": { "type": "integer" },
  1025. "originaltitle": { "type": "string" },
  1026. "cast": { "type": "string" },
  1027. "director": { "type": "string" },
  1028. "writer": { "type": "string" },
  1029. "year": { "type": "integer" },
  1030. "imdbnumber": { "type": "integer" },
  1031. "hastimerrule": { "type": "boolean" },
  1032. "hasrecording": { "type": "boolean" },
  1033. "recording": { "type": "string" },
  1034. "isseries": { "type": "boolean" },
  1035. "isplayable": { "type": "boolean" }
  1036. }
  1037. },
  1038. "PVR.Fields.Channel": {
  1039. "extends": "Item.Fields.Base",
  1040. "items": { "type": "string",
  1041. "enum": [ "thumbnail", "channeltype", "hidden", "locked", "channel", "lastplayed",
  1042. "broadcastnow", "broadcastnext", "uniqueid", "icon", "channelnumber",
  1043. "subchannelnumber", "isrecording", "hasarchive" ]
  1044. }
  1045. },
  1046. "PVR.Details.Channel": {
  1047. "extends": "Item.Details.Base",
  1048. "properties": {
  1049. "channelid": { "$ref": "Library.Id", "required": true },
  1050. "channel": { "type": "string" },
  1051. "channeltype": { "$ref": "PVR.Channel.Type" },
  1052. "hidden": { "type": "boolean" },
  1053. "locked": { "type": "boolean" },
  1054. "thumbnail": { "type": "string" },
  1055. "lastplayed": { "type": "string" },
  1056. "broadcastnow": { "$ref": "PVR.Details.Broadcast" },
  1057. "broadcastnext": { "$ref": "PVR.Details.Broadcast" },
  1058. "uniqueid": { "type": "integer", "required": true },
  1059. "icon": { "type": "string" },
  1060. "channelnumber": { "type": "integer" },
  1061. "subchannelnumber": { "type": "integer" },
  1062. "isrecording": { "type": "boolean" },
  1063. "hasarchive": { "type": "boolean" }
  1064. }
  1065. },
  1066. "PVR.Details.ChannelGroup": {
  1067. "extends": "Item.Details.Base",
  1068. "properties": {
  1069. "channelgroupid": { "$ref": "Library.Id", "required": true },
  1070. "channeltype": { "$ref": "PVR.Channel.Type", "required": true }
  1071. }
  1072. },
  1073. "PVR.Details.ChannelGroup.Extended": {
  1074. "extends": "PVR.Details.ChannelGroup",
  1075. "properties": {
  1076. "limits": { "$ref": "List.LimitsReturned", "required": true },
  1077. "channels": { "type": "array",
  1078. "items": { "$ref": "PVR.Details.Channel" }
  1079. }
  1080. }
  1081. },
  1082. "PVR.TimerState": {
  1083. "type": "string",
  1084. "enum": [ "unknown", "new", "scheduled", "recording", "completed",
  1085. "aborted", "cancelled", "conflict_ok", "conflict_notok",
  1086. "error", "disabled" ]
  1087. },
  1088. "PVR.Fields.Timer": {
  1089. "extends": "Item.Fields.Base",
  1090. "items": { "type": "string",
  1091. "enum": [ "title", "summary", "channelid", "isradio", "istimerrule", "ismanual",
  1092. "starttime", "endtime", "runtime", "lifetime", "firstday",
  1093. "weekdays", "priority", "startmargin", "endmargin", "state",
  1094. "file", "directory", "preventduplicateepisodes", "startanytime",
  1095. "endanytime", "epgsearchstring", "fulltextepgsearch", "recordinggroup",
  1096. "maxrecordings", "epguid", "isreadonly" ]
  1097. }
  1098. },
  1099. "PVR.Details.Timer": {
  1100. "extends": "Item.Details.Base",
  1101. "properties": {
  1102. "timerid": { "$ref": "Library.Id", "required": true },
  1103. "title": { "type": "string" },
  1104. "summary": { "type": "string" },
  1105. "channelid": { "$ref": "Library.Id" },
  1106. "isradio": { "type": "boolean" },
  1107. "istimerrule": { "type": "boolean" },
  1108. "ismanual": { "type": "boolean" },
  1109. "starttime": { "type": "string" },
  1110. "endtime": { "type": "string" },
  1111. "runtime": { "type": "integer" },
  1112. "lifetime": { "type": "integer" },
  1113. "firstday": { "type": "string" },
  1114. "weekdays": { "type": "array",
  1115. "items": { "$ref": "Global.Weekday" },
  1116. "uniqueItems": true
  1117. },
  1118. "priority": { "type": "integer" },
  1119. "startmargin": { "type": "integer" },
  1120. "endmargin": { "type": "integer" },
  1121. "state": { "$ref": "PVR.TimerState" },
  1122. "file": { "type": "string" },
  1123. "directory": { "type": "string" },
  1124. "preventduplicateepisodes": { "type": "integer" },
  1125. "startanytime": { "type": "boolean" },
  1126. "endanytime": { "type": "boolean" },
  1127. "epgsearchstring": { "type": "string" },
  1128. "fulltextepgsearch": { "type": "boolean" },
  1129. "recordinggroup": { "type": "integer" },
  1130. "maxrecordings": { "type": "integer" },
  1131. "epguid": { "type": "integer" },
  1132. "isreadonly": { "type": "boolean" }
  1133. }
  1134. },
  1135. "PVR.Fields.Recording": {
  1136. "extends": "Item.Fields.Base",
  1137. "items": { "type": "string",
  1138. "enum": [ "title", "plot", "plotoutline", "genre", "playcount",
  1139. "resume", "channel", "starttime","endtime", "runtime",
  1140. "lifetime", "icon", "art", "streamurl", "file",
  1141. "directory", "radio", "isdeleted", "epgeventid", "channeluid",
  1142. "season", "episode", "showtitle" ]
  1143. }
  1144. },
  1145. "PVR.Details.Recording": {
  1146. "extends": "Item.Details.Base",
  1147. "properties": {
  1148. "recordingid": { "$ref": "Library.Id", "required": true },
  1149. "title": { "type": "string" },
  1150. "plot": { "type": "string" },
  1151. "plotoutline": { "type": "string" },
  1152. "genre": { "type": "string" },
  1153. "playcount": { "type": "integer" },
  1154. "resume": { "$ref": "Video.Resume" },
  1155. "channel": { "type": "string" },
  1156. "starttime": { "type": "string" },
  1157. "endtime": { "type": "string" },
  1158. "runtime": { "type": "integer" },
  1159. "lifetime": { "type": "integer" },
  1160. "icon": { "type": "string" },
  1161. "art": { "$ref": "Media.Artwork" },
  1162. "streamurl": { "type": "string" },
  1163. "file": { "type": "string" },
  1164. "directory": { "type": "string" },
  1165. "radio": { "type": "boolean" },
  1166. "isdeleted": { "type": "boolean" },
  1167. "epgeventid": { "type": "integer" },
  1168. "channeluid": { "type": "integer" },
  1169. "season": { "type": "integer" },
  1170. "episode": { "type": "integer" },
  1171. "showtitle": { "type": "string" }
  1172. }
  1173. },
  1174. "Textures.Details.Size": {
  1175. "type": "object",
  1176. "properties": {
  1177. "size": { "type": "integer", "description": "Size of the texture (1 == largest)" },
  1178. "width": { "type": "integer", "description": "Width of texture" },
  1179. "height": { "type": "integer", "description": "Height of texture" },
  1180. "usecount": { "type": "integer", "description": "Number of uses" },
  1181. "lastused": { "type": "string", "description": "Date of last use" }
  1182. }
  1183. },
  1184. "Textures.Fields.Texture": {
  1185. "extends": "Item.Fields.Base",
  1186. "items": { "type": "string",
  1187. "enum": [ "url", "cachedurl", "lasthashcheck", "imagehash", "sizes" ]
  1188. }
  1189. },
  1190. "Textures.Details.Texture": {
  1191. "type": "object",
  1192. "properties": {
  1193. "textureid": { "$ref": "Library.Id", "required": "true" },
  1194. "url": { "type": "string", "description": "Original source URL" },
  1195. "cachedurl": { "type": "string", "description": "Cached URL on disk" },
  1196. "lasthashcheck": { "type": "string", "description": "Last time source was checked for changes" },
  1197. "imagehash": { "type": "string", "description": "Hash of image" },
  1198. "sizes": { "type": "array", "items": { "$ref": "Textures.Details.Size" } }
  1199. }
  1200. },
  1201. "Profiles.Password": {
  1202. "type": "object",
  1203. "properties": {
  1204. "value": { "type": "string", "required": true, "description": "Password" },
  1205. "encryption": { "type": "string", "description": "Password Encryption", "default": "md5", "enum": [ "none", "md5" ] }
  1206. }
  1207. },
  1208. "Profiles.Fields.Profile": {
  1209. "extends": "Item.Fields.Base",
  1210. "items": { "type": "string", "enum": [ "thumbnail", "lockmode" ] }
  1211. },
  1212. "Profiles.Details.Profile": {
  1213. "extends": "Item.Details.Base",
  1214. "properties": {
  1215. "thumbnail": { "type": "string" },
  1216. "lockmode": { "type": "integer" }
  1217. }
  1218. },
  1219. "List.Filter.Rule": {
  1220. "type": "object",
  1221. "properties": {
  1222. "operator": { "$ref": "List.Filter.Operators", "required": true },
  1223. "value": {
  1224. "type": [
  1225. { "type": "string", "required": true },
  1226. { "type": "array", "items": { "type": "string" }, "required": true }
  1227. ], "required": true
  1228. }
  1229. }
  1230. },
  1231. "List.Filter.Rule.Movies": {
  1232. "extends": "List.Filter.Rule",
  1233. "properties": {
  1234. "field": { "$ref": "List.Filter.Fields.Movies", "required": true }
  1235. }
  1236. },
  1237. "List.Filter.Rule.TVShows": {
  1238. "extends": "List.Filter.Rule",
  1239. "properties": {
  1240. "field": { "$ref": "List.Filter.Fields.TVShows", "required": true }
  1241. }
  1242. },
  1243. "List.Filter.Rule.Episodes": {
  1244. "extends": "List.Filter.Rule",
  1245. "properties": {
  1246. "field": { "$ref": "List.Filter.Fields.Episodes", "required": true }
  1247. }
  1248. },
  1249. "List.Filter.Rule.MusicVideos": {
  1250. "extends": "List.Filter.Rule",
  1251. "properties": {
  1252. "field": { "$ref": "List.Filter.Fields.MusicVideos", "required": true }
  1253. }
  1254. },
  1255. "List.Filter.Rule.Artists": {
  1256. "extends": "List.Filter.Rule",
  1257. "properties": {
  1258. "field": { "$ref": "List.Filter.Fields.Artists", "required": true }
  1259. }
  1260. },
  1261. "List.Filter.Rule.Albums": {
  1262. "extends": "List.Filter.Rule",
  1263. "properties": {
  1264. "field": { "$ref": "List.Filter.Fields.Albums", "required": true }
  1265. }
  1266. },
  1267. "List.Filter.Rule.Songs": {
  1268. "extends": "List.Filter.Rule",
  1269. "properties": {
  1270. "field": { "$ref": "List.Filter.Fields.Songs", "required": true }
  1271. }
  1272. },
  1273. "List.Filter.Rule.Textures": {
  1274. "extends": "List.Filter.Rule",
  1275. "properties": {
  1276. "field": { "$ref": "List.Filter.Fields.Textures", "required": true }
  1277. }
  1278. },
  1279. "List.Filter.Movies": {
  1280. "type": [
  1281. { "type": "object",
  1282. "properties": {
  1283. "and": { "type": "array",
  1284. "items": { "$ref": "List.Filter.Movies" },
  1285. "minItems": 1, "required": true
  1286. }
  1287. }
  1288. },
  1289. { "type": "object",
  1290. "properties": {
  1291. "or": { "type": "array",
  1292. "items": { "$ref": "List.Filter.Movies" },
  1293. "minItems": 1, "required": true
  1294. }
  1295. }
  1296. },
  1297. { "$ref": "List.Filter.Rule.Movies" }
  1298. ]
  1299. },
  1300. "List.Filter.TVShows": {
  1301. "type": [
  1302. { "type": "object",
  1303. "properties": {
  1304. "and": { "type": "array",
  1305. "items": { "$ref": "List.Filter.TVShows" },
  1306. "minItems": 1, "required": true
  1307. }
  1308. }
  1309. },
  1310. { "type": "object",
  1311. "properties": {

Large files files are truncated, but you can click here to view the full file