XBMC v12 (Frodo) API changes

Addons
Frodo will represent the second repository update. Any add-ons that are submitted for inclusion in Frodo will require compatibility with the new APIs.

Be sure to read the Official Repository Guidlines before submitting a pull request.

For a long time XBMC has been using a major.minor.build (x.y.z) version scheme for all addons. The only exception have been XBMC's internal addons.

With Frodo it was ensured that all of internal XBMC addons comply with this x.y.z version scheme as well.

If you are going to submit your addon to the Frodo addon repo and your addon depends on any of internal xbmc addons, please make sure you depend on a x.y.z version.

Note: if your addon is affected by the above, it's no longer possible to submit the exact same addon for inclusion in both Eden and Frodo repos. The version numbers in addon.xml will have to differ.

The current versions for Frodo are as listed below:
 * xbmc.addon : 12.0.0
 * xbmc.core : 0.1.0
 * xbmc.gui : 4.0.0
 * xbmc.json : 6.0.0
 * xbmc.metadata : 2.1.0
 * xbmc.python : 2.1.0

you don't have to make any changes to your addon for the eden repo, but you need a separate version for the frodo repo that uses python 2.1.0

for frodo use:

Skins

 * Same repo rules as for scripts
 * Full change log see http://forum.xbmc.org/showthread.php?tid=126502

Changed Methods

 * General / Global
 * albums: added properties "playcount", "genreid", "artistid" and "displayartist"
 * filter: a new parameter "filter" has been added which can either take a certain property (e.g. "genre", "actor", "studio", ...) and a value to filter by or a complex rule-based filter
 * movies
 * properties "set" and "setid" are no longer arrays but a single string/integer
 * properties like "country", "director" etc are no longer returned as concatenated strings but as arrays of strings
 * properties "productioncode" and "premiered" have been removed
 * added property "tag"
 * musicvideos: added property "tag"
 * songs: added properties "lastplayed", "genreid", "artistid", "albumartistid" and "displayartist"
 * sort: cleaned up sort methods and added a few new ones (e.g. "dateadded")
 * tvshows: added properties "lastplayed" and "tag"
 * videos: changed property "runtime" from a string to an integer (in seconds)
 * Application
 * SetVolume: added support for "increment" and "decrement"
 * Files
 * GetDirectory: added properties "size", "lastmodified", "mimetype"
 * Player
 * GoNext: merged into GoTo
 * GoPrevious: merged into GoTo
 * MoveDown: merged into Move
 * MoveLeft: merged into Move
 * MoveRight: merged into Move
 * MoveUp: merged into Move
 * Open:
 * added optional "options" parameter which can have the properties "shuffled", "repeat" and "resume"
 * added "partymode" property to be able to start the music/video partymode or a specific smartplaylist in partymode
 * added "channelid" property to be able to start a PVR channel
 * PlayPause: added optional "play" parameter
 * Repeat: renamed to SetRepeat
 * SetSubtitle: added optional "enable" parameter
 * Shuffle: merged into SetShuffle
 * UnShuffle: merged into SetShuffle
 * ZoomIn: merged into Zoom
 * ZoomOut: merged into Zoom
 * VideoLibrary
 * GetTVShows: added properties "season", "watchedepisodes"
 * GetSeasons: added property "watchedepisodes"

New Methods

 * Addons
 * ExecuteAddon
 * GetAddons
 * GetAddonDetails
 * SetAddonEnabled
 * AudioLibrary
 * GetRecentlyPlayedAlbums
 * GetRecentlyPlayedSongs
 * SetAlbumDetails
 * SetArtistDetails
 * SetSongDetails
 * Files
 * GetFileDetails
 * GUI
 * ActivateWindow
 * GetProperties
 * SetFullscreen
 * ShowNotification
 * Input
 * ContextMenu
 * ExecuteAction
 * Info
 * SendText
 * ShowCodec
 * ShowOSD
 * Player
 * Move
 * SetPartymode
 * SetRepeat
 * SetShuffle
 * Zoom
 * PVR
 * GetChannelGroups
 * GetChannelGroupDetails
 * GetChannels
 * GetChannelDetails
 * GetProperties
 * Record
 * Scan
 * System
 * EjectOpticalDrive
 * VideoLibrary
 * RemoveEpisode
 * RemoveMovie
 * RemoteMusicVideo
 * RemoveTVShow
 * SetEpisodeDetails
 * SetMovieDetails
 * SetMusicVideoDetails
 * SetTVShowDetails

New Notifications

 * Application
 * OnVolumeChanged
 * AudioLibrary
 * OnCleanStarted
 * OnCleanFinished
 * OnScanStarted
 * OnScanFinished
 * Input
 * OnInputRequested
 * OnInputFinished
 * Playlist
 * OnAdd
 * OnRemove
 * OnClear
 * VideoLibrary
 * OnCleanStarted
 * OnCleanFinished
 * OnScanStarted
 * OnScanFinished

Miscellaneous

 * WebSocket transport

General
The webserver has been improved to use a thread pool of four threads instead of using a single thread to handle incoming requests.

Image Handler /image
A new /image handler to provide access to cached images (thumbnails, fanart, ...) of media items has been added to replace the existing /vfs handler. The image URL (image://) returned by JSON-RPC needs to be URL encoded before appending it like a path to http://: /image/

HTTP POST
When sending HTTP POST requests to the /jsonrpc handler the client MUST specify the HTTP header Content-Type: application/json

HTTP GET
When calling the /jsonrpc handler the whole JSON-RPC Introspect in form of a JSON schema description will be returned.

Virtual FileSystem Handler /vfs
In an effort to make the /vfs handler more secure (in Eden and before it allowed access to literally any file on the local hard disc and on network shares accessible to XBMC) the access has been limited to files within directories that have been specified by the user as sources (video, music, files, programs) in XBMC.

Screensavers and visualizations
Python screensavers are now available. Scripts can extend the xbmc.ui.screensaver extension point and will be run when XBMC goes idle. If the screensaver also extends xbmc.python.script, it will show up in the Programs window and can be run as a regular script as well.

= References =