PageRenderTime 66ms CodeModel.GetById 15ms RepoModel.GetById 0ms app.codeStats 0ms

/xbmc/interfaces/json-rpc/ServiceDescription.h

http://github.com/xbmc/xbmc
C Header | 3586 lines | 3563 code | 4 blank | 19 comment | 0 complexity | 4b4099277b5f36bffb9719d4228c6a14 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
  1. #pragma once
  2. /*
  3. * Copyright (C) 2005-2013 Team XBMC
  4. * http://xbmc.org
  5. *
  6. * This Program is free software; you can redistribute it and/or modify
  7. * it under the terms of the GNU General Public License as published by
  8. * the Free Software Foundation; either version 2, or (at your option)
  9. * any later version.
  10. *
  11. * This Program is distributed in the hope that it will be useful,
  12. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  13. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  14. * GNU General Public License for more details.
  15. *
  16. * You should have received a copy of the GNU General Public License
  17. * along with XBMC; see the file COPYING. If not, see
  18. * <http://www.gnu.org/licenses/>.
  19. *
  20. */
  21. namespace JSONRPC
  22. {
  23. const char* const JSONRPC_SERVICE_ID = "http://xbmc.org/jsonrpc/ServiceDescription.json";
  24. const char* const JSONRPC_SERVICE_VERSION = "6.6.2";
  25. const char* const JSONRPC_SERVICE_DESCRIPTION = "JSON-RPC API of XBMC";
  26. const char* const JSONRPC_SERVICE_TYPES[] = {
  27. "\"Optional.Boolean\": {"
  28. "\"type\": [ \"null\", \"boolean\" ],"
  29. "\"default\": null"
  30. "}",
  31. "\"Optional.String\": {"
  32. "\"type\": [ \"null\", \"string\" ],"
  33. "\"default\": null"
  34. "}",
  35. "\"Optional.Integer\": {"
  36. "\"type\": [ \"null\", \"integer\" ],"
  37. "\"default\": null"
  38. "}",
  39. "\"Optional.Number\": {"
  40. "\"type\": [ \"null\", \"number\" ],"
  41. "\"default\": null"
  42. "}",
  43. "\"Array.String\": {"
  44. "\"type\": \"array\","
  45. "\"items\": { \"type\": \"string\", \"minLength\": 1 }"
  46. "}",
  47. "\"Array.Integer\": {"
  48. "\"type\": \"array\","
  49. "\"items\": { \"type\": \"integer\" }"
  50. "}",
  51. "\"Global.Time\": {"
  52. "\"type\": \"object\","
  53. "\"properties\": {"
  54. "\"hours\": { \"type\": \"integer\", \"required\": true, \"minimum\": 0, \"maximum\": 23 },"
  55. "\"minutes\": { \"type\": \"integer\", \"required\": true, \"minimum\": 0, \"maximum\": 59 },"
  56. "\"seconds\": { \"type\": \"integer\", \"required\": true, \"minimum\": 0, \"maximum\": 59 },"
  57. "\"milliseconds\": { \"type\": \"integer\", \"required\": true, \"minimum\": 0, \"maximum\": 999 }"
  58. "},"
  59. "\"additionalProperties\": false"
  60. "}",
  61. "\"Global.IncrementDecrement\": {"
  62. "\"type\": \"string\","
  63. "\"enum\": [ \"increment\", \"decrement\" ]"
  64. "}",
  65. "\"Global.Toggle\": {"
  66. "\"type\": ["
  67. "{ \"type\": \"boolean\", \"required\": true },"
  68. "{ \"type\": \"string\", \"enum\": [ \"toggle\" ], \"required\": true }"
  69. "]"
  70. "}",
  71. "\"Global.String.NotEmpty\": {"
  72. "\"type\": \"string\","
  73. "\"minLength\": 1"
  74. "}",
  75. "\"Configuration.Notifications\": {"
  76. "\"type\": \"object\","
  77. "\"properties\": {"
  78. "\"Player\": { \"type\": \"boolean\", \"required\": true },"
  79. "\"Playlist\": { \"type\": \"boolean\", \"required\": true },"
  80. "\"GUI\": { \"type\": \"boolean\", \"required\": true },"
  81. "\"System\": { \"type\": \"boolean\", \"required\": true },"
  82. "\"VideoLibrary\": { \"type\": \"boolean\", \"required\": true },"
  83. "\"AudioLibrary\": { \"type\": \"boolean\", \"required\": true },"
  84. "\"Application\": { \"type\": \"boolean\", \"required\": true },"
  85. "\"Input\": { \"type\": \"boolean\", \"required\": true },"
  86. "\"PVR\": { \"type\": \"boolean\", \"required\": true },"
  87. "\"Other\": { \"type\": \"boolean\", \"required\": true }"
  88. "},"
  89. "\"additionalProperties\": false"
  90. "}",
  91. "\"Configuration\": {"
  92. "\"type\": \"object\", \"required\": true,"
  93. "\"properties\": {"
  94. "\"notifications\": { \"$ref\": \"Configuration.Notifications\", \"required\": true }"
  95. "}"
  96. "}",
  97. "\"Files.Media\": {"
  98. "\"type\": \"string\","
  99. "\"enum\": [ \"video\", \"music\", \"pictures\", \"files\", \"programs\" ]"
  100. "}",
  101. "\"List.Amount\": {"
  102. "\"type\": \"integer\","
  103. "\"default\": -1,"
  104. "\"minimum\": 0"
  105. "}",
  106. "\"List.Limits\": {"
  107. "\"type\": \"object\","
  108. "\"properties\": {"
  109. "\"start\": { \"type\": \"integer\", \"minimum\": 0, \"default\": 0, \"description\": \"Index of the first item to return\" },"
  110. "\"end\": { \"$ref\": \"List.Amount\", \"description\": \"Index of the last item to return\" }"
  111. "},"
  112. "\"additionalProperties\": false"
  113. "}",
  114. "\"List.LimitsReturned\": {"
  115. "\"type\": \"object\","
  116. "\"properties\": {"
  117. "\"start\": { \"type\": \"integer\", \"minimum\": 0, \"default\": 0 },"
  118. "\"end\": { \"$ref\": \"List.Amount\" },"
  119. "\"total\": { \"type\": \"integer\", \"minimum\": 0, \"required\": true }"
  120. "},"
  121. "\"additionalProperties\": false"
  122. "}",
  123. "\"List.Sort\": {"
  124. "\"type\": \"object\","
  125. "\"properties\": {"
  126. "\"method\": { \"type\": \"string\", \"default\": \"none\","
  127. "\"enum\": [ \"none\", \"label\", \"date\", \"size\", \"file\", \"path\", \"drivetype\", \"title\", \"track\", \"time\", \"artist\","
  128. "\"album\", \"albumtype\", \"genre\", \"country\", \"year\", \"rating\", \"votes\", \"top250\", \"programcount\","
  129. "\"playlist\", \"episode\", \"season\", \"totalepisodes\", \"watchedepisodes\", \"tvshowstatus\", \"tvshowtitle\","
  130. "\"sorttitle\", \"productioncode\", \"mpaa\", \"studio\", \"dateadded\", \"lastplayed\", \"playcount\", \"listeners\","
  131. "\"bitrate\", \"random\" ]"
  132. "},"
  133. "\"order\": { \"type\": \"string\", \"default\": \"ascending\", \"enum\": [ \"ascending\", \"descending\" ] },"
  134. "\"ignorearticle\": { \"type\": \"boolean\", \"default\": false }"
  135. "}"
  136. "}",
  137. "\"Library.Id\": {"
  138. "\"type\": \"integer\","
  139. "\"default\": -1,"
  140. "\"minimum\": 1"
  141. "}",
  142. "\"PVR.Channel.Type\": {"
  143. "\"type\": \"string\","
  144. "\"enum\": [ \"tv\", \"radio\" ]"
  145. "}",
  146. "\"Playlist.Id\": {"
  147. "\"type\": \"integer\","
  148. "\"minimum\": 0,"
  149. "\"maximum\": 2,"
  150. "\"default\": -1"
  151. "}",
  152. "\"Playlist.Type\": {"
  153. "\"type\": \"string\","
  154. "\"enum\": [ \"unknown\", \"video\", \"audio\", \"picture\", \"mixed\" ]"
  155. "}",
  156. "\"Playlist.Property.Name\": {"
  157. "\"type\": \"string\","
  158. "\"enum\": [ \"type\", \"size\" ]"
  159. "}",
  160. "\"Playlist.Property.Value\": {"
  161. "\"type\": \"object\","
  162. "\"properties\": {"
  163. "\"type\": { \"$ref\": \"Playlist.Type\" },"
  164. "\"size\": { \"type\": \"integer\", \"minimum\": 0 }"
  165. "}"
  166. "}",
  167. "\"Playlist.Position\": {"
  168. "\"type\": \"integer\","
  169. "\"minimum\": 0,"
  170. "\"default\": -1"
  171. "}",
  172. "\"Playlist.Item\": {"
  173. "\"type\": ["
  174. "{ \"type\": \"object\", \"properties\": { \"file\": { \"type\": \"string\", \"description\": \"Path to a file (not a directory) to be added to the playlist\", \"required\": true } }, \"additionalProperties\": false },"
  175. "{ \"type\": \"object\", \"properties\": { \"directory\": { \"type\": \"string\", \"required\": true }, \"recursive\": { \"type\": \"boolean\", \"default\": false }, \"media\": { \"$ref\": \"Files.Media\", \"default\": \"files\" } }, \"additionalProperties\": false },"
  176. "{ \"type\": \"object\", \"properties\": { \"movieid\": { \"$ref\": \"Library.Id\", \"required\": true } }, \"additionalProperties\": false },"
  177. "{ \"type\": \"object\", \"properties\": { \"episodeid\": { \"$ref\": \"Library.Id\", \"required\": true } }, \"additionalProperties\": false },"
  178. "{ \"type\": \"object\", \"properties\": { \"musicvideoid\": { \"$ref\": \"Library.Id\", \"required\": true } }, \"additionalProperties\": false },"
  179. "{ \"type\": \"object\", \"properties\": { \"artistid\": { \"$ref\": \"Library.Id\", \"required\": true } }, \"additionalProperties\": false },"
  180. "{ \"type\": \"object\", \"properties\": { \"albumid\": { \"$ref\": \"Library.Id\", \"required\": true } }, \"additionalProperties\": false },"
  181. "{ \"type\": \"object\", \"properties\": { \"songid\": { \"$ref\": \"Library.Id\", \"required\": true } }, \"additionalProperties\": false },"
  182. "{ \"type\": \"object\", \"properties\": { \"genreid\": { \"$ref\": \"Library.Id\", \"required\": true, \"description\": \"Identification of a genre from the AudioLibrary\" } }, \"additionalProperties\": false }"
  183. "]"
  184. "}",
  185. "\"Player.Id\": {"
  186. "\"type\": \"integer\","
  187. "\"minimum\": 0,"
  188. "\"maximum\": 2,"
  189. "\"default\": -1"
  190. "}",
  191. "\"Player.Type\": {"
  192. "\"type\": \"string\","
  193. "\"enum\": [ \"video\", \"audio\", \"picture\" ]"
  194. "}",
  195. "\"Player.Position.Percentage\": {"
  196. "\"type\": \"number\","
  197. "\"minimum\": 0.0,"
  198. "\"maximum\": 100.0"
  199. "}",
  200. "\"Player.Position.Time\": {"
  201. "\"type\": \"object\","
  202. "\"additionalProperties\": false,"
  203. "\"properties\": {"
  204. "\"hours\": { \"type\": \"integer\", \"minimum\": 0, \"maximum\": 23, \"default\": 0 },"
  205. "\"minutes\": { \"type\": \"integer\", \"minimum\": 0, \"maximum\": 59, \"default\": 0 },"
  206. "\"seconds\": { \"type\": \"integer\", \"minimum\": 0, \"maximum\": 59, \"default\": 0 },"
  207. "\"milliseconds\": { \"type\": \"integer\", \"minimum\": 0, \"maximum\": 999, \"default\": 0 }"
  208. "}"
  209. "}",
  210. "\"Player.Speed\": {"
  211. "\"type\": \"object\","
  212. "\"required\": true,"
  213. "\"properties\": {"
  214. "\"speed\": { \"type\": \"integer\" }"
  215. "}"
  216. "}",
  217. "\"Player.Repeat\": {"
  218. "\"type\": \"string\","
  219. "\"enum\": [ \"off\", \"one\", \"all\" ]"
  220. "}",
  221. "\"Player.Audio.Stream\": {"
  222. "\"type\": \"object\","
  223. "\"properties\": {"
  224. "\"index\": { \"type\": \"integer\", \"minimum\": 0, \"required\": true },"
  225. "\"name\": { \"type\": \"string\", \"required\": true },"
  226. "\"language\": { \"type\": \"string\", \"required\": true },"
  227. "\"codec\": { \"type\": \"string\", \"required\": true },"
  228. "\"bitrate\": { \"type\": \"integer\", \"required\": true },"
  229. "\"channels\": { \"type\": \"integer\", \"required\": true }"
  230. "}"
  231. "}",
  232. "\"Player.Subtitle\": {"
  233. "\"type\": \"object\","
  234. "\"properties\": {"
  235. "\"index\": { \"type\": \"integer\", \"minimum\": 0, \"required\": true },"
  236. "\"name\": { \"type\": \"string\", \"required\": true },"
  237. "\"language\": { \"type\": \"string\", \"required\": true }"
  238. "}"
  239. "}",
  240. "\"Player.Property.Name\": {"
  241. "\"type\": \"string\","
  242. "\"enum\": [ \"type\", \"partymode\", \"speed\", \"time\", \"percentage\","
  243. "\"totaltime\", \"playlistid\", \"position\", \"repeat\", \"shuffled\","
  244. "\"canseek\", \"canchangespeed\", \"canmove\", \"canzoom\", \"canrotate\","
  245. "\"canshuffle\", \"canrepeat\", \"currentaudiostream\", \"audiostreams\","
  246. "\"subtitleenabled\", \"currentsubtitle\", \"subtitles\", \"live\" ]"
  247. "}",
  248. "\"Player.Property.Value\": {"
  249. "\"type\": \"object\","
  250. "\"properties\": {"
  251. "\"type\": { \"$ref\": \"Player.Type\" },"
  252. "\"partymode\": { \"type\": \"boolean\" },"
  253. "\"speed\": { \"type\": \"integer\" },"
  254. "\"time\": { \"$ref\": \"Global.Time\" },"
  255. "\"percentage\": { \"$ref\": \"Player.Position.Percentage\" },"
  256. "\"totaltime\": { \"$ref\": \"Global.Time\" },"
  257. "\"playlistid\": { \"$ref\": \"Playlist.Id\" },"
  258. "\"position\": { \"$ref\": \"Playlist.Position\" },"
  259. "\"repeat\": { \"$ref\": \"Player.Repeat\" },"
  260. "\"shuffled\": { \"type\": \"boolean\" },"
  261. "\"canseek\": { \"type\": \"boolean\" },"
  262. "\"canchangespeed\": { \"type\": \"boolean\" },"
  263. "\"canmove\": { \"type\": \"boolean\" },"
  264. "\"canzoom\": { \"type\": \"boolean\" },"
  265. "\"canrotate\": { \"type\": \"boolean\" },"
  266. "\"canshuffle\": { \"type\": \"boolean\" },"
  267. "\"canrepeat\": { \"type\": \"boolean\" },"
  268. "\"currentaudiostream\": { \"$ref\": \"Player.Audio.Stream\" },"
  269. "\"audiostreams\": { \"type\": \"array\", \"items\": { \"$ref\": \"Player.Audio.Stream\" } },"
  270. "\"subtitleenabled\": { \"type\": \"boolean\" },"
  271. "\"currentsubtitle\": { \"$ref\": \"Player.Subtitle\" },"
  272. "\"subtitles\": { \"type\": \"array\", \"items\": { \"$ref\": \"Player.Subtitle\" } },"
  273. "\"live\": { \"type\": \"boolean\" }"
  274. "}"
  275. "}",
  276. "\"Notifications.Item.Type\": {"
  277. "\"type\": \"string\","
  278. "\"enum\": [ \"unknown\", \"movie\", \"episode\", \"musicvideo\", \"song\", \"picture\", \"channel\" ]"
  279. "}",
  280. "\"Notifications.Item\": {"
  281. "\"type\": ["
  282. "{ \"type\": \"object\", \"description\": \"An unknown item does not have any additional information.\","
  283. "\"properties\": {"
  284. "\"type\": { \"$ref\": \"Notifications.Item.Type\", \"required\": true }"
  285. "}"
  286. "},"
  287. "{ \"type\": \"object\", \"description\": \"An item known to the database has an identification.\","
  288. "\"properties\": {"
  289. "\"type\": { \"$ref\": \"Notifications.Item.Type\", \"required\": true },"
  290. "\"id\": { \"$ref\": \"Library.Id\", \"required\": true }"
  291. "}"
  292. "},"
  293. "{ \"type\": \"object\", \"description\": \"A movie item has a title and may have a release year.\","
  294. "\"properties\": {"
  295. "\"type\": { \"$ref\": \"Notifications.Item.Type\", \"required\": true },"
  296. "\"title\": { \"type\": \"string\", \"required\": true },"
  297. "\"year\": { \"type\": \"integer\" }"
  298. "}"
  299. "},"
  300. "{ \"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.\","
  301. "\"properties\": {"
  302. "\"type\": { \"$ref\": \"Notifications.Item.Type\", \"required\": true },"
  303. "\"title\": { \"type\": \"string\", \"required\": true },"
  304. "\"episode\": { \"type\": \"integer\" },"
  305. "\"season\": { \"type\": \"integer\" },"
  306. "\"showtitle\": { \"type\": \"string\" }"
  307. "}"
  308. "},"
  309. "{ \"type\": \"object\", \"description\": \"A music video has a title and may have an album and an artist.\","
  310. "\"properties\": {"
  311. "\"type\": { \"$ref\": \"Notifications.Item.Type\", \"required\": true },"
  312. "\"title\": { \"type\": \"string\", \"required\": true },"
  313. "\"album\": { \"type\": \"string\" },"
  314. "\"artist\": { \"type\": \"string\" }"
  315. "}"
  316. "},"
  317. "{ \"type\": \"object\", \"description\": \"A song has a title and may have an album, an artist and a track number.\","
  318. "\"properties\": {"
  319. "\"type\": { \"$ref\": \"Notifications.Item.Type\", \"required\": true },"
  320. "\"title\": { \"type\": \"string\", \"required\": true },"
  321. "\"album\": { \"type\": \"string\" },"
  322. "\"artist\": { \"type\": \"string\" },"
  323. "\"track\": { \"type\": \"integer\" }"
  324. "}"
  325. "},"
  326. "{ \"type\": \"object\", \"description\": \"A picture has a file path.\","
  327. "\"properties\": {"
  328. "\"type\": { \"$ref\": \"Notifications.Item.Type\", \"required\": true },"
  329. "\"file\": { \"type\": \"string\", \"required\": true }"
  330. "}"
  331. "},"
  332. "{ \"type\": \"object\", \"description\": \"A PVR channel is either a radio or tv channel and has a title.\","
  333. "\"properties\": {"
  334. "\"type\": { \"$ref\": \"Notifications.Item.Type\", \"required\": true },"
  335. "\"id\": { \"$ref\": \"Library.Id\", \"required\": true },"
  336. "\"title\": { \"type\": \"string\", \"required\": true },"
  337. "\"channeltype\": { \"$ref\": \"PVR.Channel.Type\", \"required\": true }"
  338. "}"
  339. "}"
  340. "]"
  341. "}",
  342. "\"Player.Notifications.Player\": {"
  343. "\"type\": \"object\","
  344. "\"properties\": {"
  345. "\"playerid\": { \"$ref\": \"Player.Id\", \"required\": true },"
  346. "\"speed\": { \"type\": \"integer\" }"
  347. "}"
  348. "}",
  349. "\"Player.Notifications.Player.Seek\": {"
  350. "\"extends\": \"Player.Notifications.Player\","
  351. "\"properties\": {"
  352. "\"time\": { \"$ref\": \"Global.Time\" },"
  353. "\"seekoffset\": { \"$ref\": \"Global.Time\" }"
  354. "}"
  355. "}",
  356. "\"Player.Notifications.Data\": {"
  357. "\"type\": \"object\","
  358. "\"properties\": {"
  359. "\"item\": { \"$ref\": \"Notifications.Item\", \"required\": true },"
  360. "\"player\": { \"$ref\": \"Player.Notifications.Player\", \"required\": true }"
  361. "}"
  362. "}",
  363. "\"Item.Fields.Base\": {"
  364. "\"type\": \"array\","
  365. "\"uniqueItems\": true,"
  366. "\"items\": { \"type\": \"string\" }"
  367. "}",
  368. "\"Item.Details.Base\": {"
  369. "\"type\": \"object\","
  370. "\"properties\": {"
  371. "\"label\": { \"type\": \"string\", \"required\": true }"
  372. "}"
  373. "}",
  374. "\"Media.Details.Base\": {"
  375. "\"extends\": \"Item.Details.Base\","
  376. "\"properties\": {"
  377. "\"fanart\": { \"type\": \"string\" },"
  378. "\"thumbnail\": { \"type\": \"string\" }"
  379. "}"
  380. "}",
  381. "\"Media.Artwork\": {"
  382. "\"type\": \"object\","
  383. "\"properties\": {"
  384. "\"thumb\": { \"$ref\": \"Global.String.NotEmpty\" },"
  385. "\"poster\": { \"$ref\": \"Global.String.NotEmpty\" },"
  386. "\"banner\": { \"$ref\": \"Global.String.NotEmpty\" },"
  387. "\"fanart\": { \"$ref\": \"Global.String.NotEmpty\" }"
  388. "},"
  389. "\"additionalProperties\": { \"$ref\": \"Global.String.NotEmpty\" }"
  390. "}",
  391. "\"Library.Fields.Genre\": {"
  392. "\"extends\": \"Item.Fields.Base\","
  393. "\"items\": { \"type\": \"string\", \"enum\": [ \"title\", \"thumbnail\" ] }"
  394. "}",
  395. "\"Library.Details.Genre\": {"
  396. "\"extends\": \"Item.Details.Base\","
  397. "\"properties\": {"
  398. "\"genreid\": { \"$ref\": \"Library.Id\", \"required\": true },"
  399. "\"title\": { \"type\": \"string\" },"
  400. "\"thumbnail\": { \"type\": \"string\" }"
  401. "}"
  402. "}",
  403. "\"Audio.Fields.Artist\": {"
  404. "\"extends\": \"Item.Fields.Base\","
  405. "\"items\": { \"type\": \"string\","
  406. "\"enum\": [ \"instrument\", \"style\", \"mood\", \"born\", \"formed\","
  407. "\"description\", \"genre\", \"died\", \"disbanded\","
  408. "\"yearsactive\", \"musicbrainzartistid\", \"fanart\","
  409. "\"thumbnail\", \"compilationartist\" ]"
  410. "}"
  411. "}",
  412. "\"Audio.Fields.Album\": {"
  413. "\"extends\": \"Item.Fields.Base\","
  414. "\"items\": { \"type\": \"string\","
  415. "\"description\": \"Requesting the genreid and/or artistid field will result in increased response times\","
  416. "\"enum\": [ \"title\", \"description\", \"artist\", \"genre\","
  417. "\"theme\", \"mood\", \"style\", \"type\", \"albumlabel\","
  418. "\"rating\", \"year\", \"musicbrainzalbumid\","
  419. "\"musicbrainzalbumartistid\", \"fanart\", \"thumbnail\","
  420. "\"playcount\", \"genreid\", \"artistid\", \"displayartist\" ]"
  421. "}"
  422. "}",
  423. "\"Audio.Fields.Song\": {"
  424. "\"extends\": \"Item.Fields.Base\","
  425. "\"items\": { \"type\": \"string\","
  426. "\"description\": \"Requesting the genreid, artistid and/or albumartistid field will result in increased response times\","
  427. "\"enum\": [ \"title\", \"artist\", \"albumartist\", \"genre\", \"year\","
  428. "\"rating\", \"album\", \"track\", \"duration\", \"comment\","
  429. "\"lyrics\", \"musicbrainztrackid\", \"musicbrainzartistid\","
  430. "\"musicbrainzalbumid\", \"musicbrainzalbumartistid\","
  431. "\"playcount\", \"fanart\", \"thumbnail\", \"file\", \"albumid\","
  432. "\"lastplayed\", \"disc\", \"genreid\", \"artistid\", \"displayartist\","
  433. "\"albumartistid\" ]"
  434. "}"
  435. "}",
  436. "\"Audio.Details.Base\": {"
  437. "\"extends\": \"Media.Details.Base\","
  438. "\"properties\": {"
  439. "\"genre\": { \"$ref\": \"Array.String\" }"
  440. "}"
  441. "}",
  442. "\"Audio.Details.Media\": {"
  443. "\"extends\": \"Audio.Details.Base\","
  444. "\"properties\": {"
  445. "\"title\": { \"type\": \"string\" },"
  446. "\"artist\": { \"$ref\": \"Array.String\" },"
  447. "\"year\": { \"type\": \"integer\" },"
  448. "\"rating\": { \"type\": \"integer\" },"
  449. "\"musicbrainzalbumid\": { \"type\": \"string\" },"
  450. "\"musicbrainzalbumartistid\": { \"type\": \"string\" },"
  451. "\"genreid\": { \"$ref\": \"Array.Integer\" },"
  452. "\"artistid\": { \"$ref\": \"Array.Integer\" },"
  453. "\"displayartist\": { \"type\" : \"string\" }"
  454. "}"
  455. "}",
  456. "\"Audio.Details.Artist\": {"
  457. "\"extends\": \"Audio.Details.Base\","
  458. "\"properties\": {"
  459. "\"artistid\": { \"$ref\": \"Library.Id\", \"required\": true },"
  460. "\"artist\": { \"type\": \"string\", \"required\": true },"
  461. "\"instrument\": { \"$ref\": \"Array.String\" },"
  462. "\"style\": { \"$ref\": \"Array.String\" },"
  463. "\"mood\": { \"$ref\": \"Array.String\" },"
  464. "\"born\": { \"type\": \"string\" },"
  465. "\"formed\": { \"type\": \"string\" },"
  466. "\"description\": { \"type\": \"string\" },"
  467. "\"died\": { \"type\": \"string\" },"
  468. "\"disbanded\": { \"type\": \"string\" },"
  469. "\"yearsactive\": { \"$ref\": \"Array.String\" },"
  470. "\"compilationartist\": { \"type\": \"boolean\" },"
  471. "\"musicbrainzartistid\": { \"type\": \"string\" }"
  472. "}"
  473. "}",
  474. "\"Audio.Details.Album\": {"
  475. "\"extends\": \"Audio.Details.Media\","
  476. "\"properties\": {"
  477. "\"albumid\": { \"$ref\": \"Library.Id\", \"required\": true },"
  478. "\"description\": { \"type\": \"string\" },"
  479. "\"theme\": { \"$ref\": \"Array.String\" },"
  480. "\"mood\": { \"$ref\": \"Array.String\" },"
  481. "\"style\": { \"$ref\": \"Array.String\" },"
  482. "\"type\": { \"type\": \"string\" },"
  483. "\"albumlabel\": { \"type\": \"string\" },"
  484. "\"playcount\": { \"type\": \"integer\" }"
  485. "}"
  486. "}",
  487. "\"Audio.Details.Song\": {"
  488. "\"extends\": \"Audio.Details.Media\","
  489. "\"properties\": {"
  490. "\"songid\": { \"$ref\": \"Library.Id\", \"required\": true },"
  491. "\"file\": { \"type\": \"string\" },"
  492. "\"albumartist\": { \"$ref\": \"Array.String\" },"
  493. "\"album\": { \"type\": \"string\" },"
  494. "\"track\": { \"type\": \"integer\" },"
  495. "\"duration\": { \"type\": \"integer\" },"
  496. "\"comment\": { \"type\": \"string\" },"
  497. "\"lyrics\": { \"type\": \"string\" },"
  498. "\"playcount\": { \"type\": \"integer\" },"
  499. "\"musicbrainztrackid\": { \"type\": \"string\" },"
  500. "\"musicbrainzartistid\": { \"type\": \"string\" },"
  501. "\"albumid\": { \"$ref\": \"Library.Id\" },"
  502. "\"lastplayed\": { \"type\": \"string\" },"
  503. "\"disc\": { \"type\": \"integer\" },"
  504. "\"albumartistid\": { \"$ref\": \"Array.Integer\" }"
  505. "}"
  506. "}",
  507. "\"Video.Fields.Movie\": {"
  508. "\"extends\": \"Item.Fields.Base\","
  509. "\"items\": { \"type\": \"string\","
  510. "\"description\": \"Requesting the cast, showlink and/or tag field will result in increased response times\","
  511. "\"enum\": [ \"title\", \"genre\", \"year\", \"rating\", \"director\", \"trailer\","
  512. "\"tagline\", \"plot\", \"plotoutline\", \"originaltitle\", \"lastplayed\","
  513. "\"playcount\", \"writer\", \"studio\", \"mpaa\", \"cast\", \"country\","
  514. "\"imdbnumber\", \"runtime\", \"set\", \"showlink\", \"streamdetails\","
  515. "\"top250\", \"votes\", \"fanart\", \"thumbnail\", \"file\", \"sorttitle\","
  516. "\"resume\", \"setid\", \"dateadded\", \"tag\", \"art\" ]"
  517. "}"
  518. "}",
  519. "\"Video.Fields.MovieSet\": {"
  520. "\"extends\": \"Item.Fields.Base\","
  521. "\"items\": { \"type\": \"string\","
  522. "\"enum\": [ \"title\", \"playcount\", \"fanart\", \"thumbnail\", \"art\" ]"
  523. "}"
  524. "}",
  525. "\"Video.Fields.TVShow\": {"
  526. "\"extends\": \"Item.Fields.Base\","
  527. "\"items\": { \"type\": \"string\","
  528. "\"description\": \"Requesting the cast field will result in increased response times\","
  529. "\"enum\": [ \"title\", \"genre\", \"year\", \"rating\", \"plot\","
  530. "\"studio\", \"mpaa\", \"cast\", \"playcount\", \"episode\","
  531. "\"imdbnumber\", \"premiered\", \"votes\", \"lastplayed\","
  532. "\"fanart\", \"thumbnail\", \"file\", \"originaltitle\","
  533. "\"sorttitle\", \"episodeguide\", \"season\", \"watchedepisodes\","
  534. "\"dateadded\", \"tag\", \"lastplayed\", \"art\" ]"
  535. "}"
  536. "}",
  537. "\"Video.Fields.Season\": {"
  538. "\"extends\": \"Item.Fields.Base\","
  539. "\"items\": { \"type\": \"string\","
  540. "\"enum\": [ \"season\", \"showtitle\", \"playcount\", \"episode\", \"fanart\", \"thumbnail\", \"tvshowid\","
  541. "\"watchedepisodes\", \"art\" ]"
  542. "}"
  543. "}",
  544. "\"Video.Fields.Episode\": {"
  545. "\"extends\": \"Item.Fields.Base\","
  546. "\"items\": { \"type\": \"string\","
  547. "\"description\": \"Requesting the cast field will result in increased response times\","
  548. "\"enum\": [ \"title\", \"plot\", \"votes\", \"rating\", \"writer\","
  549. "\"firstaired\", \"playcount\", \"runtime\", \"director\","
  550. "\"productioncode\", \"season\", \"episode\", \"originaltitle\","
  551. "\"showtitle\", \"cast\", \"streamdetails\", \"lastplayed\", \"fanart\","
  552. "\"thumbnail\", \"file\", \"resume\", \"tvshowid\", \"dateadded\","
  553. "\"uniqueid\", \"art\" ]"
  554. "}"
  555. "}",
  556. "\"Video.Fields.MusicVideo\": {"
  557. "\"extends\": \"Item.Fields.Base\","
  558. "\"items\": { \"type\": \"string\","
  559. "\"enum\": [ \"title\", \"playcount\", \"runtime\", \"director\","
  560. "\"studio\", \"year\", \"plot\", \"album\", \"artist\","
  561. "\"genre\", \"track\", \"streamdetails\", \"lastplayed\","
  562. "\"fanart\", \"thumbnail\", \"file\", \"resume\", \"dateadded\","
  563. "\"tag\", \"art\" ]"
  564. "}"
  565. "}",
  566. "\"Video.Cast\": {"
  567. "\"type\": \"array\","
  568. "\"items\": { \"type\": \"object\","
  569. "\"properties\": {"
  570. "\"name\": { \"type\": \"string\", \"required\": true },"
  571. "\"role\": { \"type\": \"string\", \"required\": true },"
  572. "\"thumbnail\": { \"type\": \"string\" }"
  573. "},"
  574. "\"additionalProperties\": false"
  575. "}"
  576. "}",
  577. "\"Video.Streams\": {"
  578. "\"type\": \"object\","
  579. "\"properties\": {"
  580. "\"audio\": { \"type\": \"array\", \"minItems\": 1,"
  581. "\"items\": { \"type\": \"object\","
  582. "\"properties\": {"
  583. "\"codec\": { \"type\": \"string\" },"
  584. "\"language\": { \"type\": \"string\" },"
  585. "\"channels\": { \"type\": \"integer\" }"
  586. "},"
  587. "\"additionalProperties\": false"
  588. "}"
  589. "},"
  590. "\"video\": { \"type\": \"array\", \"minItems\": 1,"
  591. "\"items\": { \"type\": \"object\","
  592. "\"properties\": {"
  593. "\"codec\": { \"type\": \"string\" },"
  594. "\"aspect\": { \"type\": \"number\" },"
  595. "\"width\": { \"type\": \"integer\" },"
  596. "\"height\": { \"type\": \"integer\" },"
  597. "\"duration\": { \"type\": \"integer\" }"
  598. "},"
  599. "\"additionalProperties\": false"
  600. "}"
  601. "},"
  602. "\"subtitle\": { \"type\": \"array\", \"minItems\": 1,"
  603. "\"items\": { \"type\": \"object\","
  604. "\"properties\": {"
  605. "\"language\": { \"type\": \"string\" }"
  606. "},"
  607. "\"additionalProperties\": false"
  608. "}"
  609. "}"
  610. "},"
  611. "\"additionalProperties\": false"
  612. "}",
  613. "\"Video.Resume\": {"
  614. "\"type\": \"object\","
  615. "\"properties\": {"
  616. "\"position\": { \"type\": \"number\", \"minimum\": 0 },"
  617. "\"total\": { \"type\": \"number\", \"minimum\": 0 }"
  618. "},"
  619. "\"additionalProperties\": false"
  620. "}",
  621. "\"Video.Details.Base\": {"
  622. "\"extends\": \"Media.Details.Base\","
  623. "\"properties\": {"
  624. "\"playcount\": { \"type\": \"integer\" },"
  625. "\"art\": { \"$ref\": \"Media.Artwork\" }"
  626. "}"
  627. "}",
  628. "\"Video.Details.Media\": {"
  629. "\"extends\": \"Video.Details.Base\","
  630. "\"properties\": {"
  631. "\"title\": { \"type\": \"string\" }"
  632. "}"
  633. "}",
  634. "\"Video.Details.Item\": {"
  635. "\"extends\": \"Video.Details.Media\","
  636. "\"properties\": {"
  637. "\"file\": { \"type\": \"string\" },"
  638. "\"plot\": { \"type\": \"string\" },"
  639. "\"lastplayed\": { \"type\": \"string\" },"
  640. "\"dateadded\": { \"type\": \"string\" }"
  641. "}"
  642. "}",
  643. "\"Video.Details.File\": {"
  644. "\"extends\": \"Video.Details.Item\","
  645. "\"properties\": {"
  646. "\"runtime\": { \"type\": \"integer\", \"description\": \"Runtime in seconds\" },"
  647. "\"director\": { \"$ref\": \"Array.String\" },"
  648. "\"streamdetails\": { \"$ref\": \"Video.Streams\" },"
  649. "\"resume\": { \"$ref\": \"Video.Resume\" }"
  650. "}"
  651. "}",
  652. "\"Video.Details.Movie\": {"
  653. "\"extends\": \"Video.Details.File\","
  654. "\"properties\": {"
  655. "\"movieid\": { \"$ref\": \"Library.Id\", \"required\": true },"
  656. "\"genre\": { \"$ref\": \"Array.String\" },"
  657. "\"year\": { \"type\": \"integer\" },"
  658. "\"rating\": { \"type\": \"number\" },"
  659. "\"trailer\": { \"type\": \"string\" },"
  660. "\"tagline\": { \"type\": \"string\" },"
  661. "\"plotoutline\": { \"type\": \"string\" },"
  662. "\"originaltitle\": { \"type\": \"string\" },"
  663. "\"sorttitle\": { \"type\": \"string\" },"
  664. "\"writer\": { \"$ref\": \"Array.String\" },"
  665. "\"studio\": { \"$ref\": \"Array.String\" },"
  666. "\"mpaa\": { \"type\": \"string\" },"
  667. "\"cast\": { \"$ref\": \"Video.Cast\" },"
  668. "\"country\": { \"$ref\": \"Array.String\" },"
  669. "\"imdbnumber\": { \"type\": \"string\" },"
  670. "\"set\": { \"type\": \"string\" },"
  671. "\"showlink\": { \"$ref\": \"Array.String\" },"
  672. "\"top250\": { \"type\": \"integer\" },"
  673. "\"votes\": { \"type\": \"string\" },"
  674. "\"setid\": { \"$ref\": \"Library.Id\" },"
  675. "\"tag\": { \"$ref\": \"Array.String\" }"
  676. "}"
  677. "}",
  678. "\"Video.Details.MovieSet\": {"
  679. "\"extends\": \"Video.Details.Media\","
  680. "\"properties\": {"
  681. "\"setid\": { \"$ref\": \"Library.Id\", \"required\": true }"
  682. "}"
  683. "}",
  684. "\"Video.Details.MovieSet.Extended\": {"
  685. "\"extends\": \"Video.Details.MovieSet\","
  686. "\"properties\": {"
  687. "\"limits\": { \"$ref\": \"List.LimitsReturned\", \"required\": true },"
  688. "\"movies\": { \"type\": \"array\","
  689. "\"items\": { \"$ref\": \"Video.Details.Movie\" }"
  690. "}"
  691. "}"
  692. "}",
  693. "\"Video.Details.TVShow\": {"
  694. "\"extends\": \"Video.Details.Item\","
  695. "\"properties\": {"
  696. "\"tvshowid\": { \"$ref\": \"Library.Id\", \"required\": true },"
  697. "\"genre\": { \"$ref\": \"Array.String\" },"
  698. "\"year\": { \"type\": \"integer\" },"
  699. "\"rating\": { \"type\": \"number\" },"
  700. "\"originaltitle\": { \"type\": \"string\" },"
  701. "\"sorttitle\": { \"type\": \"string\" },"
  702. "\"studio\": { \"$ref\": \"Array.String\" },"
  703. "\"mpaa\": { \"type\": \"string\" },"
  704. "\"cast\": { \"$ref\": \"Video.Cast\" },"
  705. "\"episode\": { \"type\": \"integer\" },"
  706. "\"watchedepisodes\": { \"type\": \"integer\" },"
  707. "\"imdbnumber\": { \"type\": \"string\" },"
  708. "\"premiered\": { \"type\": \"string\" },"
  709. "\"votes\": { \"type\": \"string\" },"
  710. "\"episodeguide\": { \"type\": \"string\" },"
  711. "\"season\": { \"type\": \"integer\" },"
  712. "\"tag\": { \"$ref\": \"Array.String\" }"
  713. "}"
  714. "}",
  715. "\"Video.Details.Season\": {"
  716. "\"extends\": \"Video.Details.Base\","
  717. "\"properties\": {"
  718. "\"season\": { \"type\": \"integer\", \"required\": true },"
  719. "\"showtitle\": { \"type\": \"string\" },"
  720. "\"episode\": { \"type\": \"integer\" },"
  721. "\"watchedepisodes\": { \"type\": \"integer\" },"
  722. "\"tvshowid\": { \"$ref\": \"Library.Id\" }"
  723. "}"
  724. "}",
  725. "\"Video.Details.Episode\": {"
  726. "\"extends\": \"Video.Details.File\","
  727. "\"properties\": {"
  728. "\"episodeid\": { \"$ref\": \"Library.Id\", \"required\": true },"
  729. "\"votes\": { \"type\": \"string\" },"
  730. "\"rating\": { \"type\": \"number\" },"
  731. "\"writer\": { \"$ref\": \"Array.String\" },"
  732. "\"firstaired\": { \"type\": \"string\" },"
  733. "\"productioncode\": { \"type\": \"string\" },"
  734. "\"season\": { \"type\": \"integer\" },"
  735. "\"episode\": { \"type\": \"integer\" },"
  736. "\"uniqueid\": { \"type\": \"object\", \"additionalProperties\": { \"type\": \"string\", \"minLength\": 1 } },"
  737. "\"originaltitle\": { \"type\": \"string\" },"
  738. "\"showtitle\": { \"type\": \"string\" },"
  739. "\"cast\": { \"$ref\": \"Video.Cast\" },"
  740. "\"tvshowid\": { \"$ref\": \"Library.Id\" }"
  741. "}"
  742. "}",
  743. "\"Video.Details.MusicVideo\": {"
  744. "\"extends\": \"Video.Details.File\","
  745. "\"properties\": {"
  746. "\"musicvideoid\": { \"$ref\": \"Library.Id\", \"required\": true },"
  747. "\"studio\": { \"$ref\": \"Array.String\" },"
  748. "\"year\": { \"type\": \"integer\" },"
  749. "\"album\": { \"type\": \"string\" },"
  750. "\"artist\": { \"$ref\": \"Array.String\" },"
  751. "\"genre\": { \"$ref\": \"Array.String\" },"
  752. "\"track\": { \"type\": \"integer\" },"
  753. "\"tag\": { \"$ref\": \"Array.String\" }"
  754. "}"
  755. "}",
  756. "\"PVR.Property.Name\": {"
  757. "\"type\": \"string\","
  758. "\"enum\": [ \"available\", \"recording\", \"scanning\" ]"
  759. "}",
  760. "\"PVR.Property.Value\": {"
  761. "\"type\": \"object\","
  762. "\"properties\": {"
  763. "\"available\": { \"type\": \"boolean\" },"
  764. "\"recording\": { \"type\": \"boolean\" },"
  765. "\"scanning\": { \"type\": \"boolean\" }"
  766. "}"
  767. "}",
  768. "\"PVR.ChannelGroup.Id\": {"
  769. "\"type\": ["
  770. "{ \"$ref\": \"Library.Id\", \"required\": true },"
  771. "{ \"type\": \"string\", \"enum\": [ \"alltv\", \"allradio\" ], \"required\": true }"
  772. "]"
  773. "}",
  774. "\"PVR.Fields.Channel\": {"
  775. "\"extends\": \"Item.Fields.Base\","
  776. "\"items\": { \"type\": \"string\","
  777. "\"enum\": [ \"thumbnail\", \"channeltype\", \"hidden\", \"locked\", \"channel\", \"lastplayed\" ]"
  778. "}"
  779. "}",
  780. "\"PVR.Details.Channel\": {"
  781. "\"extends\": \"Item.Details.Base\","
  782. "\"properties\": {"
  783. "\"channelid\": { \"$ref\": \"Library.Id\", \"required\": true },"
  784. "\"channel\": { \"type\": \"string\" },"
  785. "\"channeltype\": { \"$ref\": \"PVR.Channel.Type\" },"
  786. "\"hidden\": { \"type\": \"boolean\" },"
  787. "\"locked\": { \"type\": \"boolean\" },"
  788. "\"thumbnail\": { \"type\": \"string\" },"
  789. "\"lastplayed\": { \"type\": \"string\" }"
  790. "}"
  791. "}",
  792. "\"PVR.Details.ChannelGroup\": {"
  793. "\"extends\": \"Item.Details.Base\","
  794. "\"properties\": {"
  795. "\"channelgroupid\": { \"$ref\": \"Library.Id\", \"required\": true },"
  796. "\"channeltype\": { \"$ref\": \"PVR.Channel.Type\", \"required\": true }"
  797. "}"
  798. "}",
  799. "\"PVR.Details.ChannelGroup.Extended\": {"
  800. "\"extends\": \"PVR.Details.ChannelGroup\","
  801. "\"properties\": {"
  802. "\"limits\": { \"$ref\": \"List.LimitsReturned\", \"required\": true },"
  803. "\"channels\": { \"type\": \"array\","
  804. "\"items\": { \"$ref\": \"PVR.Details.Channel\" }"
  805. "}"
  806. "}"
  807. "}",
  808. "\"Profiles.Password\": {"
  809. "\"type\": \"object\","
  810. "\"properties\": {"
  811. "\"value\": { \"type\": \"string\", \"required\": true, \"description\": \"Password\" },"
  812. "\"encryption\": { \"type\": \"string\", \"description\": \"Password Encryption\", \"default\": \"md5\", \"enum\": [ \"none\", \"md5\" ] }"
  813. "}"
  814. "}",
  815. "\"Profiles.Fields.Profile\": {"
  816. "\"extends\": \"Item.Fields.Base\","
  817. "\"items\": { \"type\": \"string\", \"enum\": [ \"thumbnail\", \"lockmode\" ] }"
  818. "}",
  819. "\"Profiles.Details.Profile\": {"
  820. "\"extends\": \"Item.Details.Base\","
  821. "\"properties\": {"
  822. "\"thumbnail\": { \"type\": \"string\" },"
  823. "\"lockmode\": { \"type\": \"integer\" }"
  824. "}"
  825. "}",
  826. "\"List.Filter.Rule\": {"
  827. "\"type\": \"object\","
  828. "\"properties\": {"
  829. "\"operator\": { \"$ref\": \"List.Filter.Operators\", \"required\": true },"
  830. "\"value\": {"
  831. "\"type\": ["
  832. "{ \"type\": \"string\", \"required\": true },"
  833. "{ \"type\": \"array\", \"items\": { \"type\": \"string\" }, \"required\": true }"
  834. "], \"required\": true"
  835. "}"
  836. "}"
  837. "}",
  838. "\"List.Filter.Rule.Movies\": {"
  839. "\"extends\": \"List.Filter.Rule\","
  840. "\"properties\": {"
  841. "\"field\": { \"$ref\": \"List.Filter.Fields.Movies\", \"required\": true }"
  842. "}"
  843. "}",
  844. "\"List.Filter.Rule.TVShows\": {"
  845. "\"extends\": \"List.Filter.Rule\","
  846. "\"properties\": {"
  847. "\"field\": { \"$ref\": \"List.Filter.Fields.TVShows\", \"required\": true }"
  848. "}"
  849. "}",
  850. "\"List.Filter.Rule.Episodes\": {"
  851. "\"extends\": \"List.Filter.Rule\","
  852. "\"properties\": {"
  853. "\"field\": { \"$ref\": \"List.Filter.Fields.Episodes\", \"required\": true }"
  854. "}"
  855. "}",
  856. "\"List.Filter.Rule.MusicVideos\": {"
  857. "\"extends\": \"List.Filter.Rule\","
  858. "\"properties\": {"
  859. "\"field\": { \"$ref\": \"List.Filter.Fields.MusicVideos\", \"required\": true }"
  860. "}"
  861. "}",
  862. "\"List.Filter.Rule.Artists\": {"
  863. "\"extends\": \"List.Filter.Rule\","
  864. "\"properties\": {"
  865. "\"field\": { \"$ref\": \"List.Filter.Fields.Artists\", \"required\": true }"
  866. "}"
  867. "}",
  868. "\"List.Filter.Rule.Albums\": {"
  869. "\"extends\": \"List.Filter.Rule\","
  870. "\"properties\": {"
  871. "\"field\": { \"$ref\": \"List.Filter.Fields.Albums\", \"required\": true }"
  872. "}"
  873. "}",
  874. "\"List.Filter.Rule.Songs\": {"
  875. "\"extends\": \"List.Filter.Rule\","
  876. "\"properties\": {"
  877. "\"field\": { \"$ref\": \"List.Filter.Fields.Songs\", \"required\": true }"
  878. "}"
  879. "}",
  880. "\"List.Filter.Movies\": {"
  881. "\"type\": ["
  882. "{ \"type\": \"object\","
  883. "\"properties\": {"
  884. "\"and\": { \"type\": \"array\","
  885. "\"items\": { \"$ref\": \"List.Filter.Movies\" },"
  886. "\"minItems\": 1, \"required\": true"
  887. "}"
  888. "}"
  889. "},"
  890. "{ \"type\": \"object\","
  891. "\"properties\": {"
  892. "\"or\": { \"type\": \"array\","
  893. "\"items\": { \"$ref\": \"List.Filter.Movies\" },"
  894. "\"minItems\": 1, \"required\": true"
  895. "}"
  896. "}"
  897. "},"
  898. "{ \"$ref\": \"List.Filter.Rule.Movies\" }"
  899. "]"
  900. "}",
  901. "\"List.Filter.TVShows\": {"
  902. "\"type\": ["
  903. "{ \"type\": \"object\","
  904. "\"properties\": {"
  905. "\"and\": { \"type\": \"array\","
  906. "\"items\": { \"$ref\": \"List.Filter.TVShows\" },"
  907. "\"minItems\": 1, \"required\": true"
  908. "}"
  909. "}"
  910. "},"
  911. "{ \"type\": \"object\","
  912. "\"properties\": {"
  913. "\"or\": { \"type\": \"array\","
  914. "\"items\": { \"$ref\": \"List.Filter.TVShows\" },"
  915. "\"minItems\": 1, \"required\": true"
  916. "}"
  917. "}"
  918. "},"
  919. "{ \"$ref\": \"List.Filter.Rule.TVShows\" }"
  920. "]"
  921. "}",
  922. "\"List.Filter.Episodes\": {"
  923. "\"type\": ["
  924. "{ \"type\": \"object\","
  925. "\"properties\": {"
  926. "\"and\": { \"type\": \"array\","
  927. "\"items\": { \"$ref\": \"List.Filter.Episodes\" },"
  928. "\"minItems\": 1, \"required\": true"
  929. "}"
  930. "}"
  931. "},"
  932. "{ \"type\": \"object\","
  933. "\"properties\": {"
  934. "\"or\": { \"type\": \"array\","
  935. "\"items\": { \"$ref\": \"List.Filter.Episodes\" },"
  936. "\"minItems\": 1, \"required\": true"
  937. "}"
  938. "}"
  939. "},"
  940. "{ \"$ref\": \"List.Filter.Rule.Episodes\" }"
  941. "]"
  942. "}",
  943. "\"List.Filter.MusicVideos\": {"
  944. "\"type\": ["
  945. "{ \"type\": \"object\","
  946. "\"properties\": {"
  947. "\"and\": { \"type\": \"array\","
  948. "\"items\": { \"$ref\": \"List.Filter.MusicVideos\" },"
  949. "\"minItems\": 1, \"required\": true"
  950. "}"
  951. "}"
  952. "},"
  953. "{ \"type\": \"object\","
  954. "\"properties\": {"
  955. "\"or\": { \"type\": \"array\","
  956. "\"items\": { \"$ref\": \"List.Filter.MusicVideos\" },"
  957. "\"minItems\": 1, \"required\": true"
  958. "}"
  959. "}"
  960. "},"
  961. "{ \"$ref\": \"List.Filter.Rule.MusicVideos\" }"
  962. "]"
  963. "}",
  964. "\"List.Filter.Artists\": {"
  965. "\"type\": ["
  966. "{ \"type\": \"object\","
  967. "\"properties\": {"
  968. "\"and\": { \"type\": \"array\","
  969. "\"items\": { \"$ref\": \"List.Filter.Artists\" },"
  970. "\"minItems\": 1, \"required\": true"
  971. "}"
  972. "}"
  973. "},"
  974. "{ \"type\": \"object\","
  975. "\"properties\": {"
  976. "\"or\": { \"type\": \"array\","
  977. "\"items\": { \"$ref\": \"List.Filter.Artists\" },"
  978. "\"minItems\": 1, \"required\": true"
  979. "}"
  980. "}"
  981. "},"
  982. "{ \"$ref\": \"List.Filter.Rule.Artists\" }"
  983. "]"
  984. "}",
  985. "\"List.Filter.Albums\": {"
  986. "\"type\": ["
  987. "{ \"type\": \"object\","
  988. "\"properties\": {"
  989. "\"and\": { \"type\": \"array\","
  990. "\"items\": { \"$ref\": \"List.Filter.Albums\" },"
  991. "\"minItems\": 1, \"required\": true"
  992. "}"
  993. "}"
  994. "},"
  995. "{ \"type\": \"object\","
  996. "\"properties\": {"
  997. "\"or\": { \"type\": \"array\","
  998. "\"items\": { \"$ref\": \"List.Filter.Albums\" },"
  999. "\"minItems\": 1, \"required\": true"
  1000. "}"
  1001. "}"
  1002. "},"
  1003. "{ \"$ref\": \"List.Filter.Rule.Albums\" }"
  1004. "]"
  1005. "}",
  1006. "\"List.Filter.Songs\": {"
  1007. "\"type\": ["
  1008. "{ \"type\": \"object\","
  1009. "\"properties\": {"
  1010. "\"and\": { \"type\": \"array\","
  1011. "\"items\": { \"$ref\": \"List.Filter.Songs\" },"
  1012. "\"minItems\": 1, \"required\": true"
  1013. "}"
  1014. "}"
  1015. "},"
  1016. "{ \"type\": \"object\","
  1017. "\"properties\": {"
  1018. "\"or\": { \"type\": \"array\","
  1019. "\"items\": { \"$ref\": \"List.Filter.Songs\" },"
  1020. "\"minItems\": 1, \"required\": true"
  1021. "}"
  1022. "}"
  1023. "},"
  1024. "{ \"$ref\": \"List.Filter.Rule.Songs\" }"
  1025. "]"
  1026. "}",
  1027. "\"List.Item.Base\": {"
  1028. "\"extends\": [ \"Video.Details.File\", \"Audio.Details.Media\" ],"
  1029. "\"properties\": {"
  1030. "\"id\": { \"$ref\": \"Library.Id\" },"
  1031. "\"type\": { \"type\": \"string\", \"enum\": [ \"unknown\", \"movie\", \"episode\", \"musicvideo\", \"song\", \"picture\", \"channel\" ] },"
  1032. "\"albumartist\": { \"$ref\": \"Array.String\" },"
  1033. "\"album\": { \"type\": \"string\" },"
  1034. "\"track\": { \"type\": \"integer\" },"
  1035. "\"duration\": { \"type\": \"integer\" },"
  1036. "\"comment\": { \"type\": \"string\" },"
  1037. "\"lyrics\": { \"type\": \"string\" },"
  1038. "\"musicbrainztrackid\": { \"type\": \"string\" },"
  1039. "\"musicbrainzartistid\": { \"type\": \"string\" },"
  1040. "\"trailer\": { \"type\": \"string\" },"
  1041. "\"tagline\": { \"type\": \"string\" },"
  1042. "\"plotoutline\": { \"type\": \"string\" },"
  1043. "\"originaltitle\": { \"type\": \"string\" },"
  1044. "\"writer\": { \"$ref\": \"Array.String\" },"
  1045. "\"studio\": { \"$ref\": \"Array.String\" },"
  1046. "\"mpaa\": { \"type\": \"string\" },"
  1047. "\"cast\": { \"$ref\": \"Video.Cast\" },"
  1048. "\"country\": { \"$ref\": \"Array.String\" },"
  1049. "\"imdbnumber\": { \"type\": \"string\" },"
  1050. "\"premiered\": { \"type\": \"string\" },"
  1051. "\"productioncode\": { \"type\": \"string\" },"
  1052. "\"set\": { \"type\": \"string\" },"
  1053. "\"showlink\": { \"$ref\": \"Array.String\" },"
  1054. "\"top250\": { \"type\": \"integer\" },"
  1055. "\"votes\": { \"type\": \"string\" },"
  1056. "\"firstaired\": { \"type\": \"string\" },"
  1057. "\"season\": { \"type\": \"integer\" },"
  1058. "\"episode\": { \"type\": \"integer\" },"
  1059. "\"showtitle\": { \"type\": \"string\" },"
  1060. "\"albumid\": { \"$ref\": \"Library.Id\" },"
  1061. "\"setid\": { \"$ref\": \"Library.Id\" },"
  1062. "\"tvshowid\": { \"$ref\": \"Library.Id\" },"
  1063. "\"watchedepisodes\": { \"type\": \"integer\" },"
  1064. "\"disc\": { \"type\": \"integer\" },"
  1065. "\"tag\": { \"$ref\": \"Array.String\" },"
  1066. "\"albumartistid\": { \"$ref\": \"Array.Integer\" },"
  1067. "\"uniqueid\": { \"type\": \"object\", \"additionalProperties\": { \"type\": \"string\", \"minLength\": 1 } },"
  1068. "\"episodeguide\": { \"type\": \"string\" },"
  1069. "\"sorttitle\": { \"type\": \"string\" },"
  1070. "\"description\": { \"type\": \"string\" },"
  1071. "\"theme\": { \"$ref\": \"Array.String\" },"
  1072. "\"mood\": { \"$ref\": \"Array.String\" },"
  1073. "\"style\": { \"$ref\": \"Array.String\" },"
  1074. "\"albumlabel\": { \"type\": \"string\" }"
  1075. "}"
  1076. "}",
  1077. "\"List.Fields.All\": {"
  1078. "\"extends\": \"Item.Fields.Base\","
  1079. "\"items\": { \"type\": \"string\","
  1080. "\"enum\": [ \"title\", \"artist\", \"albumartist\", \"genre\", \"year\", \"rating\","
  1081. "\"album\", \"track\", \"duration\", \"comment\", \"lyrics\", \"musicbrainztrackid\","
  1082. "\"musicbrainzartistid\", \"musicbrainzalbumid\", \"musicbrainzalbumartistid\","
  1083. "\"playcount\", \"fanart\", \"director\", \"trailer\", \"tagline\", \"plot\","
  1084. "\"plotoutline\", \"originaltitle\", \"lastplayed\", \"writer\", \"studio\","
  1085. "\"mpaa\", \"cast\", \"country\", \"imdbnumber\", \"premiered\", \"productioncode\","
  1086. "\"runtime\", \"set\", \"showlink\", \"streamdetails\", \"top250\", \"votes\","
  1087. "\"firstaired\", \"season\", \"episode\", \"showtitle\", \"thumbnail\", \"file\","
  1088. "\"resume\", \"artistid\", \"albumid\", \"tvshowid\", \"setid\", \"watchedepisodes\","
  1089. "\"disc\", \"tag\", \"art\", \"genreid\", \"displayartist\", \"albumartistid\","
  1090. "\"description\", \"theme\", \"mood\", \"style\", \"albumlabel\", \"sorttitle\","
  1091. "\"episodeguide\", \"uniqueid\", \"dateadded\", \"channel\", \"channeltype\", \"hidden\","
  1092. "\"locked\", \"channelnumber\", \"starttime\", \"endtime\" ]"
  1093. "}"
  1094. "}",
  1095. "\"List.Item.All\": {"
  1096. "\"extends\": \"List.Item.Base\","
  1097. "\"properties\": {"
  1098. "\"channel\": { \"type\": \"string\" },"
  1099. "\"channeltype\": { \"$ref\": \"PVR.Channel.Type\" },"
  1100. "\"hidden\": { \"type\": \"boolean\" },"
  1101. "\"locked\": { \"type\": \"boolean\" },"
  1102. "\"channelnumber\": { \"type\": \"integer\" },"
  1103. "\"starttime\": { \"type\": \"string\" },"
  1104. "\"endtime\": { \"type\": \"string\" }"
  1105. "}"
  1106. "}",
  1107. "\"List.Fields.Files\": {"
  1108. "\"extends\": \"Item.Fields.Base\","
  1109. "\"items\": { \"type\": \"string\","
  1110. "\"enum\": [ \"title\", \"artist\", \"albumartist\", \"genre\", \"year\", \"rating\","
  1111. "\"album\", \"track\", \"duration\", \"comment\", \"lyrics\", \"musicbrainztrackid\","
  1112. "\"musicbrainzartistid\", \"musicbrainzalbumid\", \"musicbrainzalbumartistid\","
  1113. "\"playcount\", \"fanart\", \"director\", \"trailer\", \"tagline\", \"plot\","
  1114. "\"plotoutline\", \"originaltitle\", \"lastplayed\", \"writer\", \"studio\","
  1115. "\"mpaa\", \"cast\", \"country\", \"imdbnumber\", \"premiered\", \"productioncode\","
  1116. "\"runtime\", \"set\", \"showlink\", \"streamdetails\", \"top250\", \"votes\","
  1117. "\"firstaired\", \"season\", \"episode\", \"showtitle\", \"thumbnail\", \"file\","
  1118. "\"resume\", \"artistid\", \"albumid\", \"tvshowid\", \"setid\", \"watchedepisodes\","
  1119. "\"disc\", \"tag\", \"art\", \"genreid\", \"displayartist\", \"albumartistid\","
  1120. "\"description\", \"theme\", \"mood\", \"style\", \"albumlabel\", \"sorttitle\","
  1121. "\"episodeguide\", \"uniqueid\", \"dateadded\", \"size\", \"lastmodified\", \"mimetype\" ]"
  1122. "}"
  1123. "}",
  1124. "\"List.Item.File\": {"
  1125. "\"extends\": \"List.Item.Base\","
  1126. "\"properties\": {"
  1127. "\"file\": { \"type\": \"string\", \"required\": true },"
  1128. "\"filetype\": { \"type\": \"string\", \"enum\": [ \"file\", \"directory\" ], \"required\": true },"
  1129. "\"size\": { \"type\": \"integer\", \"description\": \"Size of the file in bytes\" },"
  1130. "\"lastmodified\": { \"type\": \"string\" },"
  1131. "\"mimetype\": { \"type\": \"string\" }"
  1132. "}"
  1133. "}",
  1134. "\"List.Items.Sources\": {"
  1135. "\"type\": \"array\","
  1136. "\"items\": {"
  1137. "\"extends\": \"Item.Details.Base\","
  1138. "\"properties\": {"
  1139. "\"file\": { \"type\": \"string\", \"required\": true }"
  1140. "}"
  1141. "}"
  1142. "}",
  1143. "\"Addon.Types\": {"
  1144. "\"type\": \"string\","
  1145. "\"enum\": [ \"unknown\", \"xbmc.metadata.scraper.albums\", \"xbmc.metadata.scraper.artists\", \"xbmc.metadata.scraper.movies\","
  1146. "\"xbmc.metadata.scraper.musicvideos\", \"xbmc.metadata.scraper.tvshows\", \"xbmc.ui.screensaver\","
  1147. "\"xbmc.player.musicviz\", \"xbmc.python.pluginsource\", \"xbmc.python.script\", \"xbmc.python.weather\","
  1148. "\"xbmc.python.subtitles\", \"xbmc.python.lyrics\", \"xbmc.gui.skin\", \"xbmc.gui.webinterface\","
  1149. "\"xbmc.pvrclient\", \"xbmc.addon.video\", \"xbmc.addon.audio\", \"xbmc.addon.image\", \"xbmc.addon.executable\","
  1150. "\"xbmc.service\" ],"
  1151. "\"default\": \"unknown\""
  1152. "}",
  1153. "\"Addon.Content\": {"
  1154. "\"type\": \"string\","
  1155. "\"enum\": [ \"unknown\", \"video\", \"audio\", \"image\", \"executable\" ],"
  1156. "\"default\": \"unknown\""
  1157. "}",
  1158. "\"Addon.Fields\": {"
  1159. "\"extends\": \"Item.Fields.Base\","
  1160. "\"items\": { \"type\": \"string\","
  1161. "\"enum\": [ \"name\", \"version\", \"summary\", \"description\", \"path\", \"author\", \"thumbnail\", \"disclaimer\", \"fanart\","
  1162. "\"dependencies\", \"broken\", \"extrainfo\", \"rating\", \"enabled\" ]"
  1163. "}"
  1164. "}",
  1165. "\"Addon.Details\": {"
  1166. "\"extends\": \"Item.Details.Base\","
  1167. "\"properties\": {"
  1168. "\"addonid\": { \"type\": \"string\", \"required\": true },"
  1169. "\"type\": { \"$ref\": \"Addon.Types\", \"required\": true },"
  1170. "\"name\": { \"type\": \"string\" },"
  1171. "\"version\": { \"type\": \"string\" },"
  1172. "\"summary\": { \"type\": \"string\" },"
  1173. "\"description\": { \"type\": \"string\" },"
  1174. "\"path\": { \"type\": \"string\" },"
  1175. "\"author\": { \"type\": \"string\" },"
  1176. "\"thumbnail\": { \"type\": \"string\" },"
  1177. "\"disclaimer\": { \"type\": \"string\" },"
  1178. "\"fanart\": { \"type\": \"string\" },"
  1179. "\"dependencies\": { \"type\": \"array\","
  1180. "\"items\": { \"type\": \"object\","
  1181. "\"properties\": {"
  1182. "\"addonid\": { \"type\": \"string\", \"required\": true },"
  1183. "\"version\": { \"type\": \"string\", \"required\": true },"
  1184. "\"optional\": { \"type\": \"boolean\", \"required\": true }"
  1185. "}"
  1186. "}"
  1187. "},"
  1188. "\"broken\": { \"type\": [ \"boolean\", \"string\" ] },"
  1189. "\"extrainfo\": { \"type\": \"array\","
  1190. "\"items\": { \"type\": \"object\","
  1191. "\"properties\": {"
  1192. "\"key\": { \"type\": \"string\", \"required\": true },"
  1193. "\"value\": { \"type\": \"string\", \"required\": true }"
  1194. "}"
  1195. "}"
  1196. "},"
  1197. "\"rating\": { \"type\": \"integer\" },"
  1198. "\"enabled\": { \"type\": \"boolean\" }"
  1199. "}"
  1200. "}",
  1201. "\"GUI.Property.Name\": {"
  1202. "\"type\": \"string\","
  1203. "\"enum\": [ \"currentwindow\", \"currentcontrol\", \"skin\", \"fullscreen\" ]"
  1204. "}",
  1205. "\"GUI.Property.Value\": {"
  1206. "\"type\": \"object\","
  1207. "\"properties\": {"
  1208. "\"currentwindow\": { \"type\": \"object\","
  1209. "\"properties\": {"
  1210. "\"id\": { \"type\": \"integer\", \"required\": true },"
  1211. "\"label\": { \"type\": \"string\", \"required\": true }"
  1212. "}"
  1213. "},"
  1214. "\"currentcontrol\": { \"type\": \"object\","
  1215. "\"properties\": {"
  1216. "\"label\": { \"type\": \"string\", \"required\": true }"
  1217. "}"
  1218. "},"
  1219. "\"skin\": { \"type\": \"object\","
  1220. "\"properties\": {"
  1221. "\"id\": { \"type\": \"string\", \"required\": true, \"minLength\": 1 },"
  1222. "\"name\": { \"type\": \"string\" }"
  1223. "}"
  1224. "},"
  1225. "\"fullscreen\": { \"type\": \"boolean\" }"
  1226. "}"
  1227. "}",
  1228. "\"System.Property.Name\": {"
  1229. "\"type\": \"string\","
  1230. "\"enum\": [ \"canshutdown\", \"cansuspend\", \"canhibernate\", \"canreboot\" ]"
  1231. "}",
  1232. "\"System.Property.Value\": {"
  1233. "\"type\": \"object\","
  1234. "\"properties\": {"
  1235. "\"canshutdown\": { \"type\": \"boolean\" },"
  1236. "\"cansuspend\": { \"type\": \"boolean\" },"
  1237. "\"canhibernate\": { \"type\": \"boolean\" },"
  1238. "\"canreboot\": { \"type\": \"boolean\" }"
  1239. "}"
  1240. "}",
  1241. "\"Application.Property.Name\": {"
  1242. "\"type\": \"string\","
  1243. "\"enum\": [ \"volume\", \"muted\", \"name\", \"version\" ]"
  1244. "}",
  1245. "\"Application.Property.Value\": {"
  1246. "\"type\": \"object\","
  1247. "\"properties\": {"
  1248. "\"volume\": { \"type\": \"integer\", \"minimum\": 0, \"maximum\": 100 },"
  1249. "\"muted\": { \"type\": \"boolean\" },"
  1250. "\"name\": { \"type\": \"string\", \"minLength\": 1 },"
  1251. "\"version\": { \"type\": \"object\","
  1252. "\"properties\": {"
  1253. "\"major\": { \"type\": \"integer\", \"minimum\": 0, \"required\": true },"
  1254. "\"minor\": { \"type\": \"integer\", \"minimum\": 0, \"required\": true },"
  1255. "\"revision\": { \"type\": [ \"string\", \"integer\" ] },"
  1256. "\"tag\": { \"type\": \"string\", \"enum\": [ \"prealpha\", \"alpha\", \"beta\", \"releasecandidate\", \"stable\" ], \"required\": true }"
  1257. "}"
  1258. "}"
  1259. "}"
  1260. "}",
  1261. "\"Favourite.Fields.Favourite\": {"
  1262. "\"extends\": \"Item.Fields.Base\","
  1263. "\"items\": { \"type\": \"string\","
  1264. "\"enum\": [ \"window\", \"windowparameter\", \"thumbnail\", \"path\" ]"
  1265. "}"
  1266. "}",
  1267. "\"Favourite.Type\": {"
  1268. "\"type\": \"string\","
  1269. "\"enum\": [ \"media\", \"window\", \"script\", \"unknown\" ]"
  1270. "}",
  1271. "\"Favourite.Details.Favourite\": {"
  1272. "\"type\": \"object\","
  1273. "\"properties\": {"
  1274. "\"title\": { \"type\": \"string\", \"required\": true },"
  1275. "\"type\": { \"$ref\": \"Favourite.Type\", \"required\": true },"
  1276. "\"path\": { \"type\": \"string\" },"
  1277. "\"window\": { \"type\": \"string\" },"
  1278. "\"windowparameter\": { \"type\": \"string\" },"
  1279. "\"thumbnail\": { \"type\": \"string\" }"
  1280. "},"
  1281. "\"additionalProperties\": false"
  1282. "}"
  1283. };
  1284. const char* const JSONRPC_SERVICE_METHODS[] = {
  1285. "\"JSONRPC.Introspect\": {"
  1286. "\"type\": \"method\","
  1287. "\"description\": \"Enumerates all actions and descriptions\","
  1288. "\"transport\": \"Response\","
  1289. "\"permission\": \"ReadData\","
  1290. "\"params\": ["
  1291. "{ \"name\": \"getdescriptions\", \"type\": \"boolean\", \"default\": true },"
  1292. "{ \"name\": \"getmetadata\", \"type\": \"boolean\", \"default\": false },"
  1293. "{ \"name\": \"filterbytransport\", \"type\": \"boolean\", \"default\": true },"
  1294. "{ \"name\": \"filter\", \"type\": \"object\","
  1295. "\"properties\": {"
  1296. "\"id\": { \"type\": \"string\", \"required\": true, \"description\": \"Name of a namespace, method or type\" },"
  1297. "\"type\": { \"type\": \"string\", \"required\": true, \"enum\": [ \"method\", \"namespace\", \"type\", \"notification\" ], \"description\": \"Type of the given name\" },"
  1298. "\"getreferences\": { \"type\": \"boolean\", \"default\": true, \"description\": \"Whether or not to print the schema for referenced types\" }"
  1299. "}"
  1300. "}"
  1301. "],"
  1302. "\"returns\": \"object\""
  1303. "}",
  1304. "\"JSONRPC.Version\": {"
  1305. "\"type\": \"method\","
  1306. "\"description\": \"Retrieve the JSON-RPC protocol version.\","
  1307. "\"transport\": \"Response\","
  1308. "\"permission\": \"ReadData\","
  1309. "\"params\": [],"
  1310. "\"returns\": {"
  1311. "\"type\": \"object\","
  1312. "\"properties\": {"
  1313. "\"major\": { \"type\": \"integer\", \"minimum\": 0, \"required\": true, \"description\": \"Bumped on backwards incompatible changes to the API definition\" },"
  1314. "\"minor\": { \"type\": \"integer\", \"minimum\": 0, \"required\": true, \"description\": \"Bumped on backwards compatible additions/changes to the API definition\" },"
  1315. "\"patch\": { \"type\": \"integer\", \"minimum\": 0, \"required\": true, \"description\": \"Bumped on any changes to the internal implementation but not to the API definition\" }"
  1316. "}"
  1317. "}"
  1318. "}",
  1319. "\"JSONRPC.Permission\": {"
  1320. "\"type\": \"method\","
  1321. "\"description\": \"Retrieve the clients permissions\","
  1322. "\"transport\": \"Response\","
  1323. "\"permission\": \"ReadData\","
  1324. "\"params\": [],"
  1325. "\"returns\": {"
  1326. "\"type\": \"object\","
  1327. "\"properties\": {"
  1328. "\"ReadData\": { \"type\": \"boolean\", \"required\": true },"
  1329. "\"ControlPlayback\": { \"type\": \"boolean\", \"required\": true },"
  1330. "\"ControlNotify\": { \"type\": \"boolean\", \"required\": true },"
  1331. "\"ControlPower\": { \"type\": \"boolean\", \"required\": true },"
  1332. "\"UpdateData\": { \"type\": \"boolean\", \"required\": true },"
  1333. "\"RemoveData\": { \"type\": \"boolean\", \"required\": true },"
  1334. "\"Navigate\": { \"type\": \"boolean\", \"required\": true },"
  1335. "\"WriteFile\": { \"type\": \"boolean\", \"required\": true },"
  1336. "\"ControlSystem\": { \"type\": \"boolean\", \"required\": true },"
  1337. "\"ControlGUI\": { \"type\": \"boolean\", \"required\": true },"
  1338. "\"ManageAddon\": { \"type\": \"boolean\", \"required\": true },"
  1339. "\"ExecuteAddon\": { \"type\": \"boolean\", \"required\": true },"
  1340. "\"ControlPVR\": { \"type\": \"boolean\", \"required\": true }"
  1341. "}"
  1342. "}"
  1343. "}",
  1344. "\"JSONRPC.Ping\": {"
  1345. "\"type\": \"method\","
  1346. "\"description\": \"Ping responder\","
  1347. "\"transport\": \"Response\","
  1348. "\"permission\": \"ReadData\","
  1349. "\"params\": [],"
  1350. "\"returns\": \"string\""
  1351. "}",
  1352. "\"JSONRPC.GetConfiguration\": {"
  1353. "\"type\": \"method\","
  1354. "\"description\": \"Get client-specific configurations\","
  1355. "\"transport\": \"Announcing\","
  1356. "\"permission\": \"ReadData\","
  1357. "\"params\": [],"
  1358. "\"returns\": { \"$ref\": \"Configuration\" }"
  1359. "}",
  1360. "\"JSONRPC.SetConfiguration\": {"
  1361. "\"type\": \"method\","
  1362. "\"description\": \"Change the client-specific configuration\","
  1363. "\"transport\": \"Announcing\","
  1364. "\"permission\": \"ControlNotify\","
  1365. "\"params\": ["
  1366. "{ \"name\": \"notifications\", \"type\": \"object\","
  1367. "\"properties\": {"
  1368. "\"Player\": { \"$ref\": \"Optional.Boolean\" },"
  1369. "\"Playlist\": { \"$ref\": \"Optional.Boolean\" },"
  1370. "\"GUI\": { \"$ref\": \"Optional.Boolean\" },"
  1371. "\"System\": { \"$ref\": \"Optional.Boolean\" },"
  1372. "\"AudioLibrary\": { \"$ref\": \"Optional.Boolean\" },"
  1373. "\"VideoLibrary\": { \"$ref\": \"Optional.Boolean\" },"
  1374. "\"Application\": { \"$ref\": \"Optional.Boolean\" },"
  1375. "\"Input\": { \"$ref\": \"Optional.Boolean\" },"
  1376. "\"Other\": { \"$ref\": \"Optional.Boolean\" }"
  1377. "}"
  1378. "}"
  1379. "],"
  1380. "\"returns\": { \"$ref\": \"Configuration\" }"
  1381. "}",
  1382. "\"JSONRPC.NotifyAll\": {"
  1383. "\"type\": \"method\","
  1384. "\"description\": \"Notify all other connected clients\","
  1385. "\"transport\": \"Response\","
  1386. "\"permission\": \"ReadData\","
  1387. "\"params\": ["
  1388. "{ \"name\": \"sender\", \"type\": \"string\", \"required\": true },"
  1389. "{ \"name\": \"message\", \"type\": \"string\", \"required\": true },"
  1390. "{ \"name\": \"data\", \"type\": \"any\", \"default\": null }"
  1391. "],"
  1392. "\"returns\": \"any\""
  1393. "}",
  1394. "\"Player.Open\": {"
  1395. "\"type\": \"method\","
  1396. "\"description\": \"Start playback of either the playlist with the given ID, a slideshow with the pictures from the given directory or a single file or an item from the database.\","
  1397. "\"transport\": \"Response\","
  1398. "\"permission\": \"ControlPlayback\","
  1399. "\"params\": ["
  1400. "{ \"name\": \"item\","
  1401. "\"type\": ["
  1402. "{ \"type\": \"object\", \"required\": true, \"additionalProperties\": false,"
  1403. "\"properties\": {"
  1404. "\"playlistid\": { \"$ref\": \"Playlist.Id\", \"required\": true },"
  1405. "\"position\": { \"$ref\": \"Playlist.Position\", \"default\": 0 }"
  1406. "}"
  1407. "},"
  1408. "{ \"$ref\": \"Playlist.Item\", \"required\": true },"
  1409. "{ \"type\": \"object\", \"required\": true, \"additionalProperties\": false,"
  1410. "\"properties\": {"
  1411. "\"path\": { \"type\": \"string\", \"required\": true },"
  1412. "\"random\": { \"type\": \"boolean\", \"default\": true, \"description\": \"Deprecated, use the shuffled property of the options parameter instead\" },"
  1413. "\"recursive\": { \"type\": \"boolean\", \"default\": true }"
  1414. "}"
  1415. "},"
  1416. "{ \"type\": \"object\", \"required\": true, \"additionalProperties\": false,"
  1417. "\"properties\": {"
  1418. "\"partymode\": { \"type\": ["
  1419. "{ \"type\": \"string\", \"required\": true, \"enum\": [ \"music\", \"video\" ] },"
  1420. "{ \"type\": \"string\", \"required\": true, \"minLength\": 5, \"description\": \"Path to a smartplaylist (*.xsp) file\" }"
  1421. "]"
  1422. "}"
  1423. "}"
  1424. "},"
  1425. "{ \"type\": \"object\", \"required\": true, \"additionalProperties\": false,"
  1426. "\"properties\": {"
  1427. "\"channelid\": { \"$ref\": \"Library.Id\", \"required\": true }"
  1428. "}"
  1429. "}"
  1430. "]"
  1431. "},"
  1432. "{ \"name\": \"options\", \"type\": \"object\", \"additionalProperties\": false,"
  1433. "\"properties\": {"
  1434. "\"shuffled\": { \"$ref\": \"Optional.Boolean\" },"
  1435. "\"repeat\": { \"type\": [ \"null\", { \"$ref\": \"Player.Repeat\", \"required\": true } ], \"default\": null },"
  1436. "\"resume\": { \"type\": ["
  1437. "{ \"type\": \"boolean\", \"required\": true, \"description\": \"Whether to resume from the resume point or not\" },"
  1438. "{ \"$ref\": \"Player.Position.Percentage\", \"required\": true, \"description\": \"Percentage value to start from\" },"
  1439. "{ \"$ref\": \"Player.Position.Time\", \"required\": true, \"description\": \"Time to start from\" }"
  1440. "],"
  1441. "\"default\": false"
  1442. "}"
  1443. "}"
  1444. "}"
  1445. "],"
  1446. "\"returns\": \"string\""
  1447. "}",
  1448. "\"Player.GetActivePlayers\": {"
  1449. "\"type\": \"method\","
  1450. "\"description\": \"Returns all active players\","
  1451. "\"transport\": \"Response\","
  1452. "\"permission\": \"ReadData\","
  1453. "\"params\": [],"
  1454. "\"returns\": {"
  1455. "\"type\": \"array\","
  1456. "\"uniqueItems\": true,"
  1457. "\"items\": {"
  1458. "\"type\": \"object\","
  1459. "\"properties\": {"
  1460. "\"playerid\": { \"$ref\": \"Player.Id\", \"required\": true },"
  1461. "\"type\": { \"$ref\": \"Player.Type\", \"required\": true }"
  1462. "}"
  1463. "}"
  1464. "}"
  1465. "}",
  1466. "\"Player.GetProperties\": {"
  1467. "\"type\": \"method\","
  1468. "\"description\": \"Retrieves the values of the given properties\","
  1469. "\"transport\": \"Response\","
  1470. "\"permission\": \"ReadData\","
  1471. "\"params\": ["
  1472. "{ \"name\": \"playerid\", \"$ref\": \"Player.Id\", \"required\": true },"
  1473. "{ \"name\": \"properties\", \"type\": \"array\", \"uniqueItems\": true, \"required\": true, \"items\": { \"$ref\": \"Player.Property.Name\" } }"
  1474. "],"
  1475. "\"returns\": { \"$ref\": \"Player.Property.Value\", \"required\": true }"
  1476. "}",
  1477. "\"Player.GetItem\": {"
  1478. "\"type\": \"method\","
  1479. "\"description\": \"Retrieves the currently played item\","
  1480. "\"transport\": \"Response\","
  1481. "\"permission\": \"ReadData\","
  1482. "\"params\": ["
  1483. "{ \"name\": \"playerid\", \"$ref\": \"Player.Id\", \"required\": true },"
  1484. "{ \"name\": \"properties\", \"$ref\": \"List.Fields.All\" }"
  1485. "],"
  1486. "\"returns\": { \"type\": \"object\","
  1487. "\"properties\": {"
  1488. "\"item\": { \"$ref\": \"List.Item.All\", \"required\": true }"
  1489. "}"
  1490. "}"
  1491. "}",
  1492. "\"Player.PlayPause\": {"
  1493. "\"type\": \"method\","
  1494. "\"description\": \"Pauses or unpause playback and returns the new state\","
  1495. "\"transport\": \"Response\","
  1496. "\"permission\": \"ControlPlayback\","
  1497. "\"params\": ["
  1498. "{ \"name\": \"playerid\", \"$ref\": \"Player.Id\", \"required\": true },"
  1499. "{ \"name\": \"play\", \"$ref\": \"Global.Toggle\", \"default\": \"toggle\" }"
  1500. "],"
  1501. "\"returns\": { \"$ref\": \"Player.Speed\" }"
  1502. "}",
  1503. "\"Player.Stop\": {"
  1504. "\"type\": \"method\","
  1505. "\"description\": \"Stops playback\","
  1506. "\"transport\": \"Response\","
  1507. "\"permission\": \"ControlPlayback\","
  1508. "\"params\": ["
  1509. "{ \"name\": \"playerid\", \"$ref\": \"Player.Id\", \"required\": true }"
  1510. "],"
  1511. "\"returns\": \"string\""
  1512. "}",
  1513. "\"Player.SetSpeed\": {"
  1514. "\"type\": \"method\","
  1515. "\"description\": \"Set the speed of the current playback\","
  1516. "\"transport\": \"Response\","
  1517. "\"permission\": \"ControlPlayback\","
  1518. "\"params\": ["
  1519. "{ \"name\": \"playerid\", \"$ref\": \"Player.Id\", \"required\": true },"
  1520. "{ \"name\": \"speed\", \"type\": ["
  1521. "{ \"type\": \"integer\", \"required\": true, \"enum\": [ -32, -16, -8, -4, -2, -1, 0, 1, 2, 4, 8, 16, 32 ] },"
  1522. "{ \"$ref\": \"Global.IncrementDecrement\", \"required\": true }"
  1523. "],"
  1524. "\"required\": true"
  1525. "}"
  1526. "],"
  1527. "\"returns\": { \"$ref\": \"Player.Speed\" }"
  1528. "}",
  1529. "\"Player.Seek\": {"
  1530. "\"type\": \"method\","
  1531. "\"description\": \"Seek through the playing item\","
  1532. "\"transport\": \"Response\","
  1533. "\"permission\": \"ControlPlayback\","
  1534. "\"params\": ["
  1535. "{ \"name\": \"playerid\", \"$ref\": \"Player.Id\", \"required\": true },"
  1536. "{ \"name\": \"value\", \"required\": true, \"type\": ["
  1537. "{ \"$ref\": \"Player.Position.Percentage\", \"required\": true, \"description\": \"Percentage value to seek to\" },"
  1538. "{ \"$ref\": \"Player.Position.Time\", \"required\": true, \"description\": \"Time to seek to\" },"
  1539. "{ \"type\": \"string\", \"enum\": [ \"smallforward\", \"smallbackward\", \"bigforward\", \"bigbackward\" ], \"required\": true, \"description\": \"Seek by predefined jumps\" }"
  1540. "]"
  1541. "}"
  1542. "],"
  1543. "\"returns\": {"
  1544. "\"type\": \"object\","
  1545. "\"properties\": {"
  1546. "\"percentage\": { \"$ref\": \"Player.Position.Percentage\" },"
  1547. "\"time\": { \"$ref\": \"Global.Time\" },"
  1548. "\"totaltime\": { \"$ref\": \"Global.Time\" }"
  1549. "}"
  1550. "}"
  1551. "}",
  1552. "\"Player.Move\": {"
  1553. "\"type\": \"method\","
  1554. "\"description\": \"If picture is zoomed move viewport left/right/up/down otherwise skip previous/next\","
  1555. "\"transport\": \"Response\","
  1556. "\"permission\": \"ControlPlayback\","
  1557. "\"params\": ["
  1558. "{ \"name\": \"playerid\", \"$ref\": \"Player.Id\", \"required\": true },"
  1559. "{ \"name\": \"direction\", \"type\": \"string\", \"enum\": [ \"left\", \"right\", \"up\", \"down\" ], \"required\": true }"
  1560. "],"
  1561. "\"returns\": \"string\""
  1562. "}",
  1563. "\"Player.Zoom\": {"
  1564. "\"type\": \"method\","
  1565. "\"description\": \"Zoom current picture\","
  1566. "\"transport\": \"Response\","
  1567. "\"permission\": \"ControlPlayback\","
  1568. "\"params\": ["
  1569. "{ \"name\": \"playerid\", \"$ref\": \"Player.Id\", \"required\": true },"
  1570. "{ \"name\": \"zoom\", \"type\": ["
  1571. "{ \"type\": \"string\", \"enum\": [ \"in\", \"out\" ], \"required\": true },"
  1572. "{ \"type\": \"integer\", \"minimum\": 1, \"maximum\": 10, \"description\": \"zoom level\", \"required\": true }"
  1573. "],"
  1574. "\"required\": true }"
  1575. "],"
  1576. "\"returns\": \"string\""
  1577. "}",
  1578. "\"Player.Rotate\": {"
  1579. "\"type\": \"method\","
  1580. "\"description\": \"Rotates current picture\","
  1581. "\"transport\": \"Response\","
  1582. "\"permission\": \"ControlPlayback\","
  1583. "\"params\": ["
  1584. "{ \"name\": \"playerid\", \"$ref\": \"Player.Id\", \"required\": true },"
  1585. "{ \"name\": \"value\", \"type\": \"string\", \"enum\": [ \"clockwise\", \"counterclockwise\" ], \"default\": \"clockwise\" }"
  1586. "],"
  1587. "\"returns\": \"string\""
  1588. "}",
  1589. "\"Player.GoTo\": {"
  1590. "\"type\": \"method\","
  1591. "\"description\": \"Go to previous/next/specific item in the playlist\","
  1592. "\"transport\": \"Response\","
  1593. "\"permission\": \"ControlPlayback\","
  1594. "\"params\": ["
  1595. "{ \"name\": \"playerid\", \"$ref\": \"Player.Id\", \"required\": true },"
  1596. "{ \"name\": \"to\", \"type\": ["
  1597. "{ \"type\": \"string\", \"enum\": [ \"previous\", \"next\" ], \"required\": true },"
  1598. "{ \"$ref\": \"Playlist.Position\", \"description\": \"position in playlist\", \"required\": true }"
  1599. "],"
  1600. "\"required\": true }"
  1601. "],"
  1602. "\"returns\": \"string\""
  1603. "}",
  1604. "\"Player.SetShuffle\": {"
  1605. "\"type\": \"method\","
  1606. "\"description\": \"Shuffle/Unshuffle items in the player\","
  1607. "\"transport\": \"Response\","
  1608. "\"permission\": \"ControlPlayback\","
  1609. "\"params\": ["
  1610. "{ \"name\": \"playerid\", \"$ref\": \"Player.Id\", \"required\": true },"
  1611. "{ \"name\": \"shuffle\", \"$ref\": \"Global.Toggle\", \"required\": true }"
  1612. "],"
  1613. "\"returns\": \"string\""
  1614. "}",
  1615. "\"Player.SetRepeat\": {"
  1616. "\"type\": \"method\","
  1617. "\"description\": \"Set the repeat mode of the player\","
  1618. "\"transport\": \"Response\","
  1619. "\"permission\": \"ControlPlayback\","
  1620. "\"params\": ["
  1621. "{ \"name\": \"playerid\", \"$ref\": \"Player.Id\", \"required\": true },"
  1622. "{ \"name\": \"repeat\", \"type\": ["
  1623. "{ \"$ref\": \"Player.Repeat\", \"required\": true },"
  1624. "{ \"type\": \"string\", \"enum\": [ \"cycle\" ], \"required\": true }"
  1625. "],"
  1626. "\"required\": true"
  1627. "}"
  1628. "],"
  1629. "\"returns\": \"string\""
  1630. "}",
  1631. "\"Player.SetPartymode\": {"
  1632. "\"type\": \"method\","
  1633. "\"description\": \"Turn partymode on or off\","
  1634. "\"transport\": \"Response\","
  1635. "\"permission\": \"ControlPlayback\","
  1636. "\"params\": ["
  1637. "{ \"name\": \"playerid\", \"$ref\": \"Player.Id\", \"required\": true },"
  1638. "{ \"name\": \"partymode\", \"$ref\": \"Global.Toggle\", \"required\": true }"
  1639. "],"
  1640. "\"returns\": \"string\""
  1641. "}",
  1642. "\"Player.SetAudioStream\": {"
  1643. "\"type\": \"method\","
  1644. "\"description\": \"Set the audio stream played by the player\","
  1645. "\"transport\": \"Response\","
  1646. "\"permission\": \"ControlPlayback\","
  1647. "\"params\": ["
  1648. "{ \"name\": \"playerid\", \"$ref\": \"Player.Id\", \"required\": true },"
  1649. "{ \"name\": \"stream\", \"required\": true, \"type\": ["
  1650. "{ \"type\": \"string\", \"enum\": [ \"previous\", \"next\" ] },"
  1651. "{ \"type\": \"integer\", \"minimum\": 0, \"description\": \"Index of the audio stream to play\" }"
  1652. "]"
  1653. "}"
  1654. "],"
  1655. "\"returns\": \"string\""
  1656. "}",
  1657. "\"Player.SetSubtitle\": {"
  1658. "\"type\": \"method\","
  1659. "\"description\": \"Set the subtitle displayed by the player\","
  1660. "\"transport\": \"Response\","
  1661. "\"permission\": \"ControlPlayback\","
  1662. "\"params\": ["
  1663. "{ \"name\": \"playerid\", \"$ref\": \"Player.Id\", \"required\": true },"
  1664. "{ \"name\": \"subtitle\", \"required\": true, \"type\": ["
  1665. "{ \"type\": \"string\", \"enum\": [ \"previous\", \"next\", \"off\", \"on\" ] },"
  1666. "{ \"type\": \"integer\", \"minimum\": 0, \"description\": \"Index of the subtitle to display\" }"
  1667. "]"
  1668. "},"
  1669. "{ \"name\": \"enable\", \"type\": \"boolean\", \"default\": false, \"description\": \"Whether to enable subtitles to be displayed after setting the new subtitle\" }"
  1670. "],"
  1671. "\"returns\": \"string\""
  1672. "}",
  1673. "\"Playlist.GetPlaylists\": {"
  1674. "\"type\": \"method\","
  1675. "\"description\": \"Returns all existing playlists\","
  1676. "\"transport\": \"Response\","
  1677. "\"permission\": \"ReadData\","
  1678. "\"params\": [],"
  1679. "\"returns\": {"
  1680. "\"type\": \"array\","
  1681. "\"uniqueItems\": true,"
  1682. "\"items\": {"
  1683. "\"type\": \"object\","
  1684. "\"properties\": {"
  1685. "\"playlistid\": { \"$ref\": \"Playlist.Id\", \"required\": true },"
  1686. "\"type\": { \"$ref\": \"Playlist.Type\", \"required\": true }"
  1687. "}"
  1688. "}"
  1689. "}"
  1690. "}",
  1691. "\"Playlist.GetProperties\": {"
  1692. "\"type\": \"method\","
  1693. "\"description\": \"Retrieves the values of the given properties\","
  1694. "\"transport\": \"Response\","
  1695. "\"permission\": \"ReadData\","
  1696. "\"params\": ["
  1697. "{ \"name\": \"playlistid\", \"$ref\": \"Playlist.Id\", \"required\": true },"
  1698. "{ \"name\": \"properties\", \"type\": \"array\", \"uniqueItems\": true, \"required\": true, \"items\": { \"$ref\": \"Playlist.Property.Name\" } }"
  1699. "],"
  1700. "\"returns\": { \"$ref\": \"Playlist.Property.Value\", \"required\": true }"
  1701. "}",
  1702. "\"Playlist.GetItems\": {"
  1703. "\"type\": \"method\","
  1704. "\"description\": \"Get all items from playlist\","
  1705. "\"transport\": \"Response\","
  1706. "\"permission\": \"ReadData\","
  1707. "\"params\": ["
  1708. "{ \"name\": \"playlistid\", \"$ref\": \"Playlist.Id\", \"required\": true },"
  1709. "{ \"name\": \"properties\", \"$ref\": \"List.Fields.All\" },"
  1710. "{ \"name\": \"limits\", \"$ref\": \"List.Limits\" },"
  1711. "{ \"name\": \"sort\", \"$ref\": \"List.Sort\" }"
  1712. "],"
  1713. "\"returns\": { \"type\": \"object\","
  1714. "\"properties\": {"
  1715. "\"limits\": { \"$ref\": \"List.LimitsReturned\", \"required\": true },"
  1716. "\"items\": { \"type\": \"array\", \"items\": { \"$ref\": \"List.Item.All\" }, \"required\": true }"
  1717. "}"
  1718. "}"
  1719. "}",
  1720. "\"Playlist.Add\": {"
  1721. "\"type\": \"method\","
  1722. "\"description\": \"Add item(s) to playlist\","
  1723. "\"transport\": \"Response\","
  1724. "\"permission\": \"ControlPlayback\","
  1725. "\"params\": ["
  1726. "{ \"name\": \"playlistid\", \"$ref\": \"Playlist.Id\", \"required\": true },"
  1727. "{ \"name\": \"item\", \"$ref\": \"Playlist.Item\", \"required\": true }"
  1728. "],"
  1729. "\"returns\": \"string\""
  1730. "}",
  1731. "\"Playlist.Insert\": {"
  1732. "\"type\": \"method\","
  1733. "\"description\": \"Insert item(s) into playlist. Does not work for picture playlists (aka slideshows).\","
  1734. "\"transport\": \"Response\","
  1735. "\"permission\": \"ControlPlayback\","
  1736. "\"params\": ["
  1737. "{ \"name\": \"playlistid\", \"$ref\": \"Playlist.Id\", \"required\": true },"
  1738. "{ \"name\": \"position\", \"$ref\": \"Playlist.Position\", \"required\": true },"
  1739. "{ \"name\": \"item\", \"$ref\": \"Playlist.Item\", \"required\": true }"
  1740. "],"
  1741. "\"returns\": \"string\""
  1742. "}",
  1743. "\"Playlist.Remove\": {"
  1744. "\"type\": \"method\","
  1745. "\"description\": \"Remove item from playlist. Does not work for picture playlists (aka slideshows).\","
  1746. "\"transport\": \"Response\","
  1747. "\"permission\": \"ControlPlayback\","
  1748. "\"params\": ["
  1749. "{ \"name\": \"playlistid\", \"$ref\": \"Playlist.Id\", \"required\": true },"
  1750. "{ \"name\": \"position\", \"$ref\": \"Playlist.Position\", \"required\": true }"
  1751. "],"
  1752. "\"returns\": \"string\""
  1753. "}",
  1754. "\"Playlist.Clear\": {"
  1755. "\"type\": \"method\","
  1756. "\"description\": \"Clear playlist\","
  1757. "\"transport\": \"Response\","
  1758. "\"permission\": \"ControlPlayback\","
  1759. "\"params\": ["
  1760. "{ \"name\": \"playlistid\", \"$ref\": \"Playlist.Id\", \"required\": true }"
  1761. "],"
  1762. "\"returns\": \"string\""
  1763. "}",
  1764. "\"Playlist.Swap\": {"
  1765. "\"type\": \"method\","
  1766. "\"description\": \"Swap items in the playlist. Does not work for picture playlists (aka slideshows).\","
  1767. "\"transport\": \"Response\","
  1768. "\"permission\": \"ControlPlayback\","
  1769. "\"params\": ["
  1770. "{ \"name\": \"playlistid\", \"$ref\": \"Playlist.Id\", \"required\": true },"
  1771. "{ \"name\": \"position1\", \"$ref\": \"Playlist.Position\", \"required\": true },"
  1772. "{ \"name\": \"position2\", \"$ref\": \"Playlist.Position\", \"required\": true }"
  1773. "],"
  1774. "\"returns\": \"string\""
  1775. "}",
  1776. "\"Files.GetSources\": {"
  1777. "\"type\": \"method\","
  1778. "\"description\": \"Get the sources of the media windows\","
  1779. "\"transport\": \"Response\","
  1780. "\"permission\": \"ReadData\","
  1781. "\"params\": ["
  1782. "{ \"name\": \"media\", \"$ref\": \"Files.Media\", \"required\": true },"
  1783. "{ \"name\": \"limits\", \"$ref\": \"List.Limits\" },"
  1784. "{ \"name\": \"sort\", \"$ref\": \"List.Sort\" }"
  1785. "],"
  1786. "\"returns\": {"
  1787. "\"type\": \"object\","
  1788. "\"properties\": {"
  1789. "\"limits\": { \"$ref\": \"List.LimitsReturned\", \"required\": true },"
  1790. "\"sources\": { \"$ref\": \"List.Items.Sources\", \"required\": true }"
  1791. "}"
  1792. "}"
  1793. "}",
  1794. "\"Files.PrepareDownload\": {"
  1795. "\"type\": \"method\","
  1796. "\"description\": \"Provides a way to download a given file (e.g. providing an URL to the real file location)\","
  1797. "\"transport\": [ \"Response\", \"FileDownloadRedirect\" ],"
  1798. "\"permission\": \"ReadData\","
  1799. "\"params\": ["
  1800. "{ \"name\": \"path\", \"type\": \"string\", \"required\": true }"
  1801. "],"
  1802. "\"returns\": {"
  1803. "\"type\": \"object\","
  1804. "\"properties\": {"
  1805. "\"protocol\": { \"type\": \"string\", \"enum\": [ \"http\" ], \"required\": true },"
  1806. "\"details\": { \"type\": \"any\", \"required\": true, \"description\": \"Transport specific details on how/from where to download the given file\" },"
  1807. "\"mode\": { \"type\": \"string\", \"enum\": [ \"redirect\", \"direct\" ], \"required\": true, \"description\": \"Direct mode allows using Files.Download whereas redirect mode requires the usage of a different protocol\" }"
  1808. "}"
  1809. "}"
  1810. "}",
  1811. "\"Files.Download\": {"
  1812. "\"type\": \"method\","
  1813. "\"description\": \"Downloads the given file\","
  1814. "\"transport\": [ \"Response\", \"FileDownloadDirect\" ],"
  1815. "\"permission\": \"ReadData\","
  1816. "\"params\": ["
  1817. "{ \"name\": \"path\", \"type\": \"string\", \"required\": true }"
  1818. "],"
  1819. "\"returns\": { \"type\": \"any\", \"required\": true }"
  1820. "}",
  1821. "\"Files.GetDirectory\": {"
  1822. "\"type\": \"method\","
  1823. "\"description\": \"Get the directories and files in the given directory\","
  1824. "\"transport\": \"Response\","
  1825. "\"permission\": \"ReadData\","
  1826. "\"params\": ["
  1827. "{ \"name\": \"directory\", \"type\": \"string\", \"required\": true },"
  1828. "{ \"name\": \"media\", \"$ref\": \"Files.Media\", \"default\": \"files\" },"
  1829. "{ \"name\": \"properties\", \"$ref\": \"List.Fields.Files\" },"
  1830. "{ \"name\": \"sort\", \"$ref\": \"List.Sort\" },"
  1831. "{ \"name\": \"limits\", \"$ref\": \"List.Limits\", \"description\": \"Limits are applied after getting the directory content thus retrieval is not faster when they are applied.\" }"
  1832. "],"
  1833. "\"returns\": {"
  1834. "\"type\": \"object\","
  1835. "\"properties\": {"
  1836. "\"limits\": { \"$ref\": \"List.LimitsReturned\", \"required\": true },"
  1837. "\"files\": { \"type\": \"array\", \"items\": { \"$ref\": \"List.Item.File\" }, \"required\": true }"
  1838. "}"
  1839. "}"
  1840. "}",
  1841. "\"Files.GetFileDetails\": {"
  1842. "\"type\": \"method\","
  1843. "\"description\": \"Get details for a specific file\","
  1844. "\"transport\": \"Response\","
  1845. "\"permission\": \"ReadData\","
  1846. "\"params\": ["
  1847. "{ \"name\": \"file\", \"type\": \"string\", \"required\": true, \"description\": \"Full path to the file\" },"
  1848. "{ \"name\": \"media\", \"$ref\": \"Files.Media\", \"default\": \"files\" },"
  1849. "{ \"name\": \"properties\", \"$ref\": \"List.Fields.Files\" }"
  1850. "],"
  1851. "\"returns\": {"
  1852. "\"type\": \"object\","
  1853. "\"properties\": {"
  1854. "\"filedetails\": { \"$ref\": \"List.Item.File\", \"required\": true }"
  1855. "}"
  1856. "}"
  1857. "}",
  1858. "\"AudioLibrary.GetArtists\": {"
  1859. "\"type\": \"method\","
  1860. "\"description\": \"Retrieve all artists\","
  1861. "\"transport\": \"Response\","
  1862. "\"permission\": \"ReadData\","
  1863. "\"params\": ["
  1864. "{ \"name\": \"albumartistsonly\", \"$ref\": \"Optional.Boolean\", \"description\": \"Whether or not to include artists only appearing in compilations. If the parameter is not passed or is passed as null the GUI setting will be used\" },"
  1865. "{ \"name\": \"properties\", \"$ref\": \"Audio.Fields.Artist\" },"
  1866. "{ \"name\": \"limits\", \"$ref\": \"List.Limits\" },"
  1867. "{ \"name\": \"sort\", \"$ref\": \"List.Sort\" },"
  1868. "{ \"name\": \"filter\","
  1869. "\"type\": ["
  1870. "{ \"type\": \"object\", \"properties\": { \"genreid\": { \"$ref\": \"Library.Id\", \"required\": true } }, \"additionalProperties\": false },"
  1871. "{ \"type\": \"object\", \"properties\": { \"genre\": { \"type\": \"string\", \"minLength\": 1, \"required\": true } }, \"additionalProperties\": false },"
  1872. "{ \"type\": \"object\", \"properties\": { \"albumid\": { \"$ref\": \"Library.Id\", \"required\": true } }, \"additionalProperties\": false },"
  1873. "{ \"type\": \"object\", \"properties\": { \"album\": { \"type\": \"string\", \"minLength\": 1, \"required\": true } }, \"additionalProperties\": false },"
  1874. "{ \"type\": \"object\", \"properties\": { \"songid\": { \"$ref\": \"Library.Id\", \"required\": true } }, \"additionalProperties\": false },"
  1875. "{ \"$ref\": \"List.Filter.Artists\" }"
  1876. "]"
  1877. "}"
  1878. "],"
  1879. "\"returns\": {"
  1880. "\"type\": \"object\","
  1881. "\"properties\": {"
  1882. "\"limits\": { \"$ref\": \"List.LimitsReturned\", \"required\": true },"
  1883. "\"artists\": { \"type\": \"array\","
  1884. "\"items\": { \"$ref\": \"Audio.Details.Artist\" }"
  1885. "}"
  1886. "}"
  1887. "}"
  1888. "}",
  1889. "\"AudioLibrary.GetArtistDetails\": {"
  1890. "\"type\": \"method\","
  1891. "\"description\": \"Retrieve details about a specific artist\","
  1892. "\"transport\": \"Response\","
  1893. "\"permission\": \"ReadData\","
  1894. "\"params\": ["
  1895. "{ \"name\": \"artistid\", \"$ref\": \"Library.Id\", \"required\": true },"
  1896. "{ \"name\": \"properties\", \"$ref\": \"Audio.Fields.Artist\" }"
  1897. "],"
  1898. "\"returns\": { \"type\": \"object\","
  1899. "\"properties\": {"
  1900. "\"artistdetails\": { \"$ref\": \"Audio.Details.Artist\" }"
  1901. "}"
  1902. "}"
  1903. "}",
  1904. "\"AudioLibrary.GetAlbums\": {"
  1905. "\"type\": \"method\","
  1906. "\"description\": \"Retrieve all albums from specified artist or genre\","
  1907. "\"transport\": \"Response\","
  1908. "\"permission\": \"ReadData\","
  1909. "\"params\": ["
  1910. "{ \"name\": \"properties\", \"$ref\": \"Audio.Fields.Album\" },"
  1911. "{ \"name\": \"limits\", \"$ref\": \"List.Limits\" },"
  1912. "{ \"name\": \"sort\", \"$ref\": \"List.Sort\" },"
  1913. "{ \"name\": \"filter\","
  1914. "\"type\": ["
  1915. "{ \"type\": \"object\", \"properties\": { \"genreid\": { \"$ref\": \"Library.Id\", \"required\": true } }, \"additionalProperties\": false },"
  1916. "{ \"type\": \"object\", \"properties\": { \"genre\": { \"type\": \"string\", \"minLength\": 1, \"required\": true } }, \"additionalProperties\": false },"
  1917. "{ \"type\": \"object\", \"properties\": { \"artistid\": { \"$ref\": \"Library.Id\", \"required\": true } }, \"additionalProperties\": false },"
  1918. "{ \"type\": \"object\", \"properties\": { \"artist\": { \"type\": \"string\", \"minLength\": 1, \"required\": true } }, \"additionalProperties\": false },"
  1919. "{ \"$ref\": \"List.Filter.Albums\" }"
  1920. "]"
  1921. "}"
  1922. "],"
  1923. "\"returns\": {"
  1924. "\"type\": \"object\","
  1925. "\"properties\": {"
  1926. "\"limits\": { \"$ref\": \"List.LimitsReturned\", \"required\": true },"
  1927. "\"albums\": { \"type\": \"array\","
  1928. "\"items\": { \"$ref\": \"Audio.Details.Album\" }"
  1929. "}"
  1930. "}"
  1931. "}"
  1932. "}",
  1933. "\"AudioLibrary.GetAlbumDetails\": {"
  1934. "\"type\": \"method\","
  1935. "\"description\": \"Retrieve details about a specific album\","
  1936. "\"transport\": \"Response\","
  1937. "\"permission\": \"ReadData\","
  1938. "\"params\": ["
  1939. "{ \"name\": \"albumid\", \"$ref\": \"Library.Id\", \"required\": true },"
  1940. "{ \"name\": \"properties\", \"$ref\": \"Audio.Fields.Album\" }"
  1941. "],"
  1942. "\"returns\": { \"type\": \"object\","
  1943. "\"properties\": {"
  1944. "\"albumdetails\": { \"$ref\": \"Audio.Details.Album\" }"
  1945. "}"
  1946. "}"
  1947. "}",
  1948. "\"AudioLibrary.GetSongs\": {"
  1949. "\"type\": \"method\","
  1950. "\"description\": \"Retrieve all songs from specified album, artist or genre\","
  1951. "\"transport\": \"Response\","
  1952. "\"permission\": \"ReadData\","
  1953. "\"params\": ["
  1954. "{ \"name\": \"properties\", \"$ref\": \"Audio.Fields.Song\" },"
  1955. "{ \"name\": \"limits\", \"$ref\": \"List.Limits\" },"
  1956. "{ \"name\": \"sort\", \"$ref\": \"List.Sort\" },"
  1957. "{ \"name\": \"filter\","
  1958. "\"type\": ["
  1959. "{ \"type\": \"object\", \"properties\": { \"genreid\": { \"$ref\": \"Library.Id\", \"required\": true } }, \"additionalProperties\": false },"
  1960. "{ \"type\": \"object\", \"properties\": { \"genre\": { \"type\": \"string\", \"minLength\": 1, \"required\": true } }, \"additionalProperties\": false },"
  1961. "{ \"type\": \"object\", \"properties\": { \"artistid\": { \"$ref\": \"Library.Id\", \"required\": true } }, \"additionalProperties\": false },"
  1962. "{ \"type\": \"object\", \"properties\": { \"artist\": { \"type\": \"string\", \"minLength\": 1, \"required\": true } }, \"additionalProperties\": false },"
  1963. "{ \"type\": \"object\", \"properties\": { \"albumid\": { \"$ref\": \"Library.Id\", \"required\": true } }, \"additionalProperties\": false },"
  1964. "{ \"type\": \"object\", \"properties\": { \"album\": { \"type\": \"string\", \"minLength\": 1, \"required\": true } }, \"additionalProperties\": false },"
  1965. "{ \"$ref\": \"List.Filter.Songs\" }"
  1966. "]"
  1967. "}"
  1968. "],"
  1969. "\"returns\": {"
  1970. "\"type\": \"object\","
  1971. "\"properties\": {"
  1972. "\"limits\": { \"$ref\": \"List.LimitsReturned\", \"required\": true },"
  1973. "\"songs\": { \"type\": \"array\","
  1974. "\"items\": { \"$ref\": \"Audio.Details.Song\" }"
  1975. "}"
  1976. "}"
  1977. "}"
  1978. "}",
  1979. "\"AudioLibrary.GetSongDetails\": {"
  1980. "\"type\": \"method\","
  1981. "\"description\": \"Retrieve details about a specific song\","
  1982. "\"transport\": \"Response\","
  1983. "\"permission\": \"ReadData\","
  1984. "\"params\": ["
  1985. "{ \"name\": \"songid\", \"$ref\": \"Library.Id\", \"required\": true },"
  1986. "{ \"name\": \"properties\", \"$ref\": \"Audio.Fields.Song\" }"
  1987. "],"
  1988. "\"returns\": { \"type\": \"object\","
  1989. "\"properties\": {"
  1990. "\"songdetails\": { \"$ref\": \"Audio.Details.Song\" }"
  1991. "}"
  1992. "}"
  1993. "}",
  1994. "\"AudioLibrary.GetRecentlyAddedAlbums\": {"
  1995. "\"type\": \"method\","
  1996. "\"description\": \"Retrieve recently added albums\","
  1997. "\"transport\": \"Response\","
  1998. "\"permission\": \"ReadData\","
  1999. "\"params\": ["
  2000. "{ \"name\": \"properties\", \"$ref\": \"Audio.Fields.Album\" },"
  2001. "{ \"name\": \"limits\", \"$ref\": \"List.Limits\" },"
  2002. "{ \"name\": \"sort\", \"$ref\": \"List.Sort\" }"
  2003. "],"
  2004. "\"returns\": {"
  2005. "\"type\": \"object\","
  2006. "\"properties\": {"
  2007. "\"limits\": { \"$ref\": \"List.LimitsReturned\", \"required\": true },"
  2008. "\"albums\": { \"type\": \"array\","
  2009. "\"items\": { \"$ref\": \"Audio.Details.Album\" }"
  2010. "}"
  2011. "}"
  2012. "}"
  2013. "}",
  2014. "\"AudioLibrary.GetRecentlyAddedSongs\": {"
  2015. "\"type\": \"method\","
  2016. "\"description\": \"Retrieve recently added songs\","
  2017. "\"transport\": \"Response\","
  2018. "\"permission\": \"ReadData\","
  2019. "\"params\": ["
  2020. "{ \"name\": \"albumlimit\", \"$ref\": \"List.Amount\", \"description\": \"The amount of recently added albums from which to return the songs\" },"
  2021. "{ \"name\": \"properties\", \"$ref\": \"Audio.Fields.Song\" },"
  2022. "{ \"name\": \"limits\", \"$ref\": \"List.Limits\" },"
  2023. "{ \"name\": \"sort\", \"$ref\": \"List.Sort\" }"
  2024. "],"
  2025. "\"returns\": {"
  2026. "\"type\": \"object\","
  2027. "\"properties\": {"
  2028. "\"limits\": { \"$ref\": \"List.LimitsReturned\", \"required\": true },"
  2029. "\"songs\": { \"type\": \"array\","
  2030. "\"items\": { \"$ref\": \"Audio.Details.Song\" }"
  2031. "}"
  2032. "}"
  2033. "}"
  2034. "}",
  2035. "\"AudioLibrary.GetRecentlyPlayedAlbums\": {"
  2036. "\"type\": \"method\","
  2037. "\"description\": \"Retrieve recently played albums\","
  2038. "\"transport\": \"Response\","
  2039. "\"permission\": \"ReadData\","
  2040. "\"params\": ["
  2041. "{ \"name\": \"properties\", \"$ref\": \"Audio.Fields.Album\" },"
  2042. "{ \"name\": \"limits\", \"$ref\": \"List.Limits\" },"
  2043. "{ \"name\": \"sort\", \"$ref\": \"List.Sort\" }"
  2044. "],"
  2045. "\"returns\": {"
  2046. "\"type\": \"object\","
  2047. "\"properties\": {"
  2048. "\"limits\": { \"$ref\": \"List.LimitsReturned\", \"required\": true },"
  2049. "\"albums\": { \"type\": \"array\","
  2050. "\"items\": { \"$ref\": \"Audio.Details.Album\" }"
  2051. "}"
  2052. "}"
  2053. "}"
  2054. "}",
  2055. "\"AudioLibrary.GetRecentlyPlayedSongs\": {"
  2056. "\"type\": \"method\","
  2057. "\"description\": \"Retrieve recently played songs\","
  2058. "\"transport\": \"Response\","
  2059. "\"permission\": \"ReadData\","
  2060. "\"params\": ["
  2061. "{ \"name\": \"properties\", \"$ref\": \"Audio.Fields.Song\" },"
  2062. "{ \"name\": \"limits\", \"$ref\": \"List.Limits\" },"
  2063. "{ \"name\": \"sort\", \"$ref\": \"List.Sort\" }"
  2064. "],"
  2065. "\"returns\": {"
  2066. "\"type\": \"object\","
  2067. "\"properties\": {"
  2068. "\"limits\": { \"$ref\": \"List.LimitsReturned\", \"required\": true },"
  2069. "\"songs\": { \"type\": \"array\","
  2070. "\"items\": { \"$ref\": \"Audio.Details.Song\" }"
  2071. "}"
  2072. "}"
  2073. "}"
  2074. "}",
  2075. "\"AudioLibrary.GetGenres\": {"
  2076. "\"type\": \"method\","
  2077. "\"description\": \"Retrieve all genres\","
  2078. "\"transport\": \"Response\","
  2079. "\"permission\": \"ReadData\","
  2080. "\"params\": ["
  2081. "{ \"name\": \"properties\", \"$ref\": \"Library.Fields.Genre\" },"
  2082. "{ \"name\": \"limits\", \"$ref\": \"List.Limits\" },"
  2083. "{ \"name\": \"sort\", \"$ref\": \"List.Sort\" }"
  2084. "],"
  2085. "\"returns\": {"
  2086. "\"type\": \"object\","
  2087. "\"properties\": {"
  2088. "\"limits\": { \"$ref\": \"List.LimitsReturned\", \"required\": true },"
  2089. "\"genres\": { \"type\": \"array\", \"required\": true,"
  2090. "\"items\": { \"$ref\": \"Library.Details.Genre\" }"
  2091. "}"
  2092. "}"
  2093. "}"
  2094. "}",
  2095. "\"AudioLibrary.SetArtistDetails\": {"
  2096. "\"type\": \"method\","
  2097. "\"description\": \"Update the given artist with the given details\","
  2098. "\"transport\": \"Response\","
  2099. "\"permission\": \"UpdateData\","
  2100. "\"params\": ["
  2101. "{ \"name\": \"artistid\", \"$ref\": \"Library.Id\", \"required\": true },"
  2102. "{ \"name\": \"artist\", \"$ref\": \"Optional.String\" },"
  2103. "{ \"name\": \"instrument\", \"type\": [ \"null\", { \"$ref\": \"Array.String\", \"required\": true } ], \"default\": null },"
  2104. "{ \"name\": \"style\", \"type\": [ \"null\", { \"$ref\": \"Array.String\", \"required\": true } ], \"default\": null },"
  2105. "{ \"name\": \"mood\", \"type\": [ \"null\", { \"$ref\": \"Array.String\", \"required\": true } ], \"default\": null },"
  2106. "{ \"name\": \"born\", \"$ref\": \"Optional.String\" },"
  2107. "{ \"name\": \"formed\", \"$ref\": \"Optional.String\" },"
  2108. "{ \"name\": \"description\", \"$ref\": \"Optional.String\" },"
  2109. "{ \"name\": \"genre\", \"type\": [ \"null\", { \"$ref\": \"Array.String\", \"required\": true } ], \"default\": null },"
  2110. "{ \"name\": \"died\", \"$ref\": \"Optional.String\" },"
  2111. "{ \"name\": \"disbanded\", \"$ref\": \"Optional.String\" },"
  2112. "{ \"name\": \"yearsactive\", \"type\": [ \"null\", { \"$ref\": \"Array.String\", \"required\": true } ], \"default\": null }"
  2113. "],"
  2114. "\"returns\": \"string\""
  2115. "}",
  2116. "\"AudioLibrary.SetAlbumDetails\": {"
  2117. "\"type\": \"method\","
  2118. "\"description\": \"Update the given album with the given details\","
  2119. "\"transport\": \"Response\","
  2120. "\"permission\": \"UpdateData\","
  2121. "\"params\": ["
  2122. "{ \"name\": \"albumid\", \"$ref\": \"Library.Id\", \"required\": true },"
  2123. "{ \"name\": \"title\", \"$ref\": \"Optional.String\" },"
  2124. "{ \"name\": \"artist\", \"type\": [ \"null\", { \"$ref\": \"Array.String\", \"required\": true } ], \"default\": null },"
  2125. "{ \"name\": \"description\", \"$ref\": \"Optional.String\" },"
  2126. "{ \"name\": \"genre\", \"type\": [ \"null\", { \"$ref\": \"Array.String\", \"required\": true } ], \"default\": null },"
  2127. "{ \"name\": \"theme\", \"type\": [ \"null\", { \"$ref\": \"Array.String\", \"required\": true } ], \"default\": null },"
  2128. "{ \"name\": \"mood\", \"type\": [ \"null\", { \"$ref\": \"Array.String\", \"required\": true } ], \"default\": null },"
  2129. "{ \"name\": \"style\", \"type\": [ \"null\", { \"$ref\": \"Array.String\", \"required\": true } ], \"default\": null },"
  2130. "{ \"name\": \"type\", \"$ref\": \"Optional.String\" },"
  2131. "{ \"name\": \"albumlabel\", \"$ref\": \"Optional.String\" },"
  2132. "{ \"name\": \"rating\", \"$ref\": \"Optional.Integer\" },"
  2133. "{ \"name\": \"year\", \"$ref\": \"Optional.Integer\" }"
  2134. "],"
  2135. "\"returns\": \"string\""
  2136. "}",
  2137. "\"AudioLibrary.SetSongDetails\": {"
  2138. "\"type\": \"method\","
  2139. "\"description\": \"Update the given song with the given details\","
  2140. "\"transport\": \"Response\","
  2141. "\"permission\": \"UpdateData\","
  2142. "\"params\": ["
  2143. "{ \"name\": \"songid\", \"$ref\": \"Library.Id\", \"required\": true },"
  2144. "{ \"name\": \"title\", \"$ref\": \"Optional.String\" },"
  2145. "{ \"name\": \"artist\", \"type\": [ \"null\", { \"$ref\": \"Array.String\", \"required\": true } ], \"default\": null },"
  2146. "{ \"name\": \"albumartist\", \"type\": [ \"null\", { \"$ref\": \"Array.String\", \"required\": true } ], \"default\": null },"
  2147. "{ \"name\": \"genre\", \"type\": [ \"null\", { \"$ref\": \"Array.String\", \"required\": true } ], \"default\": null },"
  2148. "{ \"name\": \"year\", \"$ref\": \"Optional.Integer\" },"
  2149. "{ \"name\": \"rating\", \"$ref\": \"Optional.Integer\" },"
  2150. "{ \"name\": \"album\", \"$ref\": \"Optional.String\" },"
  2151. "{ \"name\": \"track\", \"$ref\": \"Optional.Integer\" },"
  2152. "{ \"name\": \"disc\", \"$ref\": \"Optional.Integer\" },"
  2153. "{ \"name\": \"duration\", \"$ref\": \"Optional.Integer\" },"
  2154. "{ \"name\": \"comment\", \"$ref\": \"Optional.String\" },"
  2155. "{ \"name\": \"musicbrainztrackid\", \"$ref\": \"Optional.String\" },"
  2156. "{ \"name\": \"musicbrainzartistid\", \"$ref\": \"Optional.String\" },"
  2157. "{ \"name\": \"musicbrainzalbumid\", \"$ref\": \"Optional.String\" },"
  2158. "{ \"name\": \"musicbrainzalbumartistid\", \"$ref\": \"Optional.String\" }"
  2159. "],"
  2160. "\"returns\": \"string\""
  2161. "}",
  2162. "\"AudioLibrary.Scan\": {"
  2163. "\"type\": \"method\","
  2164. "\"description\": \"Scans the audio sources for new library items\","
  2165. "\"transport\": \"Response\","
  2166. "\"permission\": \"UpdateData\","
  2167. "\"params\": ["
  2168. "{ \"name\": \"directory\", \"type\": \"string\", \"default\": \"\" }"
  2169. "],"
  2170. "\"returns\": \"string\""
  2171. "}",
  2172. "\"AudioLibrary.Export\": {"
  2173. "\"type\": \"method\","
  2174. "\"description\": \"Exports all items from the audio library\","
  2175. "\"transport\": \"Response\","
  2176. "\"permission\": \"WriteFile\","
  2177. "\"params\": ["
  2178. "{ \"name\": \"options\", \"type\": ["
  2179. "{ \"type\": \"object\", \"required\": true, \"additionalProperties\": false,"
  2180. "\"properties\": {"
  2181. "\"path\": { \"type\": \"string\", \"required\": true, \"minLength\": 1, \"description\": \"Path to the directory to where the data should be exported\" }"
  2182. "}"
  2183. "},"
  2184. "{ \"type\": \"object\", \"required\": true, \"additionalProperties\": false,"
  2185. "\"properties\": {"
  2186. "\"overwrite\": { \"type\": \"boolean\", \"default\": false, \"description\": \"Whether to overwrite existing exported files\" },"
  2187. "\"images\": { \"type\": \"boolean\", \"default\": false, \"description\": \"Whether to export thumbnails and fanart images\" }"
  2188. "}"
  2189. "}"
  2190. "]"
  2191. "}"
  2192. "],"
  2193. "\"returns\": \"string\""
  2194. "}",
  2195. "\"AudioLibrary.Clean\": {"
  2196. "\"type\": \"method\","
  2197. "\"description\": \"Cleans the audio library from non-existent items\","
  2198. "\"transport\": \"Response\","
  2199. "\"permission\": \"RemoveData\","
  2200. "\"params\": [ ],"
  2201. "\"returns\": \"string\""
  2202. "}",
  2203. "\"VideoLibrary.GetMovies\": {"
  2204. "\"type\": \"method\","
  2205. "\"description\": \"Retrieve all movies\","
  2206. "\"transport\": \"Response\","
  2207. "\"permission\": \"ReadData\","
  2208. "\"params\": ["
  2209. "{ \"name\": \"properties\", \"$ref\": \"Video.Fields.Movie\" },"
  2210. "{ \"name\": \"limits\", \"$ref\": \"List.Limits\" },"
  2211. "{ \"name\": \"sort\", \"$ref\": \"List.Sort\" },"
  2212. "{ \"name\": \"filter\","
  2213. "\"type\": ["
  2214. "{ \"type\": \"object\", \"properties\": { \"genreid\": { \"$ref\": \"Library.Id\", \"required\": true } }, \"additionalProperties\": false },"
  2215. "{ \"type\": \"object\", \"properties\": { \"genre\": { \"type\": \"string\", \"minLength\": 1, \"required\": true } }, \"additionalProperties\": false },"
  2216. "{ \"type\": \"object\", \"properties\": { \"year\": { \"type\": \"integer\", \"minimum\": 0, \"required\": true } }, \"additionalProperties\": false },"
  2217. "{ \"type\": \"object\", \"properties\": { \"actor\": { \"type\": \"string\", \"minLength\": 1, \"required\": true } }, \"additionalProperties\": false },"
  2218. "{ \"type\": \"object\", \"properties\": { \"director\": { \"type\": \"string\", \"minLength\": 1, \"required\": true } }, \"additionalProperties\": false },"
  2219. "{ \"type\": \"object\", \"properties\": { \"studio\": { \"type\": \"string\", \"minLength\": 1, \"required\": true } }, \"additionalProperties\": false },"
  2220. "{ \"type\": \"object\", \"properties\": { \"country\": { \"type\": \"string\", \"minLength\": 1, \"required\": true } }, \"additionalProperties\": false },"
  2221. "{ \"type\": \"object\", \"properties\": { \"setid\": { \"$ref\": \"Library.Id\", \"required\": true } }, \"additionalProperties\": false },"
  2222. "{ \"type\": \"object\", \"properties\": { \"set\": { \"type\": \"string\", \"minLength\": 1, \"required\": true } }, \"additionalProperties\": false },"
  2223. "{ \"type\": \"object\", \"properties\": { \"tag\": { \"type\": \"string\", \"minLength\": 1, \"required\": true } }, \"additionalProperties\": false },"
  2224. "{ \"$ref\": \"List.Filter.Movies\" }"
  2225. "]"
  2226. "}"
  2227. "],"
  2228. "\"returns\": {"
  2229. "\"type\": \"object\","
  2230. "\"properties\": {"
  2231. "\"limits\": { \"$ref\": \"List.LimitsReturned\", \"required\": true },"
  2232. "\"movies\": { \"type\": \"array\","
  2233. "\"items\": { \"$ref\": \"Video.Details.Movie\" }"
  2234. "}"
  2235. "}"
  2236. "}"
  2237. "}",
  2238. "\"VideoLibrary.GetMovieDetails\": {"
  2239. "\"type\": \"method\","
  2240. "\"description\": \"Retrieve details about a specific movie\","
  2241. "\"transport\": \"Response\","
  2242. "\"permission\": \"ReadData\","
  2243. "\"params\": ["
  2244. "{ \"name\": \"movieid\", \"$ref\": \"Library.Id\", \"required\": true },"
  2245. "{ \"name\": \"properties\", \"$ref\": \"Video.Fields.Movie\" }"
  2246. "],"
  2247. "\"returns\": { \"type\": \"object\","
  2248. "\"properties\": {"
  2249. "\"moviedetails\": { \"$ref\": \"Video.Details.Movie\" }"
  2250. "}"
  2251. "}"
  2252. "}",
  2253. "\"VideoLibrary.GetMovieSets\": {"
  2254. "\"type\": \"method\","
  2255. "\"description\": \"Retrieve all movie sets\","
  2256. "\"transport\": \"Response\","
  2257. "\"permission\": \"ReadData\","
  2258. "\"params\": ["
  2259. "{ \"name\": \"properties\", \"$ref\": \"Video.Fields.MovieSet\" },"
  2260. "{ \"name\": \"limits\", \"$ref\": \"List.Limits\" },"
  2261. "{ \"name\": \"sort\", \"$ref\": \"List.Sort\" }"
  2262. "],"
  2263. "\"returns\": { \"type\": \"object\","
  2264. "\"properties\": {"
  2265. "\"limits\": { \"$ref\": \"List.LimitsReturned\", \"required\": true },"
  2266. "\"sets\": { \"type\": \"array\","
  2267. "\"items\": { \"$ref\": \"Video.Details.MovieSet\" }"
  2268. "}"
  2269. "}"
  2270. "}"
  2271. "}",
  2272. "\"VideoLibrary.GetMovieSetDetails\": {"
  2273. "\"type\": \"method\","
  2274. "\"description\": \"Retrieve details about a specific movie set\","
  2275. "\"transport\": \"Response\","
  2276. "\"permission\": \"ReadData\","
  2277. "\"params\": ["
  2278. "{ \"name\": \"setid\", \"$ref\": \"Library.Id\", \"required\": true },"
  2279. "{ \"name\": \"properties\", \"$ref\": \"Video.Fields.MovieSet\" },"
  2280. "{ \"name\": \"movies\", \"type\": \"object\","
  2281. "\"properties\": {"
  2282. "\"properties\": { \"$ref\": \"Video.Fields.Movie\" },"
  2283. "\"limits\": { \"$ref\": \"List.Limits\" },"
  2284. "\"sort\": { \"$ref\": \"List.Sort\" }"
  2285. "}"
  2286. "}"
  2287. "],"
  2288. "\"returns\": { \"type\": \"object\","
  2289. "\"properties\": {"
  2290. "\"setdetails\": { \"$ref\": \"Video.Details.MovieSet.Extended\" }"
  2291. "}"
  2292. "}"
  2293. "}",
  2294. "\"VideoLibrary.GetTVShows\": {"
  2295. "\"type\": \"method\","
  2296. "\"description\": \"Retrieve all tv shows\","
  2297. "\"transport\": \"Response\","
  2298. "\"permission\": \"ReadData\","
  2299. "\"params\": ["
  2300. "{ \"name\": \"properties\", \"$ref\": \"Video.Fields.TVShow\" },"
  2301. "{ \"name\": \"limits\", \"$ref\": \"List.Limits\" },"
  2302. "{ \"name\": \"sort\", \"$ref\": \"List.Sort\" },"
  2303. "{ \"name\": \"filter\","
  2304. "\"type\": ["
  2305. "{ \"type\": \"object\", \"properties\": { \"genreid\": { \"$ref\": \"Library.Id\", \"required\": true } }, \"additionalProperties\": false },"
  2306. "{ \"type\": \"object\", \"properties\": { \"genre\": { \"type\": \"string\", \"minLength\": 1, \"required\": true } }, \"additionalProperties\": false },"
  2307. "{ \"type\": \"object\", \"properties\": { \"year\": { \"type\": \"integer\", \"minimum\": 0, \"required\": true } }, \"additionalProperties\": false },"
  2308. "{ \"type\": \"object\", \"properties\": { \"actor\": { \"type\": \"string\", \"minLength\": 1, \"required\": true } }, \"additionalProperties\": false },"
  2309. "{ \"type\": \"object\", \"properties\": { \"studio\": { \"type\": \"string\", \"minLength\": 1, \"required\": true } }, \"additionalProperties\": false },"
  2310. "{ \"type\": \"object\", \"properties\": { \"tag\": { \"type\": \"string\", \"minLength\": 1, \"required\": true } }, \"additionalProperties\": false },"
  2311. "{ \"$ref\": \"List.Filter.TVShows\" }"
  2312. "]"
  2313. "}"
  2314. "],"
  2315. "\"returns\": { \"type\": \"object\","
  2316. "\"properties\": {"
  2317. "\"limits\": { \"$ref\": \"List.LimitsReturned\", \"required\": true },"
  2318. "\"tvshows\": { \"type\": \"array\","
  2319. "\"items\": { \"$ref\": \"Video.Details.TVShow\" }"
  2320. "}"
  2321. "}"
  2322. "}"
  2323. "}",
  2324. "\"VideoLibrary.GetTVShowDetails\": {"
  2325. "\"type\": \"method\","
  2326. "\"description\": \"Retrieve details about a specific tv show\","
  2327. "\"transport\": \"Response\","
  2328. "\"permission\": \"ReadData\","
  2329. "\"params\": ["
  2330. "{ \"name\": \"tvshowid\", \"$ref\": \"Library.Id\", \"required\": true },"
  2331. "{ \"name\": \"properties\", \"$ref\": \"Video.Fields.TVShow\" }"
  2332. "],"
  2333. "\"returns\": { \"type\": \"object\","
  2334. "\"properties\": {"
  2335. "\"tvshowdetails\": { \"$ref\": \"Video.Details.TVShow\" }"
  2336. "}"
  2337. "}"
  2338. "}",
  2339. "\"VideoLibrary.GetSeasons\": {"
  2340. "\"type\": \"method\","
  2341. "\"description\": \"Retrieve all tv seasons\","
  2342. "\"transport\": \"Response\","
  2343. "\"permission\": \"ReadData\","
  2344. "\"params\": ["
  2345. "{ \"name\": \"tvshowid\", \"$ref\": \"Library.Id\", \"required\": true },"
  2346. "{ \"name\": \"properties\", \"$ref\": \"Video.Fields.Season\" },"
  2347. "{ \"name\": \"limits\", \"$ref\": \"List.Limits\" },"
  2348. "{ \"name\": \"sort\", \"$ref\": \"List.Sort\" }"
  2349. "],"
  2350. "\"returns\": { \"type\": \"object\","
  2351. "\"properties\": {"
  2352. "\"limits\": { \"$ref\": \"List.LimitsReturned\", \"required\": true },"
  2353. "\"seasons\": { \"type\": \"array\","
  2354. "\"items\": { \"$ref\": \"Video.Details.Season\" }"
  2355. "}"
  2356. "}"
  2357. "}"
  2358. "}",
  2359. "\"VideoLibrary.GetEpisodes\": {"
  2360. "\"type\": \"method\","
  2361. "\"description\": \"Retrieve all tv show episodes\","
  2362. "\"transport\": \"Response\","
  2363. "\"permission\": \"ReadData\","
  2364. "\"params\": ["
  2365. "{ \"name\": \"tvshowid\", \"$ref\": \"Library.Id\" },"
  2366. "{ \"name\": \"season\", \"type\": \"integer\", \"minimum\": 0, \"default\": -1 },"
  2367. "{ \"name\": \"properties\", \"$ref\": \"Video.Fields.Episode\" },"
  2368. "{ \"name\": \"limits\", \"$ref\": \"List.Limits\" },"
  2369. "{ \"name\": \"sort\", \"$ref\": \"List.Sort\" },"
  2370. "{ \"name\": \"filter\","
  2371. "\"type\": ["
  2372. "{ \"type\": \"object\", \"properties\": { \"genreid\": { \"$ref\": \"Library.Id\", \"required\": true, \"description\": \"Requires tvshowid to be set\" } }, \"additionalProperties\": false },"
  2373. "{ \"type\": \"object\", \"properties\": { \"genre\": { \"type\": \"string\", \"minLength\": 1, \"required\": true, \"description\": \"Requires tvshowid to be set\" } }, \"additionalProperties\": false },"
  2374. "{ \"type\": \"object\", \"properties\": { \"year\": { \"type\": \"integer\", \"minimum\": 0, \"required\": true } }, \"additionalProperties\": false },"
  2375. "{ \"type\": \"object\", \"properties\": { \"actor\": { \"type\": \"string\", \"minLength\": 1, \"required\": true, \"description\": \"Requires tvshowid to be set\" } }, \"additionalProperties\": false },"
  2376. "{ \"type\": \"object\", \"properties\": { \"director\": { \"type\": \"string\", \"minLength\": 1, \"required\": true } }, \"additionalProperties\": false },"
  2377. "{ \"$ref\": \"List.Filter.Episodes\" }"
  2378. "]"
  2379. "}"
  2380. "],"
  2381. "\"returns\": { \"type\": \"object\","
  2382. "\"properties\": {"
  2383. "\"limits\": { \"$ref\": \"List.LimitsReturned\", \"required\": true },"
  2384. "\"episodes\": { \"type\": \"array\","
  2385. "\"items\": { \"$ref\": \"Video.Details.Episode\" }"
  2386. "}"
  2387. "}"
  2388. "}"
  2389. "}",
  2390. "\"VideoLibrary.GetEpisodeDetails\": {"
  2391. "\"type\": \"method\","
  2392. "\"description\": \"Retrieve details about a specific tv show episode\","
  2393. "\"transport\": \"Response\","
  2394. "\"permission\": \"ReadData\","
  2395. "\"params\": ["
  2396. "{ \"name\": \"episodeid\", \"$ref\": \"Library.Id\", \"required\": true },"
  2397. "{ \"name\": \"properties\", \"$ref\": \"Video.Fields.Episode\" }"
  2398. "],"
  2399. "\"returns\": { \"type\": \"object\","
  2400. "\"properties\": {"
  2401. "\"episodedetails\": { \"$ref\": \"Video.Details.Episode\" }"
  2402. "}"
  2403. "}"
  2404. "}",
  2405. "\"VideoLibrary.GetMusicVideos\": {"
  2406. "\"type\": \"method\","
  2407. "\"description\": \"Retrieve all music videos\","
  2408. "\"transport\": \"Response\","
  2409. "\"permission\": \"ReadData\","
  2410. "\"params\": ["
  2411. "{ \"name\": \"properties\", \"$ref\": \"Video.Fields.MusicVideo\" },"
  2412. "{ \"name\": \"limits\", \"$ref\": \"List.Limits\" },"
  2413. "{ \"name\": \"sort\", \"$ref\": \"List.Sort\" },"
  2414. "{ \"name\": \"filter\","
  2415. "\"type\": ["
  2416. "{ \"type\": \"object\", \"properties\": { \"artist\": { \"type\": \"string\", \"minLength\": 1, \"required\": true } }, \"additionalProperties\": false },"
  2417. "{ \"type\": \"object\", \"properties\": { \"genreid\": { \"$ref\": \"Library.Id\", \"required\": true } }, \"additionalProperties\": false },"
  2418. "{ \"type\": \"object\", \"properties\": { \"genre\": { \"type\": \"string\", \"minLength\": 1, \"required\": true } }, \"additionalProperties\": false },"
  2419. "{ \"type\": \"object\", \"properties\": { \"year\": { \"type\": \"integer\", \"minimum\": 0, \"required\": true } }, \"additionalProperties\": false },"
  2420. "{ \"type\": \"object\", \"properties\": { \"director\": { \"type\": \"string\", \"minLength\": 1, \"required\": true } }, \"additionalProperties\": false },"
  2421. "{ \"type\": \"object\", \"properties\": { \"studio\": { \"type\": \"string\", \"minLength\": 1, \"required\": true } }, \"additionalProperties\": false },"
  2422. "{ \"type\": \"object\", \"properties\": { \"tag\": { \"type\": \"string\", \"minLength\": 1, \"required\": true } }, \"additionalProperties\": false },"
  2423. "{ \"$ref\": \"List.Filter.MusicVideos\" }"
  2424. "]"
  2425. "}"
  2426. "],"
  2427. "\"returns\": { \"type\": \"object\","
  2428. "\"properties\": {"
  2429. "\"limits\": { \"$ref\": \"List.LimitsReturned\", \"required\": true },"
  2430. "\"musicvideos\": { \"type\": \"array\","
  2431. "\"items\": { \"$ref\": \"Video.Details.MusicVideo\" }"
  2432. "}"
  2433. "}"
  2434. "}"
  2435. "}",
  2436. "\"VideoLibrary.GetMusicVideoDetails\": {"
  2437. "\"type\": \"method\","
  2438. "\"description\": \"Retrieve details about a specific music video\","
  2439. "\"transport\": \"Response\","
  2440. "\"permission\": \"ReadData\","
  2441. "\"params\": ["
  2442. "{ \"name\": \"musicvideoid\", \"$ref\": \"Library.Id\", \"required\": true },"
  2443. "{ \"name\": \"properties\", \"$ref\": \"Video.Fields.MusicVideo\" }"
  2444. "],"
  2445. "\"returns\": { \"type\": \"object\","
  2446. "\"properties\": {"
  2447. "\"musicvideodetails\": { \"$ref\": \"Video.Details.MusicVideo\" }"
  2448. "}"
  2449. "}"
  2450. "}",
  2451. "\"VideoLibrary.GetRecentlyAddedMovies\": {"
  2452. "\"type\": \"method\","
  2453. "\"description\": \"Retrieve all recently added movies\","
  2454. "\"transport\": \"Response\","
  2455. "\"permission\": \"ReadData\","
  2456. "\"params\": ["
  2457. "{ \"name\": \"properties\", \"$ref\": \"Video.Fields.Movie\" },"
  2458. "{ \"name\": \"limits\", \"$ref\": \"List.Limits\" },"
  2459. "{ \"name\": \"sort\", \"$ref\": \"List.Sort\" }"
  2460. "],"
  2461. "\"returns\": { \"type\": \"object\","
  2462. "\"properties\": {"
  2463. "\"limits\": { \"$ref\": \"List.LimitsReturned\", \"required\": true },"
  2464. "\"movies\": { \"type\": \"array\","
  2465. "\"items\": { \"$ref\": \"Video.Details.Movie\" }"
  2466. "}"
  2467. "}"
  2468. "}"
  2469. "}",
  2470. "\"VideoLibrary.GetRecentlyAddedEpisodes\": {"
  2471. "\"type\": \"method\","
  2472. "\"description\": \"Retrieve all recently added tv episodes\","
  2473. "\"transport\": \"Response\","
  2474. "\"permission\": \"ReadData\","
  2475. "\"params\": ["
  2476. "{ \"name\": \"properties\", \"$ref\": \"Video.Fields.Episode\" },"
  2477. "{ \"name\": \"limits\", \"$ref\": \"List.Limits\" },"
  2478. "{ \"name\": \"sort\", \"$ref\": \"List.Sort\" }"
  2479. "],"
  2480. "\"returns\": { \"type\": \"object\","
  2481. "\"properties\": {"
  2482. "\"limits\": { \"$ref\": \"List.LimitsReturned\", \"required\": true },"
  2483. "\"episodes\": { \"type\": \"array\","
  2484. "\"items\": { \"$ref\": \"Video.Details.Episode\" }"
  2485. "}"
  2486. "}"
  2487. "}"
  2488. "}",
  2489. "\"VideoLibrary.GetRecentlyAddedMusicVideos\": {"
  2490. "\"type\": \"method\","
  2491. "\"description\": \"Retrieve all recently added music videos\","
  2492. "\"transport\": \"Response\","
  2493. "\"permission\": \"ReadData\","
  2494. "\"params\": ["
  2495. "{ \"name\": \"properties\", \"$ref\": \"Video.Fields.MusicVideo\" },"
  2496. "{ \"name\": \"limits\", \"$ref\": \"List.Limits\" },"
  2497. "{ \"name\": \"sort\", \"$ref\": \"List.Sort\" }"
  2498. "],"
  2499. "\"returns\": { \"type\": \"object\","
  2500. "\"properties\": {"
  2501. "\"limits\": { \"$ref\": \"List.LimitsReturned\", \"required\": true },"
  2502. "\"musicvideos\": { \"type\": \"array\","
  2503. "\"items\": { \"$ref\": \"Video.Details.MusicVideo\" }"
  2504. "}"
  2505. "}"
  2506. "}"
  2507. "}",
  2508. "\"VideoLibrary.GetGenres\": {"
  2509. "\"type\": \"method\","
  2510. "\"description\": \"Retrieve all genres\","
  2511. "\"transport\": \"Response\","
  2512. "\"permission\": \"ReadData\","
  2513. "\"params\": ["
  2514. "{ \"name\": \"type\", \"type\": \"string\", \"required\": true, \"enum\": [ \"movie\", \"tvshow\", \"musicvideo\"] },"
  2515. "{ \"name\": \"properties\", \"$ref\": \"Library.Fields.Genre\" },"
  2516. "{ \"name\": \"limits\", \"$ref\": \"List.Limits\" },"
  2517. "{ \"name\": \"sort\", \"$ref\": \"List.Sort\" }"
  2518. "],"
  2519. "\"returns\": {"
  2520. "\"type\": \"object\","
  2521. "\"properties\": {"
  2522. "\"limits\": { \"$ref\": \"List.LimitsReturned\", \"required\": true },"
  2523. "\"genres\": { \"type\": \"array\", \"required\": true,"
  2524. "\"items\": { \"$ref\": \"Library.Details.Genre\" }"
  2525. "}"
  2526. "}"
  2527. "}"
  2528. "}",
  2529. "\"VideoLibrary.SetMovieDetails\": {"
  2530. "\"type\": \"method\","
  2531. "\"description\": \"Update the given movie with the given details\","
  2532. "\"transport\": \"Response\","
  2533. "\"permission\": \"UpdateData\","
  2534. "\"params\": ["
  2535. "{ \"name\": \"movieid\", \"$ref\": \"Library.Id\", \"required\": true },"
  2536. "{ \"name\": \"title\", \"$ref\": \"Optional.String\" },"
  2537. "{ \"name\": \"playcount\", \"$ref\": \"Optional.Integer\" },"
  2538. "{ \"name\": \"runtime\", \"$ref\": \"Optional.Integer\", \"description\": \"Runtime in seconds\" },"
  2539. "{ \"name\": \"director\", \"type\": [ \"null\", { \"$ref\": \"Array.String\", \"required\": true } ], \"default\": null },"
  2540. "{ \"name\": \"studio\", \"type\": [ \"null\", { \"$ref\": \"Array.String\", \"required\": true } ], \"default\": null },"
  2541. "{ \"name\": \"year\", \"$ref\": \"Optional.Integer\" },"
  2542. "{ \"name\": \"plot\", \"$ref\": \"Optional.String\" },"
  2543. "{ \"name\": \"genre\", \"type\": [ \"null\", { \"$ref\": \"Array.String\", \"required\": true } ], \"default\": null },"
  2544. "{ \"name\": \"rating\", \"$ref\": \"Optional.Number\" },"
  2545. "{ \"name\": \"mpaa\", \"$ref\": \"Optional.String\" },"
  2546. "{ \"name\": \"imdbnumber\", \"$ref\": \"Optional.String\" },"
  2547. "{ \"name\": \"votes\", \"$ref\": \"Optional.String\" },"
  2548. "{ \"name\": \"lastplayed\", \"$ref\": \"Optional.String\" },"
  2549. "{ \"name\": \"originaltitle\", \"$ref\": \"Optional.String\" },"
  2550. "{ \"name\": \"trailer\", \"$ref\": \"Optional.String\" },"
  2551. "{ \"name\": \"tagline\", \"$ref\": \"Optional.String\" },"
  2552. "{ \"name\": \"plotoutline\", \"$ref\": \"Optional.String\" },"
  2553. "{ \"name\": \"writer\", \"type\": [ \"null\", { \"$ref\": \"Array.String\", \"required\": true } ], \"default\": null },"
  2554. "{ \"name\": \"country\", \"type\": [ \"null\", { \"$ref\": \"Array.String\", \"required\": true } ], \"default\": null },"
  2555. "{ \"name\": \"top250\", \"$ref\": \"Optional.Integer\" },"
  2556. "{ \"name\": \"sorttitle\", \"$ref\": \"Optional.String\" },"
  2557. "{ \"name\": \"set\", \"$ref\": \"Optional.String\" },"
  2558. "{ \"name\": \"showlink\", \"type\": [ \"null\", { \"$ref\": \"Array.String\", \"required\": true } ], \"default\": null },"
  2559. "{ \"name\": \"thumbnail\", \"$ref\": \"Optional.String\" },"
  2560. "{ \"name\": \"fanart\", \"$ref\": \"Optional.String\" },"
  2561. "{ \"name\": \"tag\", \"type\": [ \"null\", { \"$ref\": \"Array.String\", \"required\": true } ], \"default\": null },"
  2562. "{ \"name\": \"art\", \"type\": [ \"null\", { \"$ref\": \"Media.Artwork\", \"required\": true } ], \"default\": null },"
  2563. "{ \"name\": \"resume\", \"type\": [ \"null\", { \"$ref\": \"Video.Resume\", \"required\": true } ], \"default\": null }"
  2564. "],"
  2565. "\"returns\": \"string\""
  2566. "}",
  2567. "\"VideoLibrary.SetTVShowDetails\": {"
  2568. "\"type\": \"method\","
  2569. "\"description\": \"Update the given tvshow with the given details\","
  2570. "\"transport\": \"Response\","
  2571. "\"permission\": \"UpdateData\","
  2572. "\"params\": ["
  2573. "{ \"name\": \"tvshowid\", \"$ref\": \"Library.Id\", \"required\": true },"
  2574. "{ \"name\": \"title\", \"$ref\": \"Optional.String\" },"
  2575. "{ \"name\": \"playcount\", \"$ref\": \"Optional.Integer\" },"
  2576. "{ \"name\": \"studio\", \"type\": [ \"null\", { \"$ref\": \"Array.String\", \"required\": true } ], \"default\": null },"
  2577. "{ \"name\": \"plot\", \"$ref\": \"Optional.String\" },"
  2578. "{ \"name\": \"genre\", \"type\": [ \"null\", { \"$ref\": \"Array.String\", \"required\": true } ], \"default\": null },"
  2579. "{ \"name\": \"rating\", \"$ref\": \"Optional.Number\" },"
  2580. "{ \"name\": \"mpaa\", \"$ref\": \"Optional.String\" },"
  2581. "{ \"name\": \"imdbnumber\", \"$ref\": \"Optional.String\" },"
  2582. "{ \"name\": \"premiered\", \"$ref\": \"Optional.String\" },"
  2583. "{ \"name\": \"votes\", \"$ref\": \"Optional.String\" },"
  2584. "{ \"name\": \"lastplayed\", \"$ref\": \"Optional.String\" },"
  2585. "{ \"name\": \"originaltitle\", \"$ref\": \"Optional.String\" },"
  2586. "{ \"name\": \"sorttitle\", \"$ref\": \"Optional.String\" },"
  2587. "{ \"name\": \"episodeguide\", \"$ref\": \"Optional.String\" },"
  2588. "{ \"name\": \"thumbnail\", \"$ref\": \"Optional.String\" },"
  2589. "{ \"name\": \"fanart\", \"$ref\": \"Optional.String\" },"
  2590. "{ \"name\": \"tag\", \"type\": [ \"null\", { \"$ref\": \"Array.String\", \"required\": true } ], \"default\": null },"
  2591. "{ \"name\": \"art\", \"type\": [ \"null\", { \"$ref\": \"Media.Artwork\", \"required\": true } ], \"default\": null }"
  2592. "],"
  2593. "\"returns\": \"string\""
  2594. "}",
  2595. "\"VideoLibrary.SetEpisodeDetails\": {"
  2596. "\"type\": \"method\","
  2597. "\"description\": \"Update the given episode with the given details\","
  2598. "\"transport\": \"Response\","
  2599. "\"permission\": \"UpdateData\","
  2600. "\"params\": ["
  2601. "{ \"name\": \"episodeid\", \"$ref\": \"Library.Id\", \"required\": true },"
  2602. "{ \"name\": \"title\", \"$ref\": \"Optional.String\" },"
  2603. "{ \"name\": \"playcount\", \"$ref\": \"Optional.Integer\" },"
  2604. "{ \"name\": \"runtime\", \"$ref\": \"Optional.Integer\", \"description\": \"Runtime in seconds\" },"
  2605. "{ \"name\": \"director\", \"type\": [ \"null\", { \"$ref\": \"Array.String\", \"required\": true } ], \"default\": null },"
  2606. "{ \"name\": \"plot\", \"$ref\": \"Optional.String\" },"
  2607. "{ \"name\": \"rating\", \"$ref\": \"Optional.Number\" },"
  2608. "{ \"name\": \"votes\", \"$ref\": \"Optional.String\" },"
  2609. "{ \"name\": \"lastplayed\", \"$ref\": \"Optional.String\" },"
  2610. "{ \"name\": \"writer\", \"type\": [ \"null\", { \"$ref\": \"Array.String\", \"required\": true } ], \"default\": null },"
  2611. "{ \"name\": \"firstaired\", \"$ref\": \"Optional.String\" },"
  2612. "{ \"name\": \"productioncode\", \"$ref\": \"Optional.String\" },"
  2613. "{ \"name\": \"season\", \"$ref\": \"Optional.Integer\" },"
  2614. "{ \"name\": \"episode\", \"$ref\": \"Optional.Integer\" },"
  2615. "{ \"name\": \"originaltitle\", \"$ref\": \"Optional.String\" },"
  2616. "{ \"name\": \"thumbnail\", \"$ref\": \"Optional.String\" },"
  2617. "{ \"name\": \"fanart\", \"$ref\": \"Optional.String\" },"
  2618. "{ \"name\": \"art\", \"type\": [ \"null\", { \"$ref\": \"Media.Artwork\", \"required\": true } ], \"default\": null },"
  2619. "{ \"name\": \"resume\", \"type\": [ \"null\", { \"$ref\": \"Video.Resume\", \"required\": true } ], \"default\": null }"
  2620. "],"
  2621. "\"returns\": \"string\""
  2622. "}",
  2623. "\"VideoLibrary.SetMusicVideoDetails\": {"
  2624. "\"type\": \"method\","
  2625. "\"description\": \"Update the given music video with the given details\","
  2626. "\"transport\": \"Response\","
  2627. "\"permission\": \"UpdateData\","
  2628. "\"params\": ["
  2629. "{ \"name\": \"musicvideoid\", \"$ref\": \"Library.Id\", \"required\": true },"
  2630. "{ \"name\": \"title\", \"$ref\": \"Optional.String\" },"
  2631. "{ \"name\": \"playcount\", \"$ref\": \"Optional.Integer\" },"
  2632. "{ \"name\": \"runtime\", \"$ref\": \"Optional.Integer\", \"description\": \"Runtime in seconds\" },"
  2633. "{ \"name\": \"director\", \"type\": [ \"null\", { \"$ref\": \"Array.String\", \"required\": true } ], \"default\": null },"
  2634. "{ \"name\": \"studio\", \"type\": [ \"null\", { \"$ref\": \"Array.String\", \"required\": true } ], \"default\": null },"
  2635. "{ \"name\": \"year\", \"$ref\": \"Optional.Integer\" },"
  2636. "{ \"name\": \"plot\", \"$ref\": \"Optional.String\" },"
  2637. "{ \"name\": \"album\", \"$ref\": \"Optional.String\" },"
  2638. "{ \"name\": \"artist\", \"type\": [ \"null\", { \"$ref\": \"Array.String\", \"required\": true } ] },"
  2639. "{ \"name\": \"genre\", \"type\": [ \"null\", { \"$ref\": \"Array.String\", \"required\": true } ], \"default\": null },"
  2640. "{ \"name\": \"track\", \"$ref\": \"Optional.Integer\" },"
  2641. "{ \"name\": \"lastplayed\", \"$ref\": \"Optional.String\" },"
  2642. "{ \"name\": \"thumbnail\", \"$ref\": \"Optional.String\" },"
  2643. "{ \"name\": \"fanart\", \"$ref\": \"Optional.String\" },"
  2644. "{ \"name\": \"tag\", \"type\": [ \"null\", { \"$ref\": \"Array.String\", \"required\": true } ], \"default\": null },"
  2645. "{ \"name\": \"art\", \"type\": [ \"null\", { \"$ref\": \"Media.Artwork\", \"required\": true } ], \"default\": null },"
  2646. "{ \"name\": \"resume\", \"type\": [ \"null\", { \"$ref\": \"Video.Resume\", \"required\": true } ], \"default\": null }"
  2647. "],"
  2648. "\"returns\": \"string\""
  2649. "}",
  2650. "\"VideoLibrary.RemoveMovie\": {"
  2651. "\"type\": \"method\","
  2652. "\"description\": \"Removes the given movie from the library\","
  2653. "\"transport\": \"Response\","
  2654. "\"permission\": \"RemoveData\","
  2655. "\"params\": ["
  2656. "{ \"name\": \"movieid\", \"$ref\": \"Library.Id\", \"required\": true }"
  2657. "],"
  2658. "\"returns\": \"string\""
  2659. "}",
  2660. "\"VideoLibrary.RemoveTVShow\": {"
  2661. "\"type\": \"method\","
  2662. "\"description\": \"Removes the given tv show from the library\","
  2663. "\"transport\": \"Response\","
  2664. "\"permission\": \"RemoveData\","
  2665. "\"params\": ["
  2666. "{ \"name\": \"tvshowid\", \"$ref\": \"Library.Id\", \"required\": true }"
  2667. "],"
  2668. "\"returns\": \"string\""
  2669. "}",
  2670. "\"VideoLibrary.RemoveEpisode\": {"
  2671. "\"type\": \"method\","
  2672. "\"description\": \"Removes the given episode from the library\","
  2673. "\"transport\": \"Response\","
  2674. "\"permission\": \"RemoveData\","
  2675. "\"params\": ["
  2676. "{ \"name\": \"episodeid\", \"$ref\": \"Library.Id\", \"required\": true }"
  2677. "],"
  2678. "\"returns\": \"string\""
  2679. "}",
  2680. "\"VideoLibrary.RemoveMusicVideo\": {"
  2681. "\"type\": \"method\","
  2682. "\"description\": \"Removes the given music video from the library\","
  2683. "\"transport\": \"Response\","
  2684. "\"permission\": \"RemoveData\","
  2685. "\"params\": ["
  2686. "{ \"name\": \"musicvideoid\", \"$ref\": \"Library.Id\", \"required\": true }"
  2687. "],"
  2688. "\"returns\": \"string\""
  2689. "}",
  2690. "\"VideoLibrary.Scan\": {"
  2691. "\"type\": \"method\","
  2692. "\"description\": \"Scans the video sources for new library items\","
  2693. "\"transport\": \"Response\","
  2694. "\"permission\": \"UpdateData\","
  2695. "\"params\": ["
  2696. "{ \"name\": \"directory\", \"type\": \"string\", \"default\": \"\" }"
  2697. "],"
  2698. "\"returns\": \"string\""
  2699. "}",
  2700. "\"VideoLibrary.Export\": {"
  2701. "\"type\": \"method\","
  2702. "\"description\": \"Exports all items from the video library\","
  2703. "\"transport\": \"Response\","
  2704. "\"permission\": \"WriteFile\","
  2705. "\"params\": ["
  2706. "{ \"name\": \"options\", \"type\": ["
  2707. "{ \"type\": \"object\", \"required\": true, \"additionalProperties\": false,"
  2708. "\"properties\": {"
  2709. "\"path\": { \"type\": \"string\", \"required\": true, \"minLength\": 1, \"description\": \"Path to the directory to where the data should be exported\" }"
  2710. "}"
  2711. "},"
  2712. "{ \"type\": \"object\", \"required\": true, \"additionalProperties\": false,"
  2713. "\"properties\": {"
  2714. "\"overwrite\": { \"type\": \"boolean\", \"default\": false, \"description\": \"Whether to overwrite existing exported files\" },"
  2715. "\"images\": { \"type\": \"boolean\", \"default\": false, \"description\": \"Whether to export thumbnails and fanart images\" },"
  2716. "\"actorthumbs\": { \"type\": \"boolean\", \"default\": false, \"description\": \"Whether to export actor thumbnails\" }"
  2717. "}"
  2718. "}"
  2719. "]"
  2720. "}"
  2721. "],"
  2722. "\"returns\": \"string\""
  2723. "}",
  2724. "\"VideoLibrary.Clean\": {"
  2725. "\"type\": \"method\","
  2726. "\"description\": \"Cleans the video library from non-existent items\","
  2727. "\"transport\": \"Response\","
  2728. "\"permission\": \"RemoveData\","
  2729. "\"params\": [ ],"
  2730. "\"returns\": \"string\""
  2731. "}",
  2732. "\"GUI.ActivateWindow\": {"
  2733. "\"type\": \"method\","
  2734. "\"description\": \"Activates the given window\","
  2735. "\"transport\": \"Response\","
  2736. "\"permission\": \"ControlGUI\","
  2737. "\"params\": ["
  2738. "{ \"name\": \"window\", \"$ref\": \"GUI.Window\", \"required\": true },"
  2739. "{ \"name\": \"parameters\", \"type\": \"array\", \"items\": { \"type\": \"string\", \"minLength\": 1, \"required\": true }, \"minItems\": 1 }"
  2740. "],"
  2741. "\"returns\": \"string\""
  2742. "}",
  2743. "\"GUI.ShowNotification\": {"
  2744. "\"type\": \"method\","
  2745. "\"description\": \"Shows a GUI notification\","
  2746. "\"transport\": \"Response\","
  2747. "\"permission\": \"ControlGUI\","
  2748. "\"params\": ["
  2749. "{ \"name\": \"title\", \"type\": \"string\", \"required\": true },"
  2750. "{ \"name\": \"message\", \"type\": \"string\", \"required\": true },"
  2751. "{ \"name\": \"image\", \"type\": ["
  2752. "{ \"type\": \"string\", \"required\": true, \"enum\": [ \"info\", \"warning\", \"error\" ] },"
  2753. "{ \"type\": \"string\", \"required\": true }"
  2754. "], \"default\": \"\""
  2755. "},"
  2756. "{ \"name\": \"displaytime\", \"type\": \"integer\", \"minimum\": 1500, \"default\": 5000, \"description\": \"The time in milliseconds the notification will be visible\" }"
  2757. "],"
  2758. "\"returns\": \"string\""
  2759. "}",
  2760. "\"GUI.GetProperties\": {"
  2761. "\"type\": \"method\","
  2762. "\"description\": \"Retrieves the values of the given properties\","
  2763. "\"transport\": \"Response\","
  2764. "\"permission\": \"ReadData\","
  2765. "\"params\": ["
  2766. "{ \"name\": \"properties\", \"type\": \"array\", \"uniqueItems\": true, \"required\": true, \"items\": { \"$ref\": \"GUI.Property.Name\" } }"
  2767. "],"
  2768. "\"returns\": { \"$ref\": \"GUI.Property.Value\", \"required\": true }"
  2769. "}",
  2770. "\"GUI.SetFullscreen\": {"
  2771. "\"type\": \"method\","
  2772. "\"description\": \"Toggle fullscreen/GUI\","
  2773. "\"transport\": \"Response\","
  2774. "\"permission\": \"ControlGUI\","
  2775. "\"params\": ["
  2776. "{ \"name\": \"fullscreen\", \"required\": true, \"$ref\": \"Global.Toggle\" }"
  2777. "],"
  2778. "\"returns\": { \"type\": \"boolean\", \"description\": \"Fullscreen state\" }"
  2779. "}",
  2780. "\"Addons.GetAddons\": {"
  2781. "\"type\": \"method\","
  2782. "\"description\": \"Gets all available addons\","
  2783. "\"transport\": \"Response\","
  2784. "\"permission\": \"ReadData\","
  2785. "\"params\": ["
  2786. "{ \"name\": \"type\", \"$ref\": \"Addon.Types\" },"
  2787. "{ \"name\": \"content\", \"$ref\": \"Addon.Content\", \"description\": \"Content provided by the addon. Only considered for plugins and scripts.\" },"
  2788. "{ \"name\": \"enabled\", \"type\": [ { \"type\": \"boolean\" }, { \"type\": \"string\", \"enum\": [ \"all\" ] } ], \"default\": \"all\" },"
  2789. "{ \"name\": \"properties\", \"$ref\": \"Addon.Fields\" },"
  2790. "{ \"name\": \"limits\", \"$ref\": \"List.Limits\" }"
  2791. "],"
  2792. "\"returns\": { \"type\": \"object\","
  2793. "\"properties\": {"
  2794. "\"limits\": { \"$ref\": \"List.LimitsReturned\", \"required\": true },"
  2795. "\"addons\": { \"type\": \"array\","
  2796. "\"items\": { \"$ref\": \"Addon.Details\" }"
  2797. "}"
  2798. "}"
  2799. "}"
  2800. "}",
  2801. "\"Addons.GetAddonDetails\": {"
  2802. "\"type\": \"method\","
  2803. "\"description\": \"Gets the details of a specific addon\","
  2804. "\"transport\": \"Response\","
  2805. "\"permission\": \"ReadData\","
  2806. "\"params\": ["
  2807. "{ \"name\": \"addonid\", \"type\": \"string\", \"required\": true },"
  2808. "{ \"name\": \"properties\", \"$ref\": \"Addon.Fields\" }"
  2809. "],"
  2810. "\"returns\": { \"type\": \"object\","
  2811. "\"properties\": {"
  2812. "\"limits\": { \"$ref\": \"List.LimitsReturned\", \"required\": true },"
  2813. "\"addon\": { \"$ref\": \"Addon.Details\", \"required\": true }"
  2814. "}"
  2815. "}"
  2816. "}",
  2817. "\"Addons.SetAddonEnabled\": {"
  2818. "\"type\": \"method\","
  2819. "\"description\": \"Enables/Disables a specific addon\","
  2820. "\"transport\": \"Response\","
  2821. "\"permission\": \"ManageAddon\","
  2822. "\"params\": ["
  2823. "{ \"name\": \"addonid\", \"type\": \"string\", \"required\": true },"
  2824. "{ \"name\": \"enabled\", \"$ref\": \"Global.Toggle\", \"required\": true }"
  2825. "],"
  2826. "\"returns\": \"string\""
  2827. "}",
  2828. "\"Addons.ExecuteAddon\": {"
  2829. "\"type\": \"method\","
  2830. "\"description\": \"Executes the given addon with the given parameters (if possible)\","
  2831. "\"transport\": \"Response\","
  2832. "\"permission\": \"ExecuteAddon\","
  2833. "\"params\": ["
  2834. "{ \"name\": \"addonid\", \"type\": \"string\", \"required\": true },"
  2835. "{ \"name\": \"params\", \"type\": ["
  2836. "{ \"type\": \"object\", \"additionalProperties\": { \"type\": \"string\" } },"
  2837. "{ \"type\": \"array\", \"items\": { \"type\": \"string\" } }"
  2838. "]"
  2839. "},"
  2840. "{ \"name\": \"wait\", \"type\": \"boolean\", \"default\": false }"
  2841. "],"
  2842. "\"returns\": \"string\""
  2843. "}",
  2844. "\"PVR.GetProperties\": {"
  2845. "\"type\": \"method\","
  2846. "\"description\": \"Retrieves the values of the given properties\","
  2847. "\"transport\": \"Response\","
  2848. "\"permission\": \"ReadData\","
  2849. "\"params\": ["
  2850. "{ \"name\": \"properties\", \"type\": \"array\", \"uniqueItems\": true, \"required\": true, \"items\": { \"$ref\": \"PVR.Property.Name\" } }"
  2851. "],"
  2852. "\"returns\": { \"$ref\": \"PVR.Property.Value\", \"required\": true }"
  2853. "}",
  2854. "\"PVR.GetChannelGroups\": {"
  2855. "\"type\": \"method\","
  2856. "\"description\": \"Retrieves the channel groups for the specified type\","
  2857. "\"transport\": \"Response\","
  2858. "\"permission\": \"ReadData\","
  2859. "\"params\": ["
  2860. "{ \"name\": \"channeltype\", \"$ref\": \"PVR.Channel.Type\", \"required\": true },"
  2861. "{ \"name\": \"limits\", \"$ref\": \"List.Limits\" }"
  2862. "],"
  2863. "\"returns\": { \"type\": \"object\","
  2864. "\"properties\": {"
  2865. "\"limits\": { \"$ref\": \"List.LimitsReturned\", \"required\": true },"
  2866. "\"channelgroups\": { \"type\": \"array\", \"required\": true,"
  2867. "\"items\": { \"$ref\": \"PVR.Details.ChannelGroup\" }"
  2868. "}"
  2869. "}"
  2870. "}"
  2871. "}",
  2872. "\"PVR.GetChannelGroupDetails\": {"
  2873. "\"type\": \"method\","
  2874. "\"description\": \"Retrieves the details of a specific channel group\","
  2875. "\"transport\": \"Response\","
  2876. "\"permission\": \"ReadData\","
  2877. "\"params\": ["
  2878. "{ \"name\": \"channelgroupid\", \"$ref\": \"PVR.ChannelGroup.Id\", \"required\": true },"
  2879. "{ \"name\": \"channels\", \"type\": \"object\","
  2880. "\"properties\": {"
  2881. "\"properties\": { \"$ref\": \"PVR.Fields.Channel\" },"
  2882. "\"limits\": { \"$ref\": \"List.Limits\" }"
  2883. "}"
  2884. "}"
  2885. "],"
  2886. "\"returns\": { \"type\": \"object\","
  2887. "\"properties\": {"
  2888. "\"channelgroupdetails\": { \"$ref\": \"PVR.Details.ChannelGroup.Extended\" }"
  2889. "}"
  2890. "}"
  2891. "}",
  2892. "\"PVR.GetChannels\": {"
  2893. "\"type\": \"method\","
  2894. "\"description\": \"Retrieves the channel list\","
  2895. "\"transport\": \"Response\","
  2896. "\"permission\": \"ReadData\","
  2897. "\"params\": ["
  2898. "{ \"name\": \"channelgroupid\", \"$ref\": \"PVR.ChannelGroup.Id\", \"required\": true },"
  2899. "{ \"name\": \"properties\", \"$ref\": \"PVR.Fields.Channel\" },"
  2900. "{ \"name\": \"limits\", \"$ref\": \"List.Limits\" }"
  2901. "],"
  2902. "\"returns\": { \"type\": \"object\","
  2903. "\"properties\": {"
  2904. "\"limits\": { \"$ref\": \"List.LimitsReturned\", \"required\": true },"
  2905. "\"channels\": { \"type\": \"array\", \"required\": true,"
  2906. "\"items\": { \"$ref\": \"PVR.Details.Channel\" }"
  2907. "}"
  2908. "}"
  2909. "}"
  2910. "}",
  2911. "\"PVR.GetChannelDetails\": {"
  2912. "\"type\": \"method\","
  2913. "\"description\": \"Retrieves the details of a specific channel\","
  2914. "\"transport\": \"Response\","
  2915. "\"permission\": \"ReadData\","
  2916. "\"params\": ["
  2917. "{ \"name\": \"channelid\", \"$ref\": \"Library.Id\", \"required\": true },"
  2918. "{ \"name\": \"properties\", \"$ref\": \"PVR.Fields.Channel\" }"
  2919. "],"
  2920. "\"returns\": { \"type\": \"object\","
  2921. "\"properties\": {"
  2922. "\"channeldetails\": { \"$ref\": \"PVR.Details.Channel\" }"
  2923. "}"
  2924. "}"
  2925. "}",
  2926. "\"PVR.Record\": {"
  2927. "\"type\": \"method\","
  2928. "\"description\": \"Toggle recording of a channel\","
  2929. "\"transport\": \"Response\","
  2930. "\"permission\": \"ControlPVR\","
  2931. "\"params\": ["
  2932. "{ \"name\": \"record\", \"$ref\": \"Global.Toggle\", \"default\": \"toggle\" },"
  2933. "{ \"name\": \"channel\", \"type\": ["
  2934. "{ \"type\": \"string\", \"enum\": [ \"current\" ], \"required\": true },"
  2935. "{ \"$ref\": \"Library.Id\", \"required\": true }"
  2936. "],"
  2937. "\"default\": \"current\""
  2938. "}"
  2939. "],"
  2940. "\"returns\": \"string\""
  2941. "}",
  2942. "\"PVR.Scan\": {"
  2943. "\"type\": \"method\","
  2944. "\"description\": \"Starts a channel scan\","
  2945. "\"transport\": \"Response\","
  2946. "\"permission\": \"ControlPVR\","
  2947. "\"params\": [ ],"
  2948. "\"returns\": \"string\""
  2949. "}",
  2950. "\"Profiles.GetProfiles\": {"
  2951. "\"type\": \"method\","
  2952. "\"description\": \"Retrieve all profiles\","
  2953. "\"transport\": \"Response\","
  2954. "\"permission\": \"ReadData\","
  2955. "\"params\": ["
  2956. "{ \"name\": \"properties\", \"$ref\": \"Profiles.Fields.Profile\" },"
  2957. "{ \"name\": \"limits\", \"$ref\": \"List.Limits\" },"
  2958. "{ \"name\": \"sort\", \"$ref\": \"List.Sort\" }"
  2959. "],"
  2960. "\"returns\": {"
  2961. "\"type\": \"object\","
  2962. "\"properties\": {"
  2963. "\"limits\": { \"$ref\": \"List.LimitsReturned\", \"required\": true },"
  2964. "\"profiles\": { \"type\": \"array\", \"required\": true,"
  2965. "\"items\": { \"$ref\": \"Profiles.Details.Profile\" }"
  2966. "}"
  2967. "}"
  2968. "}"
  2969. "}",
  2970. "\"Profiles.GetCurrentProfile\": {"
  2971. "\"type\": \"method\","
  2972. "\"description\": \"Retrieve the current profile\","
  2973. "\"transport\": \"Response\","
  2974. "\"permission\": \"ReadData\","
  2975. "\"params\": ["
  2976. "{ \"name\": \"properties\", \"$ref\": \"Profiles.Fields.Profile\" }"
  2977. "],"
  2978. "\"returns\": { \"$ref\": \"Profiles.Details.Profile\", \"required\": true }"
  2979. "}",
  2980. "\"Profiles.LoadProfile\": {"
  2981. "\"type\": \"method\","
  2982. "\"description\": \"Load the specified profile\","
  2983. "\"transport\": \"Response\","
  2984. "\"permission\": \"Navigate\","
  2985. "\"params\": ["
  2986. "{ \"name\": \"profile\", \"type\": \"string\", \"required\": true, \"description\": \"Profile name\" },"
  2987. "{ \"name\": \"prompt\", \"type\": \"boolean\", \"description\": \"Prompt for password\" },"
  2988. "{ \"name\": \"password\", \"$ref\": \"Profiles.Password\" }"
  2989. "],"
  2990. "\"returns\": \"string\""
  2991. "}",
  2992. "\"System.GetProperties\": {"
  2993. "\"type\": \"method\","
  2994. "\"description\": \"Retrieves the values of the given properties\","
  2995. "\"transport\": \"Response\","
  2996. "\"permission\": \"ReadData\","
  2997. "\"params\": ["
  2998. "{ \"name\": \"properties\", \"type\": \"array\", \"uniqueItems\": true, \"required\": true, \"items\": { \"$ref\": \"System.Property.Name\" } }"
  2999. "],"
  3000. "\"returns\": { \"$ref\": \"System.Property.Value\", \"required\": true }"
  3001. "}",
  3002. "\"System.EjectOpticalDrive\": {"
  3003. "\"type\": \"method\","
  3004. "\"description\": \"Ejects or closes the optical disc drive (if available)\","
  3005. "\"transport\": \"Response\","
  3006. "\"permission\": \"ControlSystem\","
  3007. "\"params\": [ ],"
  3008. "\"returns\": \"string\""
  3009. "}",
  3010. "\"System.Shutdown\": {"
  3011. "\"type\": \"method\","
  3012. "\"description\": \"Shuts the system running XBMC down\","
  3013. "\"transport\": \"Response\","
  3014. "\"permission\": \"ControlPower\","
  3015. "\"params\": [],"
  3016. "\"returns\": \"string\""
  3017. "}",
  3018. "\"System.Suspend\": {"
  3019. "\"type\": \"method\","
  3020. "\"description\": \"Suspends the system running XBMC\","
  3021. "\"transport\": \"Response\","
  3022. "\"permission\": \"ControlPower\","
  3023. "\"params\": [],"
  3024. "\"returns\": \"string\""
  3025. "}",
  3026. "\"System.Hibernate\": {"
  3027. "\"type\": \"method\","
  3028. "\"description\": \"Puts the system running XBMC into hibernate mode\","
  3029. "\"transport\": \"Response\","
  3030. "\"permission\": \"ControlPower\","
  3031. "\"params\": [],"
  3032. "\"returns\": \"string\""
  3033. "}",
  3034. "\"System.Reboot\": {"
  3035. "\"type\": \"method\","
  3036. "\"description\": \"Reboots the system running XBMC\","
  3037. "\"transport\": \"Response\","
  3038. "\"permission\": \"ControlPower\","
  3039. "\"params\": [],"
  3040. "\"returns\": \"string\""
  3041. "}",
  3042. "\"Input.SendText\": {"
  3043. "\"type\": \"method\","
  3044. "\"description\": \"Send a generic (unicode) text\","
  3045. "\"transport\": \"Response\","
  3046. "\"permission\": \"Navigate\","
  3047. "\"params\": ["
  3048. "{ \"name\": \"text\", \"type\": \"string\", \"required\": true, \"description\": \"Unicode text\" },"
  3049. "{ \"name\": \"done\", \"type\": \"boolean\", \"default\": true, \"description\": \"Whether this is the whole input or not (closes an open input dialog if true).\" }"
  3050. "],"
  3051. "\"returns\": \"string\""
  3052. "}",
  3053. "\"Input.ExecuteAction\": {"
  3054. "\"type\": \"method\","
  3055. "\"description\": \"Execute a specific action\","
  3056. "\"transport\": \"Response\","
  3057. "\"permission\": \"Navigate\","
  3058. "\"params\": ["
  3059. "{ \"name\": \"action\", \"$ref\": \"Input.Action\", \"required\": true }"
  3060. "],"
  3061. "\"returns\": \"string\""
  3062. "}",
  3063. "\"Input.Left\": {"
  3064. "\"type\": \"method\","
  3065. "\"description\": \"Navigate left in GUI\","
  3066. "\"transport\": \"Response\","
  3067. "\"permission\": \"Navigate\","
  3068. "\"params\": [],"
  3069. "\"returns\": \"string\""
  3070. "}",
  3071. "\"Input.Right\": {"
  3072. "\"type\": \"method\","
  3073. "\"description\": \"Navigate right in GUI\","
  3074. "\"transport\": \"Response\","
  3075. "\"permission\": \"Navigate\","
  3076. "\"params\": [],"
  3077. "\"returns\": \"string\""
  3078. "}",
  3079. "\"Input.Down\": {"
  3080. "\"type\": \"method\","
  3081. "\"description\": \"Navigate down in GUI\","
  3082. "\"transport\": \"Response\","
  3083. "\"permission\": \"Navigate\","
  3084. "\"params\": [],"
  3085. "\"returns\": \"string\""
  3086. "}",
  3087. "\"Input.Up\": {"
  3088. "\"type\": \"method\","
  3089. "\"description\": \"Navigate up in GUI\","
  3090. "\"transport\": \"Response\","
  3091. "\"permission\": \"Navigate\","
  3092. "\"params\": [],"
  3093. "\"returns\": \"string\""
  3094. "}",
  3095. "\"Input.Select\": {"
  3096. "\"type\": \"method\","
  3097. "\"description\": \"Select current item in GUI\","
  3098. "\"transport\": \"Response\","
  3099. "\"permission\": \"Navigate\","
  3100. "\"params\": [],"
  3101. "\"returns\": \"string\""
  3102. "}",
  3103. "\"Input.Back\": {"
  3104. "\"type\": \"method\","
  3105. "\"description\": \"Goes back in GUI\","
  3106. "\"transport\": \"Response\","
  3107. "\"permission\": \"Navigate\","
  3108. "\"params\": [],"
  3109. "\"returns\": \"string\""
  3110. "}",
  3111. "\"Input.ContextMenu\": {"
  3112. "\"type\": \"method\","
  3113. "\"description\": \"Shows the context menu\","
  3114. "\"transport\": \"Response\","
  3115. "\"permission\": \"Navigate\","
  3116. "\"params\": [],"
  3117. "\"returns\": \"string\""
  3118. "}",
  3119. "\"Input.Info\": {"
  3120. "\"type\": \"method\","
  3121. "\"description\": \"Shows the information dialog\","
  3122. "\"transport\": \"Response\","
  3123. "\"permission\": \"Navigate\","
  3124. "\"params\": [],"
  3125. "\"returns\": \"string\""
  3126. "}",
  3127. "\"Input.Home\": {"
  3128. "\"type\": \"method\","
  3129. "\"description\": \"Goes to home window in GUI\","
  3130. "\"transport\": \"Response\","
  3131. "\"permission\": \"Navigate\","
  3132. "\"params\": [],"
  3133. "\"returns\": \"string\""
  3134. "}",
  3135. "\"Input.ShowCodec\": {"
  3136. "\"type\": \"method\","
  3137. "\"description\": \"Show codec information of the playing item\","
  3138. "\"transport\": \"Response\","
  3139. "\"permission\": \"Navigate\","
  3140. "\"params\": [],"
  3141. "\"returns\": \"string\""
  3142. "}",
  3143. "\"Input.ShowOSD\": {"
  3144. "\"type\": \"method\","
  3145. "\"description\": \"Show the on-screen display for the current player\","
  3146. "\"transport\": \"Response\","
  3147. "\"permission\": \"Navigate\","
  3148. "\"params\": [],"
  3149. "\"returns\": \"string\""
  3150. "}",
  3151. "\"Application.GetProperties\": {"
  3152. "\"type\": \"method\","
  3153. "\"description\": \"Retrieves the values of the given properties\","
  3154. "\"transport\": \"Response\","
  3155. "\"permission\": \"ReadData\","
  3156. "\"params\": ["
  3157. "{ \"name\": \"properties\", \"type\": \"array\", \"uniqueItems\": true, \"required\": true, \"items\": { \"$ref\": \"Application.Property.Name\" } }"
  3158. "],"
  3159. "\"returns\": { \"$ref\": \"Application.Property.Value\", \"required\": true }"
  3160. "}",
  3161. "\"Application.SetVolume\": {"
  3162. "\"type\": \"method\","
  3163. "\"description\": \"Set the current volume\","
  3164. "\"transport\": \"Response\","
  3165. "\"permission\": \"ControlPlayback\","
  3166. "\"params\": ["
  3167. "{ \"name\": \"volume\", \"type\": ["
  3168. "{ \"type\": \"integer\", \"minimum\": 0, \"maximum\": 100, \"required\": true },"
  3169. "{ \"$ref\": \"Global.IncrementDecrement\", \"required\": true }"
  3170. "],"
  3171. "\"required\": true"
  3172. "}"
  3173. "],"
  3174. "\"returns\": \"integer\""
  3175. "}",
  3176. "\"Application.SetMute\": {"
  3177. "\"type\": \"method\","
  3178. "\"description\": \"Toggle mute/unmute\","
  3179. "\"transport\": \"Response\","
  3180. "\"permission\": \"ControlPlayback\","
  3181. "\"params\": ["
  3182. "{ \"name\": \"mute\", \"required\": true, \"$ref\": \"Global.Toggle\" }"
  3183. "],"
  3184. "\"returns\": { \"type\": \"boolean\", \"description\": \"Mute state\" }"
  3185. "}",
  3186. "\"Application.Quit\": {"
  3187. "\"type\": \"method\","
  3188. "\"description\": \"Quit application\","
  3189. "\"transport\": \"Response\","
  3190. "\"permission\": \"ControlPower\","
  3191. "\"params\": [],"
  3192. "\"returns\": \"string\""
  3193. "}",
  3194. "\"XBMC.GetInfoLabels\": {"
  3195. "\"type\": \"method\","
  3196. "\"description\": \"Retrieve info labels about XBMC and the system\","
  3197. "\"transport\": \"Response\","
  3198. "\"permission\": \"ReadData\","
  3199. "\"params\": ["
  3200. "{ \"name\": \"labels\", \"type\": \"array\", \"required\": true, \"items\": { \"type\": \"string\" }, \"minItems\": 1, \"description\": \"See http://wiki.xbmc.org/index.php?title=InfoLabels for a list of possible info labels\" }"
  3201. "],"
  3202. "\"returns\": {"
  3203. "\"type\": \"object\","
  3204. "\"description\": \"Object containing key-value pairs of the retrieved info labels\","
  3205. "\"additionalProperties\": { \"type\": \"string\" }"
  3206. "}"
  3207. "}",
  3208. "\"XBMC.GetInfoBooleans\": {"
  3209. "\"type\": \"method\","
  3210. "\"description\": \"Retrieve info booleans about XBMC and the system\","
  3211. "\"transport\": \"Response\","
  3212. "\"permission\": \"ReadData\","
  3213. "\"params\": ["
  3214. "{ \"name\": \"booleans\", \"type\": \"array\", \"required\": true, \"items\": { \"type\": \"string\" }, \"minItems\": 1 }"
  3215. "],"
  3216. "\"returns\": {"
  3217. "\"type\": \"object\","
  3218. "\"description\": \"Object containing key-value pairs of the retrieved info booleans\","
  3219. "\"additionalProperties\": { \"type\": \"string\" }"
  3220. "}"
  3221. "}",
  3222. "\"Favourites.GetFavourites\": {"
  3223. "\"type\": \"method\","
  3224. "\"description\": \"Retrieve all favourites\","
  3225. "\"transport\": \"Response\","
  3226. "\"permission\": \"ReadData\","
  3227. "\"params\": ["
  3228. "{ \"name\": \"type\", \"type\": [ \"null\", { \"$ref\": \"Favourite.Type\" } ], \"default\": null },"
  3229. "{ \"name\": \"properties\", \"$ref\": \"Favourite.Fields.Favourite\" }"
  3230. "],"
  3231. "\"returns\": {"
  3232. "\"type\": \"object\","
  3233. "\"properties\": {"
  3234. "\"limits\": { \"$ref\": \"List.LimitsReturned\", \"required\": true },"
  3235. "\"favourites\": { \"type\": \"array\","
  3236. "\"items\": { \"$ref\": \"Favourite.Details.Favourite\" }"
  3237. "}"
  3238. "}"
  3239. "}"
  3240. "}",
  3241. "\"Favourites.AddFavourite\": {"
  3242. "\"type\": \"method\","
  3243. "\"description\": \"Add a favourite with the given details\","
  3244. "\"transport\": \"Response\","
  3245. "\"permission\": \"UpdateData\","
  3246. "\"params\": ["
  3247. "{ \"name\": \"title\", \"type\": \"string\", \"required\": true },"
  3248. "{ \"name\": \"type\", \"$ref\": \"Favourite.Type\", \"required\": true },"
  3249. "{ \"name\": \"path\", \"$ref\": \"Optional.String\", \"description\": \"Required for media and script favourites types\" },"
  3250. "{ \"name\": \"window\", \"$ref\": \"Optional.String\", \"description\": \"Required for window favourite type\" },"
  3251. "{ \"name\": \"windowparameter\", \"$ref\": \"Optional.String\" },"
  3252. "{ \"name\": \"thumbnail\", \"$ref\": \"Optional.String\" }"
  3253. "],"
  3254. "\"returns\": \"string\""
  3255. "}"
  3256. };
  3257. const char* const JSONRPC_SERVICE_NOTIFICATIONS[] = {
  3258. "\"Player.OnPlay\": {"
  3259. "\"type\": \"notification\","
  3260. "\"description\": \"Playback of a media item has been started or the playback speed has changed. If there is no ID available extra information will be provided.\","
  3261. "\"params\": ["
  3262. "{ \"name\": \"sender\", \"type\": \"string\", \"required\": true },"
  3263. "{ \"name\": \"data\", \"$ref\": \"Player.Notifications.Data\", \"required\": true }"
  3264. "],"
  3265. "\"returns\": null"
  3266. "}",
  3267. "\"Player.OnPause\": {"
  3268. "\"type\": \"notification\","
  3269. "\"description\": \"Playback of a media item has been paused. If there is no ID available extra information will be provided.\","
  3270. "\"params\": ["
  3271. "{ \"name\": \"sender\", \"type\": \"string\", \"required\": true },"
  3272. "{ \"name\": \"data\", \"$ref\": \"Player.Notifications.Data\", \"required\": true }"
  3273. "],"
  3274. "\"returns\": null"
  3275. "}",
  3276. "\"Player.OnStop\": {"
  3277. "\"type\": \"notification\","
  3278. "\"description\": \"Playback of a media item has been stopped. If there is no ID available extra information will be provided.\","
  3279. "\"params\": ["
  3280. "{ \"name\": \"sender\", \"type\": \"string\", \"required\": true },"
  3281. "{ \"name\": \"data\", \"type\": \"object\", \"required\": true,"
  3282. "\"properties\": {"
  3283. "\"item\": { \"$ref\": \"Notifications.Item\" },"
  3284. "\"end\": { \"type\": \"boolean\", \"required\": true, \"description\": \"Whether the player has reached the end of the playable item(s) or not\" }"
  3285. "}"
  3286. "}"
  3287. "],"
  3288. "\"returns\": null"
  3289. "}",
  3290. "\"Player.OnSpeedChanged\": {"
  3291. "\"type\": \"notification\","
  3292. "\"description\": \"Speed of the playback of a media item has been changed. If there is no ID available extra information will be provided.\","
  3293. "\"params\": ["
  3294. "{ \"name\": \"sender\", \"type\": \"string\", \"required\": true },"
  3295. "{ \"name\": \"data\", \"$ref\": \"Player.Notifications.Data\", \"required\": true }"
  3296. "],"
  3297. "\"returns\": null"
  3298. "}",
  3299. "\"Player.OnSeek\": {"
  3300. "\"type\": \"notification\","
  3301. "\"description\": \"The playback position has been changed. If there is no ID available extra information will be provided.\","
  3302. "\"params\": ["
  3303. "{ \"name\": \"sender\", \"type\": \"string\", \"required\": true },"
  3304. "{ \"name\": \"data\", \"type\": \"object\", \"required\": true,"
  3305. "\"properties\": {"
  3306. "\"item\": { \"$ref\": \"Notifications.Item\" },"
  3307. "\"player\": { \"$ref\": \"Player.Notifications.Player.Seek\", \"required\": true }"
  3308. "}"
  3309. "}"
  3310. "],"
  3311. "\"returns\": null"
  3312. "}",
  3313. "\"Player.OnPropertyChanged\": {"
  3314. "\"type\": \"notification\","
  3315. "\"description\": \"A property of the playing items has changed.\","
  3316. "\"params\": ["
  3317. "{ \"name\": \"sender\", \"type\": \"string\", \"required\": true },"
  3318. "{ \"name\": \"data\", \"type\": \"object\", \"required\": true,"
  3319. "\"properties\": {"
  3320. "\"property\": { \"$ref\": \"Player.Property.Value\" },"
  3321. "\"player\": { \"$ref\": \"Player.Notifications.Player\", \"required\": true }"
  3322. "}"
  3323. "}"
  3324. "],"
  3325. "\"returns\": null"
  3326. "}",
  3327. "\"Playlist.OnAdd\": {"
  3328. "\"type\": \"notification\","
  3329. "\"description\": \"A playlist item has been added.\","
  3330. "\"params\": ["
  3331. "{ \"name\": \"sender\", \"type\": \"string\", \"required\": true },"
  3332. "{ \"name\": \"data\", \"type\": \"object\", \"required\": true,"
  3333. "\"properties\": {"
  3334. "\"playlistid\": { \"$ref\": \"Playlist.Id\", \"required\": true },"
  3335. "\"item\": { \"$ref\": \"Notifications.Item\" },"
  3336. "\"position\": { \"$ref\": \"Playlist.Position\" }"
  3337. "}"
  3338. "}"
  3339. "],"
  3340. "\"returns\": null"
  3341. "}",
  3342. "\"Playlist.OnRemove\": {"
  3343. "\"type\": \"notification\","
  3344. "\"description\": \"A playlist item has been removed.\","
  3345. "\"params\": ["
  3346. "{ \"name\": \"sender\", \"type\": \"string\", \"required\": true },"
  3347. "{ \"name\": \"data\", \"type\": \"object\", \"required\": true,"
  3348. "\"properties\": {"
  3349. "\"playlistid\": { \"$ref\": \"Playlist.Id\", \"required\": true },"
  3350. "\"position\": { \"$ref\": \"Playlist.Position\" }"
  3351. "}"
  3352. "}"
  3353. "],"
  3354. "\"returns\": null"
  3355. "}",
  3356. "\"Playlist.OnClear\": {"
  3357. "\"type\": \"notification\","
  3358. "\"description\": \"A playlist item has been cleared.\","
  3359. "\"params\": ["
  3360. "{ \"name\": \"sender\", \"type\": \"string\", \"required\": true },"
  3361. "{ \"name\": \"data\", \"type\": \"object\", \"required\": true,"
  3362. "\"properties\": {"
  3363. "\"playlistid\": { \"$ref\": \"Playlist.Id\", \"required\": true }"
  3364. "}"
  3365. "}"
  3366. "],"
  3367. "\"returns\": null"
  3368. "}",
  3369. "\"AudioLibrary.OnUpdate\": {"
  3370. "\"type\": \"notification\","
  3371. "\"description\": \"An audio item has been updated.\","
  3372. "\"params\": ["
  3373. "{ \"name\": \"sender\", \"type\": \"string\", \"required\": true },"
  3374. "{ \"name\": \"data\", \"type\": \"object\", \"required\": true,"
  3375. "\"properties\": {"
  3376. "\"id\": { \"$ref\": \"Library.Id\", \"required\": true },"
  3377. "\"type\": { \"type\": \"string\", \"id\": \"Notifications.Library.Audio.Type\", \"enum\": [ \"song\" ], \"required\": true }"
  3378. "}"
  3379. "}"
  3380. "],"
  3381. "\"returns\": null"
  3382. "}",
  3383. "\"AudioLibrary.OnRemove\": {"
  3384. "\"type\": \"notification\","
  3385. "\"description\": \"An audio item has been removed.\","
  3386. "\"params\": ["
  3387. "{ \"name\": \"sender\", \"type\": \"string\", \"required\": true },"
  3388. "{ \"name\": \"data\", \"type\": \"object\", \"required\": true,"
  3389. "\"properties\": {"
  3390. "\"id\": { \"$ref\": \"Library.Id\", \"required\": true },"
  3391. "\"type\": { \"$ref\": \"Notifications.Library.Audio.Type\", \"required\": true }"
  3392. "}"
  3393. "}"
  3394. "],"
  3395. "\"returns\": null"
  3396. "}",
  3397. "\"AudioLibrary.OnScanStarted\": {"
  3398. "\"type\": \"notification\","
  3399. "\"description\": \"An audio library scan has started.\","
  3400. "\"params\": ["
  3401. "{ \"name\": \"sender\", \"type\": \"string\", \"required\": true },"
  3402. "{ \"name\": \"data\", \"type\": \"null\", \"required\": true }"
  3403. "],"
  3404. "\"returns\": null"
  3405. "}",
  3406. "\"AudioLibrary.OnScanFinished\": {"
  3407. "\"type\": \"notification\","
  3408. "\"description\": \"Scanning the audio library has been finished.\","
  3409. "\"params\": ["
  3410. "{ \"name\": \"sender\", \"type\": \"string\", \"required\": true },"
  3411. "{ \"name\": \"data\", \"type\": \"null\", \"required\": true }"
  3412. "],"
  3413. "\"returns\": null"
  3414. "}",
  3415. "\"AudioLibrary.OnCleanStarted\": {"
  3416. "\"type\": \"notification\","
  3417. "\"description\": \"An audio library clean operation has started.\","
  3418. "\"params\": ["
  3419. "{ \"name\": \"sender\", \"type\": \"string\", \"required\": true },"
  3420. "{ \"name\": \"data\", \"type\": \"null\", \"required\": true }"
  3421. "],"
  3422. "\"returns\": null"
  3423. "}",
  3424. "\"AudioLibrary.OnCleanFinished\": {"
  3425. "\"type\": \"notification\","
  3426. "\"description\": \"The audio library has been cleaned.\","
  3427. "\"params\": ["
  3428. "{ \"name\": \"sender\", \"type\": \"string\", \"required\": true },"
  3429. "{ \"name\": \"data\", \"type\": \"null\", \"required\": true }"
  3430. "],"
  3431. "\"returns\": null"
  3432. "}",
  3433. "\"VideoLibrary.OnUpdate\": {"
  3434. "\"type\": \"notification\","
  3435. "\"description\": \"A video item has been updated.\","
  3436. "\"params\": ["
  3437. "{ \"name\": \"sender\", \"type\": \"string\", \"required\": true },"
  3438. "{ \"name\": \"data\", \"type\": \"object\", \"required\": true,"
  3439. "\"properties\": {"
  3440. "\"id\": { \"$ref\": \"Library.Id\", \"required\": true },"
  3441. "\"type\": { \"type\": \"string\", \"id\": \"Notifications.Library.Video.Type\", \"enum\": [ \"movie\", \"tvshow\", \"episode\", \"musicvideo\" ], \"required\": true },"
  3442. "\"playcount\": { \"type\": \"integer\", \"minimum\": 0, \"default\": -1 }"
  3443. "}"
  3444. "}"
  3445. "],"
  3446. "\"returns\": null"
  3447. "}",
  3448. "\"VideoLibrary.OnRemove\": {"
  3449. "\"type\": \"notification\","
  3450. "\"description\": \"A video item has been removed.\","
  3451. "\"params\": ["
  3452. "{ \"name\": \"sender\", \"type\": \"string\", \"required\": true },"
  3453. "{ \"name\": \"data\", \"type\": \"object\", \"required\": true,"
  3454. "\"properties\": {"
  3455. "\"id\": { \"$ref\": \"Library.Id\", \"required\": true },"
  3456. "\"type\": { \"$ref\": \"Notifications.Library.Video.Type\", \"required\": true }"
  3457. "}"
  3458. "}"
  3459. "],"
  3460. "\"returns\": null"
  3461. "}",
  3462. "\"VideoLibrary.OnScanStarted\": {"
  3463. "\"type\": \"notification\","
  3464. "\"description\": \"A video library scan has started.\","
  3465. "\"params\": ["
  3466. "{ \"name\": \"sender\", \"type\": \"string\", \"required\": true },"
  3467. "{ \"name\": \"data\", \"type\": \"null\", \"required\": true }"
  3468. "],"
  3469. "\"returns\": null"
  3470. "}",
  3471. "\"VideoLibrary.OnScanFinished\": {"
  3472. "\"type\": \"notification\","
  3473. "\"description\": \"Scanning the video library has been finished.\","
  3474. "\"params\": ["
  3475. "{ \"name\": \"sender\", \"type\": \"string\", \"required\": true },"
  3476. "{ \"name\": \"data\", \"type\": \"null\", \"required\": true }"
  3477. "],"
  3478. "\"returns\": null"
  3479. "}",
  3480. "\"VideoLibrary.OnCleanStarted\": {"
  3481. "\"type\": \"notification\","
  3482. "\"description\": \"A video library clean operation has started.\","
  3483. "\"params\": ["
  3484. "{ \"name\": \"sender\", \"type\": \"string\", \"required\": true },"
  3485. "{ \"name\": \"data\", \"type\": \"null\", \"required\": true }"
  3486. "],"
  3487. "\"returns\": null"
  3488. "}",
  3489. "\"VideoLibrary.OnCleanFinished\": {"
  3490. "\"type\": \"notification\","
  3491. "\"description\": \"The video library has been cleaned.\","
  3492. "\"params\": ["
  3493. "{ \"name\": \"sender\", \"type\": \"string\", \"required\": true },"
  3494. "{ \"name\": \"data\", \"type\": \"null\", \"required\": true }"
  3495. "],"
  3496. "\"returns\": null"
  3497. "}",
  3498. "\"System.OnQuit\": {"
  3499. "\"type\": \"notification\","
  3500. "\"description\": \"XBMC will be closed.\","
  3501. "\"params\": ["
  3502. "{ \"name\": \"sender\", \"type\": \"string\", \"required\": true },"
  3503. "{ \"name\": \"data\", \"type\": \"null\", \"required\": true }"
  3504. "],"
  3505. "\"returns\": null"
  3506. "}",
  3507. "\"System.OnRestart\": {"
  3508. "\"type\": \"notification\","
  3509. "\"description\": \"The system will be restarted.\","
  3510. "\"params\": ["
  3511. "{ \"name\": \"sender\", \"type\": \"string\", \"required\": true },"
  3512. "{ \"name\": \"data\", \"type\": \"null\", \"required\": true }"
  3513. "],"
  3514. "\"returns\": null"
  3515. "}",
  3516. "\"System.OnSleep\": {"
  3517. "\"type\": \"notification\","
  3518. "\"description\": \"The system will be suspended.\","
  3519. "\"params\": ["
  3520. "{ \"name\": \"sender\", \"type\": \"string\", \"required\": true },"
  3521. "{ \"name\": \"data\", \"type\": \"null\", \"required\": true }"
  3522. "],"
  3523. "\"returns\": null"
  3524. "}",
  3525. "\"System.OnWake\": {"
  3526. "\"type\": \"notification\","
  3527. "\"description\": \"The system woke up from suspension.\","
  3528. "\"params\": ["
  3529. "{ \"name\": \"sender\", \"type\": \"string\", \"required\": true },"
  3530. "{ \"name\": \"data\", \"type\": \"null\", \"required\": true }"
  3531. "],"
  3532. "\"returns\": null"
  3533. "}",
  3534. "\"System.OnLowBattery\": {"
  3535. "\"type\": \"notification\","
  3536. "\"description\": \"The system is on low battery.\","
  3537. "\"params\": ["
  3538. "{ \"name\": \"sender\", \"type\": \"string\", \"required\": true },"
  3539. "{ \"name\": \"data\", \"type\": \"null\", \"required\": true }"
  3540. "],"
  3541. "\"returns\": null"
  3542. "}",
  3543. "\"Application.OnVolumeChanged\": {"
  3544. "\"type\": \"notification\","
  3545. "\"description\": \"The volume of the application has changed.\","
  3546. "\"params\": ["
  3547. "{ \"name\": \"sender\", \"type\": \"string\", \"required\": true },"
  3548. "{ \"name\": \"data\", \"type\": \"object\", \"required\": true,"
  3549. "\"properties\": {"
  3550. "\"volume\": { \"type\": \"integer\", \"minimum\": 0, \"maximum\": 100, \"required\": true },"
  3551. "\"muted\": { \"type\": \"boolean\", \"required\": true }"
  3552. "}"
  3553. "}"
  3554. "],"
  3555. "\"returns\": null"
  3556. "}",
  3557. "\"Input.OnInputRequested\": {"
  3558. "\"type\": \"notification\","
  3559. "\"description\": \"The user is requested to provide some information.\","
  3560. "\"params\": ["
  3561. "{ \"name\": \"sender\", \"type\": \"string\", \"required\": true },"
  3562. "{ \"name\": \"data\", \"type\": \"object\", \"required\": true,"
  3563. "\"properties\": {"
  3564. "\"type\": { \"type\": \"string\", \"enum\": [ \"keyboard\", \"time\", \"date\", \"ip\", \"password\", \"numericpassword\", \"number\", \"seconds\" ], \"required\": true },"
  3565. "\"value\": { \"type\": \"string\", \"required\": true },"
  3566. "\"title\": { \"type\": \"string\" }"
  3567. "}"
  3568. "}"
  3569. "],"
  3570. "\"returns\": null"
  3571. "}",
  3572. "\"Input.OnInputFinished\": {"
  3573. "\"type\": \"notification\","
  3574. "\"description\": \"The user has provided the requested input.\","
  3575. "\"params\": ["
  3576. "{ \"name\": \"sender\", \"type\": \"string\", \"required\": true },"
  3577. "{ \"name\": \"data\", \"type\": \"null\", \"required\": true }"
  3578. "],"
  3579. "\"returns\": null"
  3580. "}"
  3581. };
  3582. }