Bug JSONRPC.Introspect is missing methods
#1
It looks like JSONRPC.Introspect is not returning all methods when displayed using one of the urls below.

Code:

http://localhost:8080/jsonrpc
http://localhost:8080/jsonrpc?request={"jsonrpc":"2.0","method":"JSONRPC.Introspect","params":{},"id":1}

For example the definition of Player.Open is missing in the result.

If the request is performed using a tcp connection on port 9090 it returns the full definition

I tested on 20.2.0, v20 nightly and v21 nightly builds
Reply
#2
Tested... The data is there; however it's ignored by the parser; I believe it might be malformed. Passes linter, might be a nesting issue?  I'll look deeper.

json:
{ "description": "JSON-RPC API of XBMC", "id": "http://xbmc.org/jsonrpc/ServiceDescription.json", "methods": { "Player.AddSubtitle": { "description": "Add subtitle to the player", "params": [ { "$ref": "Player.Id", "name": "playerid", "required": true }, { "description": "Local path or remote URL to the subtitle file to load", "name": "subtitle", "required": true, "type": "string" } ], "returns": { "type": "string" }, "type": "method" }, "Player.GetActivePlayers": { "description": "Returns all active players", "params": [], "returns": { "items": { "properties": { "playerid": { "$ref": "Player.Id", "required": true }, "playertype": { "enums": [ "internal", "external", "remote" ], "required": true, "type": "string" }, "type": { "$ref": "Player.Type", "required": true } }, "type": "object" }, "type": "array", "uniqueItems": true }, "type": "method" }, "Player.GetAudioDelay": { "description": "Get the audio delay for the current playback", "params": [], "returns": { "properties": { "offset": { "description": "The offset value used in the current playback.", "required": true, "type": "number" } }, "type": "object" }, "type": "method" }, "Player.GetItem": { "description": "Retrieves the currently played item", "params": [ { "$ref": "Player.Id", "name": "playerid", "required": true }, { "$ref": "List.Fields.All", "name": "properties" } ], "returns": { "properties": { "item": { "$ref": "List.Item.All", "required": true } }, "type": "object" }, "type": "method" }, "Player.GetPlayers": { "description": "Get a list of available players", "params": [ { "default": "all", "enums": [ "all", "video", "audio" ], "name": "media", "type": "string" } ], "returns": { "items": { "properties": { "name": { "$ref": "Global.String.NotEmpty", "required": true }, "playsaudio": { "required": true, "type": "boolean" }, "playsvideo": { "required": true, "type": "boolean" }, "type": { "enums": [ "internal", "external", "remote" ], "required": true, "type": "string" } }, "type": "object" }, "type": "array", "uniqueItems": true }, "type": "method" }, "Player.GetProperties": { "description": "Retrieves the values of the given properties", "params": [ { "$ref": "Player.Id", "name": "playerid", "required": true }, { "items": { "$ref": "Player.Property.Name" }, "name": "properties", "required": true, "type": "array", "uniqueItems": true } ], "returns": { "$ref": "Player.Property.Value" }, "type": "method" }, "Player.GetViewMode": { "description": "Get view mode of video player", "params": [], "returns": { "properties": { "nonlinearstretch": { "required": true, "type": "boolean" }, "pixelratio": { "required": true, "type": "number" }, "verticalshift": { "required": true, "type": "number" }, "viewmode": { "$ref": "Player.ViewMode", "required": true }, "zoom": { "required": true, "type": "number" } }, "type": "object" }, "type": "method" }, "Player.GoTo": { "description": "Go to previous/next/specific item in the playlist", "params": [ { "$ref": "Player.Id", "name": "playerid", "required": true }, { "name": "to", "required": true, "type": [ { "enums": [ "previous", "next" ], "type": "string" }, { "$ref": "Playlist.Position", "description": "position in playlist" } ] } ], "returns": { "type": "string" }, "type": "method" }, "Player.Move": { "description": "If picture is zoomed move viewport left/right/up/down otherwise skip previous/next", "params": [ { "$ref": "Player.Id", "name": "playerid", "required": true }, { "enums": [ "left", "right", "up", "down" ], "name": "direction", "required": true, "type": "string" } ], "returns": { "type": "string" }, "type": "method" }, "Player.Open": { "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.", "params": [ { "name": "item", "type": [ { "additionalProperties": false, "properties": { "playlistid": { "$ref": "Playlist.Id", "required": true }, "position": { "$ref": "Playlist.Position", "default": 0 } }, "type": "object" }, { "$ref": "Playlist.Item" }, { "additionalProperties": false, "properties": { "path": { "required": true, "type": "string" }, "random": { "default": true, "description": "Deprecated, use the shuffled property of the options parameter instead", "type": "boolean" }, "recursive": { "default": true, "type": "boolean" } }, "type": "object" }, { "additionalProperties": false, "properties": { "partymode": { "default": "", "type": [ { "enums": [ "music", "video" ], "type": "string" }, { "description": "Path to a smartplaylist (*.xsp) file", "minLength": 5, "type": "string" } ] } }, "type": "object" }, { "additionalProperties": false, "properties": { "broadcastid": { "$ref": "Library.Id", "required": true } }, "type": "object" }, { "additionalProperties": false, "properties": { "channelid": { "$ref": "Library.Id", "required": true } }, "type": "object" }, { "additionalProperties": false, "properties": { "recordingid": { "$ref": "Library.Id", "required": true } }, "type": "object" } ] }, { "additionalProperties": false, "name": "options", "properties": { "playername": { "default": null, "type": [ { "type": "null" }, { "enums": [ "default" ], "type": "string" }, { "description": "name of player", "minLength": 1, "type": "string" } ] }, "repeat": { "default": null, "type": [ { "type": "null" }, { "$ref": "Player.Repeat" } ] }, "resume": { "default": false, "type": [ { "description": "Whether to resume from the resume point or not", "type": "boolean" }, { "$ref": "Player.Position.Percentage", "description": "Percentage value to start from" }, { "$ref": "Player.Position.Time", "description": "Time to start from" } ] }, "shuffled": { "$ref": "Optional.Boolean", "default": null } }, "type": "object" } ], "returns": { "type": "string" }, "type": "method" }, "Player.PlayPause": { "description": "Pauses or unpause playback and returns the new state", "params": [ { "$ref": "Player.Id", "name": "playerid", "required": true }, { "$ref": "Global.Toggle", "default": "toggle", "name": "play" } ], "returns": { "$ref": "Player.Speed" }, "type": "method" }, "Player.Rotate": { "description": "Rotates current picture", "params": [ { "$ref": "Player.Id", "name": "playerid", "required": true }, { "default": "clockwise", "enums": [ "clockwise", "counterclockwise" ], "name": "value", "type": "string" } ], "returns": { "type": "string" }, "type": "method" }, "Player.Seek": { "description": "Seek through the playing item", "params": [ { "$ref": "Player.Id", "name": "playerid", "required": true }, { "name": "value", "required": true, "type": [ { "additionalProperties": false, "properties": { "percentage": { "$ref": "Player.Position.Percentage", "description": "Percentage value to seek to", "required": true } }, "type": "object" }, { "additionalProperties": false, "properties": { "time": { "$ref": "Player.Position.Time", "description": "Time to seek to", "required": true } }, "type": "object" }, { "additionalProperties": false, "properties": { "step": { "description": "Seek by predefined jumps", "enums": [ "smallforward", "smallbackward", "bigforward", "bigbackward" ], "required": true, "type": "string" } }, "type": "object" }, { "additionalProperties": false, "properties": { "seconds": { "description": "Seek by the given number of seconds", "required": true, "type": "integer" } }, "type": "object" } ] } ], "returns": { "properties": { "percentage": { "$ref": "Player.Position.Percentage", "default": 0 }, "time": { "$ref": "Global.Time", "description": "A duration." }, "totaltime": { "$ref": "Global.Time", "description": "A duration." } }, "type": "object" }, "type": "method" }, "Player.SetAudioDelay": { "description": "Set the audio delay for the current playback", "params": [ { "$ref": "Player.Id", "name": "playerid", "required": true }, { "name": "offset", "required": true, "type": [ { "description": "The value should be a multiple of 0.025 in a range of +/-10 (the default range can be overriden by advancedsettings.xml).", "type": "number" }, { "$ref": "Global.IncrementDecrement" } ] } ], "returns": { "properties": { "offset": { "description": "The offset value used in the current playback.", "required": true, "type": "number" } }, "type": "object" }, "type": "method" }, "Player.SetAudioStream": { "description": "Set the audio stream played by the player", "params": [ { "$ref": "Player.Id", "name": "playerid", "required": true }, { "name": "stream", "required": true, "type": [ { "enums": [ "previous", "next" ], "type": "string" }, { "description": "Index of the audio stream to play", "minimum": 0, "type": "integer" } ] } ], "returns": { "type": "string" }, "type": "method" }, "Player.SetPartymode": { "description": "Turn partymode on or off", "params": [ { "$ref": "Player.Id", "name": "playerid", "required": true }, { "$ref": "Global.Toggle", "name": "partymode", "required": true } ], "returns": { "type": "string" }, "type": "method" }, "Player.SetRepeat": { "description": "Set the repeat mode of the player", "params": [ { "$ref": "Player.Id", "name": "playerid", "required": true }, { "name": "repeat", "required": true, "type": [ { "$ref": "Player.Repeat" }, { "enums": [ "cycle" ], "type": "string" } ] } ], "returns": { "type": "string" }, "type": "method" }, "Player.SetShuffle": { "description": "Shuffle/Unshuffle items in the player", "params": [ { "$ref": "Player.Id", "name": "playerid", "required": true }, { "$ref": "Global.Toggle", "name": "shuffle", "required": true } ], "returns": { "type": "string" }, "type": "method" }, "Player.SetSpeed": { "description": "Set the speed of the current playback", "params": [ { "$ref": "Player.Id", "name": "playerid", "required": true }, { "name": "speed", "required": true, "type": [ { "enums": [ -32, -16, -8, -4, -2, -1, 0, 1, 2, 4, 8, 16, 32 ], "type": "integer" }, { "$ref": "Global.IncrementDecrement" } ] } ], "returns": { "$ref": "Player.Speed" }, "type": "method" }, "Player.SetSubtitle": { "description": "Set the subtitle displayed by the player", "params": [ { "$ref": "Player.Id", "name": "playerid", "required": true }, { "name": "subtitle", "required": true, "type": [ { "enums": [ "previous", "next", "off", "on" ], "type": "string" }, { "description": "Index of the subtitle to display", "minimum": 0, "type": "integer" } ] }, { "default": false, "description": "Whether to enable subtitles to be displayed after setting the new subtitle", "name": "enable", "type": "boolean" } ], "returns": { "type": "string" }, "type": "method" }, "Player.SetVideoStream": { "description": "Set the video stream played by the player", "params": [ { "$ref": "Player.Id", "name": "playerid", "required": true }, { "name": "stream", "required": true, "type": [ { "enums": [ "previous", "next" ], "type": "string" }, { "description": "Index of the video stream to play", "minimum": 0, "type": "integer" } ] } ], "returns": { "type": "string" }, "type": "method" }, "Player.SetViewMode": { "description": "Set view mode of video player", "params": [ { "name": "viewmode", "required": true, "type": [ { "$ref": "Player.CustomViewMode", "description": "Custom view mode" }, { "$ref": "Player.ViewMode" } ] } ], "returns": { "type": "string" }, "type": "method" }, "Player.Stop": { "description": "Stops playback", "params": [ { "$ref": "Player.Id", "name": "playerid", "required": true } ], "returns": { "type": "string" }, "type": "method" }, "Player.Zoom": { "description": "Zoom current picture", "params": [ { "$ref": "Player.Id", "name": "playerid", "required": true }, { "name": "zoom", "required": true, "type": [ { "enums": [ "in", "out" ], "type": "string" }, { "description": "zoom level", "maximum": 10, "minimum": 1, "type": "integer" } ] } ], "returns": { "type": "string" }, "type": "method" } }, "types": { "Array.Integer": { "id": "Array.Integer", "items": { "type": "integer" }, "type": "array" }, "Array.String": { "id": "Array.String", "items": { "minLength": 1, "type": "string" }, "type": "array" }, "Audio.Album.ReleaseType": { "default": "album", "enums": [ "album", "single" ], "id": "Audio.Album.ReleaseType", "type": "string" }, "Audio.Contributors": { "id": "Audio.Contributors", "items": { "additionalProperties": false, "description": "The artist and the role they contribute to a song", "properties": { "artistid": { "$ref": "Library.Id", "required": true }, "name": { "required": true, "type": "string" }, "role": { "required": true, "type": "string" }, "roleid": { "$ref": "Library.Id", "required": true } }, "type": "object" }, "type": "array" }, "Audio.Details.Base": { "extends": "Media.Details.Base", "id": "Audio.Details.Base", "properties": { "art": { "$ref": "Media.Artwork" }, "dateadded": { "default": "", "type": "string" }, "genre": { "$ref": "Array.String" } } }, "Audio.Details.Media": { "extends": "Audio.Details.Base", "id": "Audio.Details.Media", "properties": { "artist": { "$ref": "Array.String" }, "artistid": { "$ref": "Array.Integer" }, "displayartist": { "default": "", "type": "string" }, "musicbrainzalbumartistid": { "$ref": "Array.String" }, "originaldate": { "default": "", "type": "string" }, "rating": { "default": 0, "type": "number" }, "releasedate": { "default": "", "type": "string" }, "sortartist": { "default": "", "type": "string" }, "title": { "default": "", "type": "string" }, "userrating": { "default": 0, "type": "integer" }, "votes": { "default": 0, "type": "integer" }, "year": { "default": 0, "type": "integer" } } }, "Files.Media": { "default": "video", "enums": [ "video", "music", "pictures", "files", "programs" ], "id": "Files.Media", "type": "string" }, "Global.IncrementDecrement": { "default": "increment", "enums": [ "increment", "decrement" ], "id": "Global.IncrementDecrement", "type": "string" }, "Global.String.NotEmpty": { "default": "", "id": "Global.String.NotEmpty", "minLength": 1, "type": "string" }, "Global.Time": { "additionalProperties": false, "description": "A duration.", "id": "Global.Time", "properties": { "hours": { "minimum": 0, "required": true, "type": "integer" }, "milliseconds": { "maximum": 999, "minimum": 0, "required": true, "type": "integer" }, "minutes": { "maximum": 59, "minimum": 0, "required": true, "type": "integer" }, "seconds": { "maximum": 59, "minimum": 0, "required": true, "type": "integer" } }, "type": "object" }, "Global.Toggle": { "default": null, "id": "Global.Toggle", "type": [ { "type": "boolean" }, { "enums": [ "toggle" ], "type": "string" } ] }, "Item.CustomProperties": { "additionalProperties": { "$ref": "Global.String.NotEmpty", "default": "" }, "id": "Item.CustomProperties", "type": "object" }, "Item.Details.Base": { "id": "Item.Details.Base", "properties": { "label": { "required": true, "type": "string" } }, "type": "object" }, "Item.Fields.Base": { "id": "Item.Fields.Base", "items": { "type": "string" }, "type": "array", "uniqueItems": true }, "Library.Id": { "default": -1, "id": "Library.Id", "minimum": 1, "type": "integer" }, "List.Fields.All": { "extends": "Item.Fields.Base", "id": "List.Fields.All", "items": { "enums": [ "title", "artist", "albumartist", "genre", "year", "rating", "album", "track", "duration", "comment", "lyrics", "musicbrainztrackid", "musicbrainzartistid", "musicbrainzalbumid", "musicbrainzalbumartistid", "playcount", "fanart", "director", "trailer", "tagline", "plot", "plotoutline", "originaltitle", "lastplayed", "writer", "studio", "mpaa", "cast", "country", "imdbnumber", "premiered", "productioncode", "runtime", "set", "showlink", "streamdetails", "top250", "votes", "firstaired", "season", "episode", "showtitle", "thumbnail", "file", "resume", "artistid", "albumid", "tvshowid", "setid", "watchedepisodes", "disc", "tag", "art", "genreid", "displayartist", "albumartistid", "description", "theme", "mood", "style", "albumlabel", "sorttitle", "episodeguide", "uniqueid", "dateadded", "channel", "channeltype", "hidden", "locked", "channelnumber", "subchannelnumber", "starttime", "endtime", "specialsortseason", "specialsortepisode", "compilation", "releasetype", "albumreleasetype", "contributors", "displaycomposer", "displayconductor", "displayorchestra", "displaylyricist", "userrating", "sortartist", "musicbrainzreleasegroupid", "mediapath", "dynpath", "isboxset", "totaldiscs", "disctitle", "releasedate", "originaldate", "bpm", "bitrate", "samplerate", "channels", "albumstatus", "datemodified", "datenew", "customproperties", "albumduration", "songvideourl" ], "type": "string" } }, "List.Item.All": { "extends": "List.Item.Base", "id": "List.Item.All", "properties": { "channel": { "default": "", "type": "string" }, "channelnumber": { "default": 0, "type": "integer" }, "channeltype": { "$ref": "PVR.Channel.Type", "default": "tv" }, "endtime": { "default": "", "type": "string" }, "hidden": { "default": false, "type": "boolean" }, "locked": { "default": false, "type": "boolean" }, "starttime": { "default": "", "type": "string" }, "subchannelnumber": { "default": 0, "type": "integer" } } }, "List.Item.Base": { "extends": [ "Video.Details.File", "Audio.Details.Media" ], "id": "List.Item.Base", "properties": { "album": { "default": "", "type": "string" }, "albumartist": { "$ref": "Array.String" }, "albumartistid": { "$ref": "Array.Integer" }, "albumid": { "$ref": "Library.Id", "default": -1 }, "albumlabel": { "default": "", "type": "string" }, "albumreleasetype": { "$ref": "Audio.Album.ReleaseType", "default": "album" }, "albumstatus": { "default": "", "type": "string" }, "bitrate": { "default": 0, "type": "integer" }, "bpm": { "default": 0, "type": "integer" }, "cast": { "$ref": "Video.Cast" }, "channels": { "default": 0, "type": "integer" }, "comment": { "default": "", "type": "string" }, "compilation": { "default": false, "type": "boolean" }, "contributors": { "$ref": "Audio.Contributors" }, "country": { "$ref": "Array.String" }, "customproperties": { "$ref": "Item.CustomProperties" }, "description": { "default": "", "type": "string" }, "disc": { "default": 0, "type": "integer" }, "disctitle": { "default": "", "type": "string" }, "displaycomposer": { "default": "", "type": "string" }, "displayconductor": { "default": "", "type": "string" }, "displaylyricist": { "default": "", "type": "string" }, "displayorchestra": { "default": "", "type": "string" }, "duration": { "default": 0, "type": "integer" }, "dynpath": { "default": "", "description": "An experimental property for debug purposes, often same as mediapath but when different gives the actual file playing that should also be in file property", "type": "string" }, "episode": { "default": 0, "type": "integer" }, "episodeguide": { "default": "", "type": "string" }, "firstaired": { "default": "", "type": "string" }, "id": { "$ref": "Library.Id", "default": -1 }, "imdbnumber": { "default": "", "type": "string" }, "isboxset": { "default": false, "type": "boolean" }, "lyrics": { "default": "", "type": "string" }, "mediapath": { "default": "", "description": "Media source path that identifies the item", "type": "string" }, "mood": { "$ref": "Array.String" }, "mpaa": { "default": "", "type": "string" }, "musicbrainzartistid": { "$ref": "Array.String" }, "musicbrainztrackid": { "default": "", "type": "string" }, "originaldate": { "default": "", "type": "string" }, "originaltitle": { "default": "", "type": "string" }, "plotoutline": { "default": "", "type": "string" }, "premiered": { "default": "", "type": "string" }, "productioncode": { "default": "", "type": "string" }, "releasedate": { "default": "", "type": "string" }, "releasetype": { "$ref": "Audio.Album.ReleaseType", "default": "album" }, "samplerate": { "default": 0, "type": "integer" }, "season": { "default": 0, "type": "integer" }, "set": { "default": "", "type": "string" }, "setid": { "$ref": "Library.Id", "default": -1 }, "showlink": { "$ref": "Array.String" }, "showtitle": { "default": "", "type": "string" }, "songvideourl": { "default": "", "type": "string" }, "sorttitle": { "default": "", "type": "string" }, "specialsortepisode": { "default": 0, "type": "integer" }, "specialsortseason": { "default": 0, "type": "integer" }, "studio": { "$ref": "Array.String" }, "style": { "$ref": "Array.String" }, "tag": { "$ref": "Array.String" }, "tagline": { "default": "", "type": "string" }, "theme": { "$ref": "Array.String" }, "top250": { "default": 0, "type": "integer" }, "totaldiscs": { "default": 0, "type": "integer" }, "track": { "default": 0, "type": "integer" }, "trailer": { "default": "", "type": "string" }, "tvshowid": { "$ref": "Library.Id", "default": -1 }, "type": { "default": "unknown", "enums": [ "unknown", "movie", "episode", "musicvideo", "song", "picture", "channel", "recording" ], "type": "string" }, "uniqueid": { "$ref": "Media.UniqueID" }, "votes": { "default": "", "type": "string" }, "watchedepisodes": { "default": 0, "type": "integer" }, "writer": { "$ref": "Array.String" } } }, "Media.Artwork": { "additionalProperties": { "$ref": "Global.String.NotEmpty", "default": "" }, "id": "Media.Artwork", "properties": { "banner": { "$ref": "Global.String.NotEmpty", "default": "" }, "fanart": { "$ref": "Global.String.NotEmpty", "default": "" }, "poster": { "$ref": "Global.String.NotEmpty", "default": "" }, "thumb": { "$ref": "Global.String.NotEmpty", "default": "" } }, "type": "object" }, "Media.Details.Base": { "extends": "Item.Details.Base", "id": "Media.Details.Base", "properties": { "fanart": { "default": "", "type": "string" }, "thumbnail": { "default": "", "type": "string" } } }, "Media.UniqueID": { "additionalProperties": { "$ref": "Global.String.NotEmpty", "default": "" }, "id": "Media.UniqueID", "type": "object" }, "Optional.Boolean": { "default": null, "id": "Optional.Boolean", "type": [ { "type": "null" }, { "type": "boolean" } ] }, "Optional.Number": { "default": null, "id": "Optional.Number", "type": [ { "type": "null" }, { "type": "number" } ] }, "PVR.Channel.Type": { "default": "tv", "enums": [ "tv", "radio" ], "id": "PVR.Channel.Type", "type": "string" }, "Player.Audio.Stream": { "id": "Player.Audio.Stream", "properties": { "bitrate": { "required": true, "type": "integer" }, "channels": { "required": true, "type": "integer" }, "codec": { "required": true, "type": "string" }, "index": { "minimum": 0, "required": true, "type": "integer" }, "isdefault": { "required": true, "type": "boolean" }, "isimpaired": { "required": true, "type": "boolean" }, "isoriginal": { "required": true, "type": "boolean" }, "language": { "required": true, "type": "string" }, "name": { "required": true, "type": "string" }, "samplerate": { "required": true, "type": "integer" } }, "type": "object" }, "Player.CustomViewMode": { "id": "Player.CustomViewMode", "properties": { "nonlinearstretch": { "default": null, "type": [ { "enums": [ "increase", "decrease" ], "type": "string" }, { "$ref": "Optional.Boolean", "description": "Flag to enable nonlinear stretch" } ] }, "pixelratio": { "default": null, "type": [ { "enums": [ "increase", "decrease" ], "type": "string" }, { "$ref": "Optional.Number", "description": "Pixel aspect ratio where 1.0 means square pixel" } ] }, "verticalshift": { "default": null, "type": [ { "enums": [ "increase", "decrease" ], "type": "string" }, { "$ref": "Optional.Number", "description": "Vertical shift 1.0 means shift to bottom" } ] }, "zoom": { "default": null, "type": [ { "enums": [ "increase", "decrease" ], "type": "string" }, { "$ref": "Optional.Number", "description": "Zoom where 1.0 means 100%" } ] } }, "required": true, "type": "object" }, "Player.Id": { "default": -1, "id": "Player.Id", "maximum": 2, "minimum": 0, "type": "integer" }, "Player.Position.Percentage": { "default": 0, "id": "Player.Position.Percentage", "maximum": 100, "minimum": 0, "type": "number" }, "Player.Position.Time": { "additionalProperties": false, "description": "A position in duration.", "id": "Player.Position.Time", "properties": { "hours": { "default": 0, "minimum": 0, "type": "integer" }, "milliseconds": { "default": 0, "maximum": 999, "minimum": 0, "type": "integer" }, "minutes": { "default": 0, "maximum": 59, "minimum": 0, "type": "integer" }, "seconds": { "default": 0, "maximum": 59, "minimum": 0, "type": "integer" } }, "type": "object" }, "Player.Property.Name": { "default": "type", "enums": [ "type", "partymode", "speed", "time", "percentage", "totaltime", "playlistid", "position", "repeat", "shuffled", "canseek", "canchangespeed", "canmove", "canzoom", "canrotate", "canshuffle", "canrepeat", "currentaudiostream", "audiostreams", "subtitleenabled", "currentsubtitle", "subtitles", "live", "currentvideostream", "videostreams", "cachepercentage" ], "id": "Player.Property.Name", "type": "string" }, "Player.Property.Value": { "id": "Player.Property.Value", "properties": { "audiostreams": { "items": { "$ref": "Player.Audio.Stream" }, "type": "array" }, "cachepercentage": { "$ref": "Player.Position.Percentage", "default": 0 }, "canchangespeed": { "default": false, "type": "boolean" }, "canmove": { "default": false, "type": "boolean" }, "canrepeat": { "default": false, "type": "boolean" }, "canrotate": { "default": false, "type": "boolean" }, "canseek": { "default": false, "type": "boolean" }, "canshuffle": { "default": false, "type": "boolean" }, "canzoom": { "default": false, "type": "boolean" }, "currentaudiostream": { "$ref": "Player.Audio.Stream" }, "currentsubtitle": { "$ref": "Player.Subtitle" }, "currentvideostream": { "$ref": "Player.Video.Stream" }, "live": { "default": false, "type": "boolean" }, "partymode": { "default": false, "type": "boolean" }, "percentage": { "$ref": "Player.Position.Percentage", "default": 0 }, "playlistid": { "$ref": "Playlist.Id", "default": -1 }, "position": { "$ref": "Playlist.Position", "default": -1 }, "repeat": { "$ref": "Player.Repeat", "default": "off" }, "shuffled": { "default": false, "type": "boolean" }, "speed": { "default": 0, "type": "integer" }, "subtitleenabled": { "default": false, "type": "boolean" }, "subtitles": { "items": { "$ref": "Player.Subtitle" }, "type": "array" }, "time": { "$ref": "Global.Time", "description": "A duration." }, "totaltime": { "$ref": "Global.Time", "description": "A duration." }, "type": { "$ref": "Player.Type", "default": "video" }, "videostreams": { "items": { "$ref": "Player.Video.Stream" }, "type": "array" } }, "type": "object" }, "Player.Repeat": { "default": "off", "enums": [ "off", "one", "all" ], "id": "Player.Repeat", "type": "string" }, "Player.Speed": { "id": "Player.Speed", "properties": { "speed": { "default": 0, "type": "integer" } }, "required": true, "type": "object" }, "Player.Subtitle": { "id": "Player.Subtitle", "properties": { "index": { "minimum": 0, "required": true, "type": "integer" }, "isdefault": { "required": true, "type": "boolean" }, "isforced": { "required": true, "type": "boolean" }, "isimpaired": { "required": true, "type": "boolean" }, "language": { "required": true, "type": "string" }, "name": { "required": true, "type": "string" } }, "type": "object" }, "Player.Type": { "default": "video", "enums": [ "video", "audio", "picture" ], "id": "Player.Type", "type": "string" }, "Player.Video.Stream": { "id": "Player.Video.Stream", "properties": { "codec": { "required": true, "type": "string" }, "height": { "required": true, "type": "integer" }, "index": { "minimum": 0, "required": true, "type": "integer" }, "language": { "required": true, "type": "string" }, "name": { "required": true, "type": "string" }, "width": { "required": true, "type": "integer" } }, "type": "object" }, "Player.ViewMode": { "default": "normal", "enums": [ "normal", "zoom", "stretch4x3", "widezoom", "stretch16x9", "original", "stretch16x9nonlin", "zoom120width", "zoom110width" ], "id": "Player.ViewMode", "type": "string" }, "Playlist.Id": { "default": -1, "id": "Playlist.Id", "maximum": 2, "minimum": 0, "type": "integer" }, "Playlist.Item": { "id": "Playlist.Item", "type": [ { "additionalProperties": false, "properties": { "file": { "description": "Path to a file (not a directory) to be added to the playlist", "required": true, "type": "string" } }, "type": "object" }, { "additionalProperties": false, "properties": { "directory": { "required": true, "type": "string" }, "media": { "$ref": "Files.Media", "default": "files" }, "recursive": { "default": false, "type": "boolean" } }, "type": "object" }, { "additionalProperties": false, "properties": { "movieid": { "$ref": "Library.Id", "required": true } }, "type": "object" }, { "additionalProperties": false, "properties": { "episodeid": { "$ref": "Library.Id", "required": true } }, "type": "object" }, { "additionalProperties": false, "properties": { "musicvideoid": { "$ref": "Library.Id", "required": true } }, "type": "object" }, { "additionalProperties": false, "properties": { "artistid": { "$ref": "Library.Id", "required": true } }, "type": "object" }, { "additionalProperties": false, "properties": { "albumid": { "$ref": "Library.Id", "required": true } }, "type": "object" }, { "additionalProperties": false, "properties": { "songid": { "$ref": "Library.Id", "required": true } }, "type": "object" }, { "additionalProperties": false, "properties": { "genreid": { "$ref": "Library.Id", "description": "Identification of a genre from the AudioLibrary", "required": true } }, "type": "object" }, { "additionalProperties": false, "properties": { "recordingid": { "$ref": "Library.Id", "description": "Identification of a PVR recording", "required": true } }, "type": "object" } ] }, "Playlist.Position": { "default": -1, "id": "Playlist.Position", "minimum": 0, "type": "integer" }, "Video.Cast": { "id": "Video.Cast", "items": { "additionalProperties": false, "properties": { "name": { "required": true, "type": "string" }, "order": { "required": true, "type": "integer" }, "role": { "required": true, "type": "string" }, "thumbnail": { "default": "", "type": "string" } }, "type": "object" }, "type": "array" }, "Video.Details.Base": { "extends": "Media.Details.Base", "id": "Video.Details.Base", "properties": { "art": { "$ref": "Media.Artwork" }, "playcount": { "default": 0, "type": "integer" } } }, "Video.Details.File": { "extends": "Video.Details.Item", "id": "Video.Details.File", "properties": { "director": { "$ref": "Array.String" }, "resume": { "$ref": "Video.Resume" }, "runtime": { "default": 0, "description": "Runtime in seconds", "type": "integer" }, "streamdetails": { "$ref": "Video.Streams" } } }, "Video.Details.Item": { "extends": "Video.Details.Media", "id": "Video.Details.Item", "properties": { "dateadded": { "default": "", "type": "string" }, "file": { "default": "", "type": "string" }, "lastplayed": { "default": "", "type": "string" }, "plot": { "default": "", "type": "string" } } }, "Video.Details.Media": { "extends": "Video.Details.Base", "id": "Video.Details.Media", "properties": { "title": { "default": "", "type": "string" } } }, "Video.Resume": { "additionalProperties": false, "id": "Video.Resume", "properties": { "position": { "default": 0, "minimum": 0, "type": "number" }, "total": { "default": 0, "minimum": 0, "type": "number" } }, "type": "object" }, "Video.Streams": { "additionalProperties": false, "id": "Video.Streams", "properties": { "audio": { "items": { "additionalProperties": false, "properties": { "channels": { "default": 0, "type": "integer" }, "codec": { "default": "", "type": "string" }, "language": { "default": "", "type": "string" } }, "type": "object" }, "minItems": 1, "type": "array" }, "subtitle": { "items": { "additionalProperties": false, "properties": { "language": { "default": "", "type": "string" } }, "type": "object" }, "minItems": 1, "type": "array" }, "video": { "items": { "additionalProperties": false, "properties": { "aspect": { "default": 0, "type": "number" }, "codec": { "default": "", "type": "string" }, "duration": { "default": 0, "type": "integer" }, "hdrtype": { "default": "", "type": "string" }, "height": { "default": 0, "type": "integer" }, "width": { "default": 0, "type": "integer" } }, "type": "object" }, "minItems": 1, "type": "array" } }, "type": "object" } }, "version": "13.3.0" }
Image Lunatixz - Kodi / Beta repository
Image PseudoTV - Forum | Website | Youtube | Help?
Reply
#3
I think the filtering has to do with the permission set in https://github.com/xbmc/xbmc/blob/master....json#L115

For example all methods with permission ControlPlayback are missing

Code:

"Player.Open": {
"type": "method",
"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.",
"transport": "Response",
"permission": "ControlPlayback",
Reply

Logout Mark Read Team Forum Stats Members Help
JSONRPC.Introspect is missing methods0