1{
2  "Player.OnPlay": {
3    "type": "notification",
4    "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.",
5    "params": [
6      { "name": "sender", "type": "string", "required": true },
7      { "name": "data", "$ref": "Player.Notifications.Data", "required": true }
8    ],
9    "returns": null
10  },
11  "Player.OnResume": {
12    "type": "notification",
13    "description": "Playback of a media item has been resumed. If there is no ID available extra information will be provided.",
14    "params": [
15      {
16        "name": "sender",
17        "type": "string",
18        "required": true
19      },
20      {
21        "name": "data",
22        "$ref": "Player.Notifications.Data",
23        "required": true
24      }
25    ],
26    "returns": null
27  },
28  "Player.OnAVStart": {
29    "type": "notification",
30    "description": "Playback of a media item has been started and first frame is available. If there is no ID available extra information will be provided.",
31    "params": [
32      {
33        "name": "sender",
34        "type": "string",
35        "required": true
36      },
37      {
38        "name": "data",
39        "$ref": "Player.Notifications.Data",
40        "required": true
41      }
42    ],
43    "returns": null
44  },
45  "Player.OnAVChange": {
46    "type": "notification",
47    "description": "Audio- or videostream has changed. If there is no ID available extra information will be provided.",
48    "params": [
49      {
50        "name": "sender",
51        "type": "string",
52        "required": true
53      },
54      {
55        "name": "data",
56        "$ref": "Player.Notifications.Data",
57        "required": true
58      }
59    ],
60    "returns": null
61  },
62  "Player.OnPause": {
63    "type": "notification",
64    "description": "Playback of a media item has been paused. If there is no ID available extra information will be provided.",
65    "params": [
66      { "name": "sender", "type": "string", "required": true },
67      { "name": "data", "$ref": "Player.Notifications.Data", "required": true }
68    ],
69    "returns": null
70  },
71  "Player.OnStop": {
72    "type": "notification",
73    "description": "Playback of a media item has been stopped. If there is no ID available extra information will be provided.",
74    "params": [
75      { "name": "sender", "type": "string", "required": true },
76      { "name": "data", "type": "object", "required": true,
77        "properties": {
78          "item": { "$ref": "Notifications.Item" },
79          "end": { "type": "boolean", "required": true, "description": "Whether the player has reached the end of the playable item(s) or not" }
80        }
81      }
82    ],
83    "returns": null
84  },
85  "Player.OnSpeedChanged": {
86    "type": "notification",
87    "description": "Speed of the playback of a media item has been changed. If there is no ID available extra information will be provided.",
88    "params": [
89      { "name": "sender", "type": "string", "required": true },
90      { "name": "data", "$ref": "Player.Notifications.Data", "required": true }
91    ],
92    "returns": null
93  },
94  "Player.OnSeek": {
95    "type": "notification",
96    "description": "The playback position has been changed. If there is no ID available extra information will be provided.",
97    "params": [
98      { "name": "sender", "type": "string", "required": true },
99      { "name": "data", "type": "object", "required": true,
100        "properties": {
101          "item": { "$ref": "Notifications.Item" },
102          "player": { "$ref": "Player.Notifications.Player.Seek", "required": true }
103        }
104      }
105    ],
106    "returns": null
107  },
108  "Player.OnPropertyChanged": {
109    "type": "notification",
110    "description": "A property of the playing items has changed.",
111    "params": [
112      { "name": "sender", "type": "string", "required": true },
113      { "name": "data", "type": "object", "required": true,
114        "properties": {
115          "property": { "$ref": "Player.Property.Value" },
116          "player": { "$ref": "Player.Notifications.Player", "required": true }
117        }
118      }
119    ],
120    "returns": null
121  },
122  "Playlist.OnAdd": {
123    "type": "notification",
124    "description": "A playlist item has been added.",
125    "params": [
126      { "name": "sender", "type": "string", "required": true },
127      { "name": "data", "type": "object", "required": true,
128        "properties": {
129          "playlistid": { "$ref": "Playlist.Id", "required": true },
130          "item": { "$ref": "Notifications.Item" },
131          "position": { "$ref": "Playlist.Position" }
132        }
133      }
134    ],
135    "returns": null
136  },
137  "Playlist.OnRemove": {
138    "type": "notification",
139    "description": "A playlist item has been removed.",
140    "params": [
141      { "name": "sender", "type": "string", "required": true },
142      { "name": "data", "type": "object", "required": true,
143        "properties": {
144          "playlistid": { "$ref": "Playlist.Id", "required": true },
145          "position": { "$ref": "Playlist.Position" }
146        }
147      }
148    ],
149    "returns": null
150  },
151  "Playlist.OnClear": {
152    "type": "notification",
153    "description": "A playlist item has been cleared.",
154    "params": [
155      { "name": "sender", "type": "string", "required": true },
156      { "name": "data", "type": "object", "required": true,
157        "properties": {
158          "playlistid": { "$ref": "Playlist.Id", "required": true }
159        }
160      }
161    ],
162    "returns": null
163  },
164  "AudioLibrary.OnUpdate": {
165    "type": "notification",
166    "description": "An audio item has been updated.",
167    "params": [
168      { "name": "sender", "type": "string", "required": true },
169      { "name": "data", "type": "object", "required": true,
170        "properties": {
171          "id": { "$ref": "Library.Id", "required": true },
172          "type": { "type": "string", "id": "Notifications.Library.Audio.Type", "enum": [ "song" ], "required": true },
173          "transaction": { "$ref": "Optional.Boolean", "description": "True if the update is being performed within a transaction." },
174          "added": { "$ref": "Optional.Boolean", "description": "True if the update is for a newly added item." }
175        }
176      }
177    ],
178    "returns": null
179  },
180  "AudioLibrary.OnRemove": {
181    "type": "notification",
182    "description": "An audio item has been removed.",
183    "params": [
184      { "name": "sender", "type": "string", "required": true },
185      { "name": "data", "type": "object", "required": true,
186        "properties": {
187          "id": { "$ref": "Library.Id", "required": true },
188          "type": { "$ref": "Notifications.Library.Audio.Type", "required": true },
189          "transaction": { "$ref": "Optional.Boolean", "description": "True if the removal is being performed within a transaction." }
190        }
191      }
192    ],
193    "returns": null
194  },
195  "AudioLibrary.OnScanStarted": {
196    "type": "notification",
197    "description": "An audio library scan has started.",
198    "params": [
199      { "name": "sender", "type": "string", "required": true },
200      { "name": "data", "type": "null", "required": true }
201    ],
202    "returns": null
203  },
204  "AudioLibrary.OnScanFinished": {
205    "type": "notification",
206    "description": "Scanning the audio library has been finished.",
207    "params": [
208      { "name": "sender", "type": "string", "required": true },
209      { "name": "data", "type": "null", "required": true }
210    ],
211    "returns": null
212  },
213  "AudioLibrary.OnCleanStarted": {
214    "type": "notification",
215    "description": "An audio library clean operation has started.",
216    "params": [
217      { "name": "sender", "type": "string", "required": true },
218      { "name": "data", "type": "null", "required": true }
219    ],
220    "returns": null
221  },
222  "AudioLibrary.OnCleanFinished": {
223    "type": "notification",
224    "description": "The audio library has been cleaned.",
225    "params": [
226      { "name": "sender", "type": "string", "required": true },
227      { "name": "data", "type": "null", "required": true }
228    ],
229    "returns": null
230  },
231  "AudioLibrary.OnExport": {
232    "type": "notification",
233    "description": "An audio library export has finished.",
234    "params": [
235      { "name": "sender", "type": "string", "required": true },
236      { "name": "data", "type": "object", "required": false,
237        "properties": {
238          "file": { "type": "string", "required": false, "default": "" },
239          "failcount": { "type": "integer", "minimum": 0, "required": false, "default": 0 }
240        }
241      }
242    ],
243    "returns": null
244  },
245  "VideoLibrary.OnUpdate": {
246    "type": "notification",
247    "description": "A video item has been updated.",
248    "params": [
249      { "name": "sender", "type": "string", "required": true },
250      { "name": "data", "type": "object", "required": true,
251        "properties": {
252          "id": { "$ref": "Library.Id", "required": true },
253          "type": { "type": "string", "id": "Notifications.Library.Video.Type", "enum": [ "movie", "tvshow", "episode", "musicvideo" ], "required": true },
254          "playcount": { "type": "integer", "minimum": 0, "default": -1 },
255          "transaction": { "$ref": "Optional.Boolean", "description": "True if the update is being performed within a transaction." },
256          "added": { "$ref": "Optional.Boolean", "description": "True if the update is for a newly added item." }
257        }
258      }
259    ],
260    "returns": null
261  },
262  "VideoLibrary.OnExport": {
263    "type": "notification",
264    "description": "A video library export has finished.",
265    "params": [
266      { "name": "sender", "type": "string", "required": true },
267      { "name": "data", "type": "object", "required": false,
268        "properties": {
269          "file": { "type": "string", "required": false, "default": "" },
270          "root": { "type": "string", "required": false, "default": "" },
271          "failcount": { "type": "integer", "minimum": 0, "required": false, "default": 0 }
272        }
273      }
274    ],
275    "returns": null
276  },
277  "VideoLibrary.OnRemove": {
278    "type": "notification",
279    "description": "A video item has been removed.",
280    "params": [
281      { "name": "sender", "type": "string", "required": true },
282      { "name": "data", "type": "object", "required": true,
283        "properties": {
284          "id": { "$ref": "Library.Id", "required": true },
285          "type": { "$ref": "Notifications.Library.Video.Type", "required": true },
286          "transaction": { "$ref": "Optional.Boolean", "description": "True if the removal is being performed within a transaction." }
287        }
288      }
289    ],
290    "returns": null
291  },
292  "VideoLibrary.OnScanStarted": {
293    "type": "notification",
294    "description": "A video library scan has started.",
295    "params": [
296      { "name": "sender", "type": "string", "required": true },
297      { "name": "data", "type": "null", "required": true }
298    ],
299    "returns": null
300  },
301  "VideoLibrary.OnScanFinished": {
302    "type": "notification",
303    "description": "Scanning the video library has been finished.",
304    "params": [
305      { "name": "sender", "type": "string", "required": true },
306      { "name": "data", "type": "null", "required": true }
307    ],
308    "returns": null
309  },
310  "VideoLibrary.OnCleanStarted": {
311    "type": "notification",
312    "description": "A video library clean operation has started.",
313    "params": [
314      { "name": "sender", "type": "string", "required": true },
315      { "name": "data", "type": "null", "required": true }
316    ],
317    "returns": null
318  },
319  "VideoLibrary.OnCleanFinished": {
320    "type": "notification",
321    "description": "The video library has been cleaned.",
322    "params": [
323      { "name": "sender", "type": "string", "required": true },
324      { "name": "data", "type": "null", "required": true }
325    ],
326    "returns": null
327  },
328  "VideoLibrary.OnRefresh": {
329    "type": "notification",
330    "description": "The video library has been refreshed and a home screen reload might be necessary.",
331    "params": [
332      { "name": "sender", "type": "string", "required": true },
333      { "name": "data", "type": "null", "required": true }
334    ],
335    "returns": null
336  },
337  "System.OnQuit": {
338    "type": "notification",
339    "description": "Kodi will be closed.",
340    "params": [
341      { "name": "sender", "type": "string", "required": true },
342      { "name": "data", "type": "object", "required": true,
343        "properties": {
344          "exitcode": { "type": "integer", "minimum": 0, "required": true }
345        }
346      }
347    ],
348    "returns": null
349  },
350  "System.OnRestart": {
351    "type": "notification",
352    "description": "The system will be restarted.",
353    "params": [
354      { "name": "sender", "type": "string", "required": true },
355      { "name": "data", "type": "null", "required": true }
356    ],
357    "returns": null
358  },
359  "System.OnSleep": {
360    "type": "notification",
361    "description": "The system will be suspended.",
362    "params": [
363      { "name": "sender", "type": "string", "required": true },
364      { "name": "data", "type": "null", "required": true }
365    ],
366    "returns": null
367  },
368  "System.OnWake": {
369    "type": "notification",
370    "description": "The system woke up from suspension.",
371    "params": [
372      { "name": "sender", "type": "string", "required": true },
373      { "name": "data", "type": "null", "required": true }
374    ],
375    "returns": null
376  },
377  "System.OnLowBattery": {
378    "type": "notification",
379    "description": "The system is on low battery.",
380    "params": [
381      { "name": "sender", "type": "string", "required": true },
382      { "name": "data", "type": "null", "required": true }
383    ],
384    "returns": null
385  },
386  "Application.OnVolumeChanged": {
387    "type": "notification",
388    "description": "The volume of the application has changed.",
389    "params": [
390      { "name": "sender", "type": "string", "required": true },
391      { "name": "data", "type": "object", "required": true,
392        "properties": {
393          "volume": { "type": "integer", "minimum": 0, "maximum": 100, "required": true },
394          "muted": { "type": "boolean", "required": true }
395        }
396      }
397    ],
398    "returns": null
399  },
400  "Input.OnInputRequested": {
401    "type": "notification",
402    "description": "The user is requested to provide some information.",
403    "params": [
404      { "name": "sender", "type": "string", "required": true },
405      { "name": "data", "type": "object", "required": true,
406        "properties": {
407          "type": { "type": "string", "enum": [ "keyboard", "time", "date", "ip", "password", "numericpassword", "number", "seconds" ], "required": true },
408          "value": { "type": "string", "required": true },
409          "title": { "type": "string" }
410        }
411      }
412    ],
413    "returns": null
414  },
415  "Input.OnInputFinished": {
416    "type": "notification",
417    "description": "The user has provided the requested input.",
418    "params": [
419      { "name": "sender", "type": "string", "required": true },
420      { "name": "data", "type": "null", "required": true }
421    ],
422    "returns": null
423  },
424  "GUI.OnScreensaverActivated": {
425    "type": "notification",
426    "description": "The screensaver has been activated.",
427    "params": [
428      { "name": "sender", "type": "string", "required": true },
429      { "name": "data", "type": "null", "required": true }
430    ],
431    "returns": null
432  },
433  "GUI.OnScreensaverDeactivated": {
434    "type": "notification",
435    "description": "The screensaver has been deactivated.",
436    "params": [
437      { "name": "sender", "type": "string", "required": true },
438      { "name": "data", "type": "object", "required": true,
439        "properties": {
440          "shuttingdown": { "type": "boolean", "required": true }
441        }
442      }
443    ],
444    "returns": null
445  },
446  "GUI.OnDPMSActivated": {
447    "type": "notification",
448    "description": "Energy saving/DPMS has been activated.",
449    "params": [
450      { "name": "sender", "type": "string", "required": true },
451      { "name": "data", "type": "null", "required": true }
452    ],
453    "returns": null
454  },
455  "GUI.OnDPMSDeactivated": {
456    "type": "notification",
457    "description": "Energy saving/DPMS has been deactivated.",
458    "params": [
459      { "name": "sender", "type": "string", "required": true },
460      { "name": "data", "type": "null", "required": true }
461    ],
462    "returns": null
463  }
464}
465