Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/smartdevicelink/rpc_spec
Spec for RPC messages
https://github.com/smartdevicelink/rpc_spec
Last synced: 4 days ago
JSON representation
Spec for RPC messages
- Host: GitHub
- URL: https://github.com/smartdevicelink/rpc_spec
- Owner: smartdevicelink
- License: bsd-3-clause
- Created: 2015-03-04T20:03:24.000Z (over 9 years ago)
- Default Branch: master
- Last Pushed: 2021-10-27T13:41:15.000Z (about 3 years ago)
- Last Synced: 2024-04-13T03:34:30.941Z (7 months ago)
- Language: Python
- Size: 2.51 MB
- Stars: 15
- Watchers: 16
- Forks: 32
- Open Issues: 39
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
# SmartDeviceLink
# RPC Spec###### Version: 8.0.0
## Enumerations
### Result
##### Elements| Value | Description |
| ---------- |:-----------:|
|`SUCCESS`|The request succeeded|
|`UNSUPPORTED_REQUEST`|The request is not supported by the headunit|
|`UNSUPPORTED_RESOURCE`|One or more of the items (phoneme type, button name, image type, etc.) in the request is not supported by the HMI.|
|`DISALLOWED`|RPC is not authorized in local policy table.|
|`REJECTED`|The requested command was rejected, e.g. because mobile app is in background and cannot perform any HMI commands. Or an HMI command (e.g. Speak) is rejected because a higher priority HMI command (e.g. Alert) is playing.|
|`ABORTED`|A command was aborted, for example due to user interaction (e.g. user pressed button). Or an HMI command (e.g. Speak) is aborted because a higher priority HMI command (e.g. Alert) was requested.|
|`IGNORED`|A command was ignored, because the intended result is already in effect. For example, SetMediaClockTimer was used to pause the media clock although the clock is paused already. NOTE: potentially replaces SUBSCRIBED_ALREADY|
|`RETRY`|The user interrupted the RPC (e.g. PerformAudioPassThru) and indicated to start over. Note, the app must issue the new RPC.|
|`IN_USE`|The data may not be changed, because it is currently in use. For example when trying to delete a command set that is currently involved in an interaction.|
|`VEHICLE_DATA_NOT_AVAILABLE`|The requested vehicle data is not available on this vehicle or is not published.|
|`TIMED_OUT`|Overlay reached the maximum timeout and closed.|
|`INVALID_DATA`|The data sent is invalid. For example: Invalid Json syntax Parameters out of bounds (number or enum range) Mandatory parameters not provided Parameter provided with wrong type Invalid characters Empty string|
|`CHAR_LIMIT_EXCEEDED`||
|`INVALID_ID`|One of the provided IDs is not valid. For example This applies to CorrelationID, SubscriptionID, CommandID, MenuID, etc.|
|`DUPLICATE_NAME`|There was a conflict with an registered name (application or menu item) or vr command|
|`APPLICATION_NOT_REGISTERED`|An command can not be executed because no application has been registered with RegisterApplication.|
|`WRONG_LANGUAGE`|The requested language is currently not supported. Might be because of a mismatch of the currently active language on the headunit and the requested language|
|`OUT_OF_MEMORY`|The system could not process the request because the necessary memory couldn't be allocated|
|`TOO_MANY_PENDING_REQUESTS`|There are too many requests pending (means, that the response has not been delivered, yet).There may be a maximum of 1000 pending requests at a time.|
|`TOO_MANY_APPLICATIONS`|There are already too many registered applications|
|`APPLICATION_REGISTERED_ALREADY`|RegisterApplication has been called again, after a RegisterApplication was successful before.|
|`WARNINGS`|The RPC (e.g. SubscribeVehicleData) executed successfully but one or more items have a warning or failure.|
|`GENERIC_ERROR`|Provided data is valid but something went wrong in the lower layers.|
|`USER_DISALLOWED`|RPC is included in a functional group explicitly blocked by the user.|
|`TRUNCATED_DATA`|The RPC (e.g. ReadDID) executed successfully but the data exceeded the platform maximum threshold and thus, only part of the data is available.|
|`UNSUPPORTED_VERSION`|Sync doesn't support the protocol that is requested by the mobile application|
|`VEHICLE_DATA_NOT_ALLOWED`|The user has turned off access to vehicle data, and it is globally unavailable to mobile applications.|
|`FILE_NOT_FOUND`|A specified file could not be found on the headunit.|
|`CANCEL_ROUTE`|User selected to Cancel Route.|
|`SAVED`|The RPC (e.g. Slider) executed successfully and the user elected to save the current position / value.|
|`INVALID_CERT`|The certificate provided during authentication is invalid.|
|`EXPIRED_CERT`|The certificate provided during authentication is expired.|
|`RESUME_FAILED`|The provided hash ID does not match the hash of the current set of registered data or the core could not resume the previous data.|
|`DATA_NOT_AVAILABLE`|The requested information is currently not available. This is different than UNSUPPORTED_RESOURCE because it implies the data is at some point available.|
|`READ_ONLY`|The value being set is read only|
|`CORRUPTED_DATA`|The data sent failed to pass CRC check in receiver end|
|`ENCRYPTION_NEEDED`|SDL receives an un-encrypted RPC request that needs protection.|### ButtonPressMode
##### Elements| Value | Description |
| ---------- |:-----------:|
|`LONG`|A button was released, after it was pressed for a long time Actual timing is defined by the headunit and may vary|
|`SHORT`|A button was released, after it was pressed for a short time Actual timing is defined by the headunit and may vary|### ButtonEventMode
##### Elements| Value | Description |
| ---------- |:-----------:|
|`BUTTONUP`|A button has been released up|
|`BUTTONDOWN`|A button has been pressed down|### Language
##### Elements| Value | Description |
| ---------- |:-----------:|
|`EN-US`|English - US|
|`ES-MX`|Spanish - Mexico|
|`FR-CA`|French - Canada|
|`DE-DE`|German - Germany|
|`ES-ES`|Spanish - Spain|
|`EN-GB`|English - GB|
|`RU-RU`|Russian - Russia|
|`TR-TR`|Turkish - Turkey|
|`PL-PL`|Polish - Poland|
|`FR-FR`|French - France|
|`IT-IT`|Italian - Italy|
|`SV-SE`|Swedish - Sweden|
|`PT-PT`|Portuguese - Portugal|
|`NL-NL`|Dutch (Standard) - Netherlands|
|`EN-AU`|English - Australia|
|`ZH-CN`|Mandarin - China|
|`ZH-TW`|Mandarin - Taiwan|
|`JA-JP`|Japanese - Japan|
|`AR-SA`|Arabic - Saudi Arabia|
|`KO-KR`|Korean - South Korea|
|`PT-BR`|Portuguese - Brazil|
|`CS-CZ`|Czech - Czech Republic|
|`DA-DK`|Danish - Denmark|
|`NO-NO`|Norwegian - Norway|
|`NL-BE`|Dutch (Flemish) - Belgium|
|`EL-GR`|Greek - Greece|
|`HU-HU`|Hungarian - Hungary|
|`FI-FI`|Finnish - Finland|
|`SK-SK`|Slovak - Slovakia|
|`EN-IN`|English - India|
|`TH-TH`|Thai - Thailand|
|`EN-SA`|English - Middle East|
|`HE-IL`|Hebrew - Israel|
|`RO-RO`|Romanian - Romania|
|`UK-UA`|Ukrainian - Ukraine|
|`ID-ID`|Indonesian - Indonesia|
|`VI-VN`|Vietnamese - Vietnam|
|`MS-MY`|Malay - Malaysia|
|`HI-IN`|Hindi - India|### UpdateMode
Describes how the media clock timer should behave on the platform##### Elements
| Value | Description |
| ---------- |:-----------:|
|`COUNTUP`|Starts the media clock timer counting upwards, as in time elapsed.|
|`COUNTDOWN`|Starts the media clock timer counting downwards, as in time remaining.|
|`PAUSE`|Pauses the media clock timer|
|`RESUME`|Resume the media clock timer|
|`CLEAR`|Clears the media clock timer (previously done through Show->mediaClock)|### TimerMode
##### Elements| Value | Description |
| ---------- |:-----------:|
|`UP`|Causes the media clock timer to update from 0:00 to a specified time|
|`DOWN`|Causes the media clock timer to update from a specified time to 0:00|
|`NONE`|Indicates to not use the media clock timer|### InteractionMode
For application-requested interactions, this mode indicates the method in which the user is notified and uses the interaction.##### Elements
| Value | Description |
| ---------- |:-----------:|
|`MANUAL_ONLY`|This mode causes the interaction to only occur on the display, meaning the choices are provided only via the display. No Voice Interaction.|
|`VR_ONLY`|This mode causes the interaction to only occur using the headunits VR system. Selections are made by saying the command.|
|`BOTH`|This mode causes both a VR and display selection option for an interaction. The user will first be asked via Voice Interaction (if available). If this is unsuccessful, the system will switch to manual input.|### LayoutMode
For touchscreen interactions, the mode of how the choices are presented.##### Elements
| Value | Description |
| ---------- |:-----------:|
|`ICON_ONLY`|This mode causes the interaction to display the previous set of choices as icons.|
|`ICON_WITH_SEARCH`|This mode causes the interaction to display the previous set of choices as icons along with a search field in the HMI.|
|`LIST_ONLY`|This mode causes the interaction to display the previous set of choices as a list.|
|`LIST_WITH_SEARCH`|This mode causes the interaction to display the previous set of choices as a list along with a search field in the HMI.|
|`KEYBOARD`|This mode causes the interaction to immediately display a keyboard entry through the HMI.|### WindowType
##### Elements| Value | Description |
| ---------- |:-----------:|
|`MAIN`|This window type describes the main window on a display.|
|`WIDGET`|A widget is a small window that the app can create to provide information and soft buttons for quick app control.|### PredefinedWindows
Specifies IDs for windows which are predefined and pre-created. The mobile libraries and SDL Core use the integer value when referencing these elements.##### Elements
| Value | Description |
| ---------- |:-----------:|
|`DEFAULT_WINDOW`|The default window is a main window pre-created on behalf of the app.|
|`PRIMARY_WIDGET`|The primary widget of the app.|### HMILevel
Enumeration that describes current levels of HMI.##### Elements
| Value | Description |
| ---------- |:-----------:|
|`FULL`||
|`LIMITED`||
|`BACKGROUND`||
|`NONE`||### AudioStreamingState
Enumeration that describes possible states of audio streaming.##### Elements
| Value | Description |
| ---------- |:-----------:|
|`AUDIBLE`||
|`ATTENUATED`||
|`NOT_AUDIBLE`||### SystemAction
Enumeration that describes system actions that can be triggered.##### Elements
| Value | Description |
| ---------- |:-----------:|
|`DEFAULT_ACTION`|Default action occurs. Standard behavior (e.g. SoftButton clears overlay).|
|`STEAL_FOCUS`|App is brought into HMI_FULL.|
|`KEEP_CONTEXT`|Current system context is maintained. An overlay is persisted even though a SoftButton has been pressed and the notification sent.|### SystemContext
Enumeration that describes possible contexts an app's HMI might be in. Communicated to whichever app is in HMI FULL, except Alert.##### Elements
| Value | Description |
| ---------- |:-----------:|
|`MAIN`|The app's persistent display (whether media/non-media/navigation) is fully visible onscreen.|
|`VRSESSION`|The system is currently in a VR session (with whatever dedicated VR screen being overlaid onscreen).|
|`MENU`|The system is currently displaying an in-App menu onscreen.|
|`HMI_OBSCURED`|The app's display HMI is currently being obscured by either a system or other app's overlay.|
|`ALERT`|Broadcast only to whichever app has an alert currently being displayed.|### VideoStreamingState
Enumeration that describes possible states of video streaming.##### Elements
| Value | Description |
| ---------- |:-----------:|
|`STREAMABLE`||
|`NOT_STREAMABLE`||### SoftButtonType
Contains information about the SoftButton capabilities.##### Elements
| Value | Description |
| ---------- |:-----------:|
|`TEXT`||
|`IMAGE`||
|`BOTH`||### AppInterfaceUnregisteredReason
Error code, which comes from the module side.##### Elements
| Value | Description |
| ---------- |:-----------:|
|`IGNITION_OFF`||
|`BLUETOOTH_OFF`||
|`USB_DISCONNECTED`||
|`REQUEST_WHILE_IN_NONE_HMI_LEVEL`||
|`TOO_MANY_REQUESTS`||
|`DRIVER_DISTRACTION_VIOLATION`||
|`LANGUAGE_CHANGE`||
|`MASTER_RESET`||
|`FACTORY_DEFAULTS`||
|`APP_UNAUTHORIZED`||
|`PROTOCOL_VIOLATION`||
|`UNSUPPORTED_HMI_RESOURCE`||
|`RESOURCE_CONSTRAINT`|By sending this value, SDL unregisters the application to allow the HMI to close the application.|### TriggerSource
Indicates the source from where the command was triggered.##### Elements
| Value | Description |
| ---------- |:-----------:|
|`MENU`||
|`VR`||
|`KEYBOARD`||### HmiZoneCapabilities
Contains information about the HMI zone capabilities. For future use.##### Elements
| Value | Description |
| ---------- |:-----------:|
|`FRONT`||
|`BACK`||### SpeechCapabilities
Contains information about the TTS capabilities.##### Elements
| Value | Description |
| ---------- |:-----------:|
|`TEXT`||
|`SAPI_PHONEMES`||
|`LHPLUS_PHONEMES`||
|`PRE_RECORDED`||
|`SILENCE`||
|`FILE`||### VrCapabilities
Contains information about the VR capabilities.##### Elements
| Value | Description |
| ---------- |:-----------:|
|`TEXT`||### PrerecordedSpeech
Contains a list of prerecorded speech items present on the platform.##### Elements
| Value | Description |
| ---------- |:-----------:|
|`HELP_JINGLE`||
|`INITIAL_JINGLE`||
|`LISTEN_JINGLE`||
|`POSITIVE_JINGLE`||
|`NEGATIVE_JINGLE`||### SamplingRate
Describes different sampling options for PerformAudioPassThru.##### Elements
| Value | Description |
| ---------- |:-----------:|
|`8KHZ`|Sampling rate of 8000 Hz.|
|`16KHZ`|Sampling rate of 16000 Hz.|
|`22KHZ`|Sampling rate of 22050 Hz.|
|`44KHZ`|Sampling rate of 44100 Hz.|### BitsPerSample
Describes different quality options for PerformAudioPassThru.##### Elements
| Value | Description |
| ---------- |:-----------:|
|`8_BIT`|Audio sample is 8 bits wide, unsigned.|
|`16_BIT`|Audio sample is 16 bits wide, signed, and in little endian.|### AudioType
Describes different audio type options for PerformAudioPassThru.##### Elements
| Value | Description |
| ---------- |:-----------:|
|`PCM`|Linear PCM.|### VehicleDataType
Defines the data types that can be published and subscribed to.##### Elements
| Value | Description |
| ---------- |:-----------:|
|`VEHICLEDATA_GPS`|Notifies GPSData may be subscribed|
|`VEHICLEDATA_SPEED`||
|`VEHICLEDATA_RPM`||
|`VEHICLEDATA_FUELLEVEL`||
|`VEHICLEDATA_FUELLEVEL_STATE`||
|`VEHICLEDATA_FUELCONSUMPTION`||
|`VEHICLEDATA_CLIMATEDATA`||
|`VEHICLEDATA_EXTERNTEMP`||
|`VEHICLEDATA_VIN`||
|`VEHICLEDATA_GEARSTATUS`||
|`VEHICLEDATA_PRNDL`||
|`VEHICLEDATA_TIREPRESSURE`||
|`VEHICLEDATA_ODOMETER`||
|`VEHICLEDATA_BELTSTATUS`||
|`VEHICLEDATA_BODYINFO`||
|`VEHICLEDATA_DEVICESTATUS`||
|`VEHICLEDATA_ECALLINFO`||
|`VEHICLEDATA_AIRBAGSTATUS`||
|`VEHICLEDATA_EMERGENCYEVENT`||
|`VEHICLEDATA_CLUSTERMODESTATUS`||
|`VEHICLEDATA_MYKEY`||
|`VEHICLEDATA_BRAKING`||
|`VEHICLEDATA_WIPERSTATUS`||
|`VEHICLEDATA_HEADLAMPSTATUS`||
|`VEHICLEDATA_BATTVOLTAGE`||
|`VEHICLEDATA_ENGINETORQUE`||
|`VEHICLEDATA_ACCPEDAL`||
|`VEHICLEDATA_STEERINGWHEEL`||
|`VEHICLEDATA_TURNSIGNAL`||
|`VEHICLEDATA_FUELRANGE`||
|`VEHICLEDATA_ENGINEOILLIFE`||
|`VEHICLEDATA_ELECTRONICPARKBRAKESTATUS`||
|`VEHICLEDATA_CLOUDAPPVEHICLEID`||
|`VEHICLEDATA_OEM_CUSTOM_DATA`||
|`VEHICLEDATA_STABILITYCONTROLSSTATUS`||
|`VEHICLEDATA_WINDOWSTATUS`||
|`VEHICLEDATA_HANDSOFFSTEERING`||
|`VEHICLEDATA_SEATOCCUPANCY`||### HybridAppPreference
Enumeration for the user's preference of which app type to use when both are available##### Elements
| Value | Description |
| ---------- |:-----------:|
|`MOBILE`||
|`CLOUD`||
|`BOTH`||### AppCapabilityType
Enumerations of all available app capability types##### Elements
| Value | Description |
| ---------- |:-----------:|
|`VIDEO_STREAMING`||### CapacityUnit
##### Elements| Value | Description |
| ---------- |:-----------:|
|`LITERS`||
|`KILOWATTHOURS`||
|`KILOGRAMS`||### ButtonName
Defines the hard (physical) and soft (touchscreen) buttons available from the module##### Elements
| Value | Description |
| ---------- |:-----------:|
|`OK`||
|`PLAY_PAUSE`|The button name for the physical Play/Pause toggle that can be used by media apps.|
|`SEEKLEFT`||
|`SEEKRIGHT`||
|`TUNEUP`||
|`TUNEDOWN`||
|`PRESET_0`||
|`PRESET_1`||
|`PRESET_2`||
|`PRESET_3`||
|`PRESET_4`||
|`PRESET_5`||
|`PRESET_6`||
|`PRESET_7`||
|`PRESET_8`||
|`PRESET_9`||
|`CUSTOM_BUTTON`||
|`SEARCH`||
|`AC_MAX`|Tied to CLIMATE RC modules.|
|`AC`|Tied to CLIMATE RC modules.|
|`RECIRCULATE`|Tied to CLIMATE RC modules.|
|`FAN_UP`|Tied to CLIMATE RC modules.|
|`FAN_DOWN`|Tied to CLIMATE RC modules.|
|`TEMP_UP`|Tied to CLIMATE RC modules.|
|`TEMP_DOWN`|Tied to CLIMATE RC modules.|
|`DEFROST_MAX`|Tied to CLIMATE RC modules.|
|`DEFROST`|Tied to CLIMATE RC modules.|
|`DEFROST_REAR`|Tied to CLIMATE RC modules.|
|`UPPER_VENT`|Tied to CLIMATE RC modules.|
|`LOWER_VENT`|Tied to CLIMATE RC modules.|
|`VOLUME_UP`|Tied to RADIO RC modules.|
|`VOLUME_DOWN`|Tied to RADIO RC modules.|
|`EJECT`|Tied to RADIO RC modules.|
|`SOURCE`|Tied to RADIO RC modules.|
|`SHUFFLE`|Tied to RADIO RC modules.|
|`REPEAT`|Tied to RADIO RC modules.|
|`NAV_CENTER_LOCATION`||
|`NAV_ZOOM_IN`||
|`NAV_ZOOM_OUT`||
|`NAV_PAN_UP`||
|`NAV_PAN_UP_RIGHT`||
|`NAV_PAN_RIGHT`||
|`NAV_PAN_DOWN_RIGHT`||
|`NAV_PAN_DOWN`||
|`NAV_PAN_DOWN_LEFT`||
|`NAV_PAN_LEFT`||
|`NAV_PAN_UP_LEFT`||
|`NAV_TILT_TOGGLE`|If supported, this toggles between a top-down view and an angled/3D view. If your app supports different, but substantially similar options, then you may implement those. If you don't implement these or similar options, do not subscribe to this button.|
|`NAV_ROTATE_CLOCKWISE`||
|`NAV_ROTATE_COUNTERCLOCKWISE`||
|`NAV_HEADING_TOGGLE`|If supported, this toggles between locking the orientation to north or to the vehicle's heading. If your app supports different, but substantially similar options, then you may implement those. If you don't implement these or similar options, do not subscribe to this button.|### MediaClockFormat
##### Elements| Value | Description |
| ---------- |:-----------:|
|`CLOCK1`|minutesFieldWidth = 2;minutesFieldMax = 19;secondsFieldWidth = 2;secondsFieldMax = 99;maxHours = 19;maxMinutes = 59;maxSeconds = 59; used for Type II and CID headunits|
|`CLOCK2`|minutesFieldWidth = 3;minutesFieldMax = 199;secondsFieldWidth = 2;secondsFieldMax = 99;maxHours = 59;maxMinutes = 59;maxSeconds = 59; used for Type V headunit|
|`CLOCK3`|minutesFieldWidth = 2;minutesFieldMax = 59;secondsFieldWidth = 2;secondsFieldMax = 59;maxHours = 9;maxMinutes = 59;maxSeconds = 59; used for GEN1.1 MFD3/4/5 headunits|
|`CLOCKTEXT1`|5 characters possible Format: 1|sp c :|sp c c 1|sp : digit "1" or space c : character out of following character set: sp|0-9|[letters, see TypeII column in XLS. See [@TODO: create file ref]] :|sp : colon or space used for Type II headunit|
|`CLOCKTEXT2`|5 chars possible Format: 1|sp c :|sp c c 1|sp : digit "1" or space c : character out of following character set: sp|0-9|[letters, see CID column in XLS. See [@TODO: create file ref]] :|sp : colon or space used for CID headunit NOTE: difference between CLOCKTEXT1 and CLOCKTEXT2 is the supported character set|
|`CLOCKTEXT3`|6 chars possible Format: 1|sp c c :|sp c c 1|sp : digit "1" or space c : character out of following character set: sp|0-9|[letters, see Type 5 column in XLS]. See [@TODO: create file ref] :|sp : colon or space used for Type V headunit|
|`CLOCKTEXT4`|6 chars possible Format: c :|sp c c : c c :|sp : colon or space c : character out of following character set: sp|0-9|[letters]. used for GEN1.1 MFD3/4/5 headunits|### DisplayType
###### Deprecated since: 5.0.0See DAES for further infos regarding the displays
##### Elements
| Value | Description |
| ---------- |:-----------:|
|`CID`||
|`TYPE2`||
|`TYPE5`||
|`NGN`||
|`GEN2_8_DMA`||
|`GEN2_6_DMA`||
|`MFD3`||
|`MFD4`||
|`MFD5`||
|`GEN3_8-INCH`||
|`SDL_GENERIC`||### TextFieldName
##### Elements| Value | Description |
| ---------- |:-----------:|
|`mainField1`|The first line of first set of main fields of the persistent display; applies to "Show"|
|`mainField2`|The second line of first set of main fields of the persistent display; applies to "Show"|
|`mainField3`|The first line of second set of main fields of persistent display; applies to "Show"|
|`mainField4`|The second line of second set of main fields of the persistent display; applies to "Show"|
|`statusBar`|The status bar on NGN; applies to "Show"|
|`mediaClock`|Text value for MediaClock field; applies to "Show"|
|`mediaTrack`|The track field of NGN and GEN1.1 MFD displays. This field is only available for media applications; applies to "Show"|
|`templateTitle`|The title of the new template that will be displayed; applies to "Show"|
|`alertText1`|The first line of the alert text field; applies to "Alert"|
|`alertText2`|The second line of the alert text field; applies to "Alert"|
|`alertText3`|The third line of the alert text field; applies to "Alert"|
|`scrollableMessageBody`|Long form body of text that can include newlines and tabs; applies to "ScrollableMessage"|
|`initialInteractionText`|First line suggestion for a user response (in the case of VR enabled interaction)|
|`navigationText1`|First line of navigation text|
|`navigationText2`|Second line of navigation text|
|`ETA`|Estimated Time of Arrival time for navigation|
|`totalDistance`|Total distance to destination for navigation|
|`audioPassThruDisplayText1`|First line of text for audio pass thru|
|`audioPassThruDisplayText2`|Second line of text for audio pass thru|
|`sliderHeader`|Header text for slider|
|`sliderFooter`|Footer text for slider|
|`menuName`|Primary text for Choice|
|`secondaryText`|Secondary text for Choice|
|`tertiaryText`|Tertiary text for Choice|
|`menuTitle`|Optional text to label an app menu button (for certain touchscreen platforms).|
|`locationName`|Optional name / title of intended location for SendLocation.|
|`locationDescription`|Optional description of intended location / establishment (if applicable) for SendLocation.|
|`addressLines`|Optional location address (if applicable) for SendLocation.|
|`phoneNumber`|Optional phone number of intended location / establishment (if applicable) for SendLocation.|
|`timeToDestination`|Optional time to destination field for ShowConstantTBT|
|`turnText`|Turn text for turnList parameter of UpdateTurnList|
|`subtleAlertText1`|The first line of the subtle alert text field; applies to `SubtleAlert` `alertText1`|
|`subtleAlertText2`|The second line of the subtle alert text field; applies to `SubtleAlert` `alertText2`|
|`subtleAlertSoftButtonText`|A text field in the soft button of a subtle alert; applies to `SubtleAlert` `softButtons`|
|`menuCommandSecondaryText`|Secondary text for AddCommand|
|`menuCommandTertiaryText`|Tertiary text for AddCommand|
|`menuSubMenuSecondaryText`|Secondary text for AddSubMenu|
|`menuSubMenuTertiaryText`|Tertiary text for AddSubMenu|### ImageFieldName
##### Elements| Value | Description |
| ---------- |:-----------:|
|`softButtonImage`|The image field for SoftButton|
|`choiceImage`|The first image field for Choice|
|`choiceSecondaryImage`|The secondary image field for Choice|
|`vrHelpItem`|The image field for vrHelpItem|
|`turnIcon`|The image field for Turn|
|`menuIcon`|The image field for the menu icon in SetGlobalProperties|
|`cmdIcon`|The image field for AddCommand|
|`appIcon`|The image field for the app icon (set by setAppIcon)|
|`graphic`|The primary image field for Show|
|`secondaryGraphic`|The secondary image field for Show|
|`showConstantTBTIcon`|The primary image field for ShowConstantTBT|
|`showConstantTBTNextTurnIcon`|The secondary image field for ShowConstantTBT|
|`locationImage`|The optional image of a destination / location|
|`alertIcon`|The image field for Alert|
|`subMenuIcon`|The image field for AddSubMenu.menuIcon|
|`subtleAlertIcon`|The image of the subtle alert; applies to `SubtleAlert` `alertIcon`|
|`menuCommandSecondaryImage`|The secondary image field for AddCommand|
|`menuSubMenuSecondaryImage`|The secondary image field for AddSubMenu|### CharacterSet
The list of potential character sets##### Elements
| Value | Description |
| ---------- |:-----------:|
|`TYPE2SET`||
|`TYPE5SET`||
|`CID1SET`||
|`CID2SET`||
|`ASCII`|ASCII as defined in https://en.wikipedia.org/wiki/ASCII as defined in codes 0-127. Non-printable characters such as tabs and back spaces are ignored.|
|`ISO_8859_1`|Latin-1, as defined in https://en.wikipedia.org/wiki/ISO/IEC_8859-1|
|`UTF_8`|The UTF-8 character set that uses variable bytes per code point. See https://en.wikipedia.org/wiki/UTF-8 for more details. This is the preferred character set.|### TextAlignment
The list of possible alignments, left, right, or centered##### Elements
| Value | Description |
| ---------- |:-----------:|
|`LEFT_ALIGNED`||
|`RIGHT_ALIGNED`||
|`CENTERED`||### TBTState
Enumeration that describes possible states of turn-by-turn client or SmartDeviceLink app.##### Elements
| Value | Description |
| ---------- |:-----------:|
|`ROUTE_UPDATE_REQUEST`||
|`ROUTE_ACCEPTED`||
|`ROUTE_REFUSED`||
|`ROUTE_CANCELLED`||
|`ETA_REQUEST`||
|`NEXT_TURN_REQUEST`||
|`ROUTE_STATUS_REQUEST`||
|`ROUTE_SUMMARY_REQUEST`||
|`TRIP_STATUS_REQUEST`||
|`ROUTE_UPDATE_REQUEST_TIMEOUT`||### DriverDistractionState
Enumeration that describes possible states of driver distraction.##### Elements
| Value | Description |
| ---------- |:-----------:|
|`DD_ON`||
|`DD_OFF`||### ImageType
Contains information about the type of image.##### Elements
| Value | Description |
| ---------- |:-----------:|
|`STATIC`||
|`DYNAMIC`||### DeliveryMode
The mode in which the SendLocation request is sent##### Elements
| Value | Description |
| ---------- |:-----------:|
|`PROMPT`||
|`DESTINATION`||
|`QUEUE`||### VideoStreamingProtocol
Enum for each type of video streaming protocol type.##### Elements
| Value | Description |
| ---------- |:-----------:|
|`RAW`|Raw stream bytes that contains no timestamp data and is the lowest supported video streaming|
|`RTP`|RTP facilitates the transfer of real-time data. Information provided by this protocol include timestamps (for synchronization), sequence numbers (for packet loss and reordering detection) and the payload format which indicates the encoded format of the data.|
|`RTSP`|The transmission of streaming data itself is not a task of RTSP. Most RTSP servers use the Real-time Transport Protocol (RTP) in conjunction with Real-time Control Protocol (RTCP) for media stream delivery. However, some vendors implement proprietary transport protocols.|
|`RTMP`|Real-Time Messaging Protocol (RTMP) was initially a proprietary protocol developed by Macromedia for streaming audio, video and data over the Internet, between a Flash player and a server. Macromedia is now owned by Adobe, which has released an incomplete version of the specification of the protocol for public use.|
|`WEBM`|The WebM container is based on a profile of Matroska. WebM initially supported VP8 video and Vorbis audio streams. In 2013 it was updated to accommodate VP9 video and Opus audio.|### VideoStreamingCodec
Enum for each type of video streaming codec.##### Elements
| Value | Description |
| ---------- |:-----------:|
|`H264`|A block-oriented motion-compensation-based video compression standard. As of 2014 it is one of the most commonly used formats for the recording, compression, and distribution of video content.|
|`H265`|High Efficiency Video Coding (HEVC), also known as H.265 and MPEG-H Part 2, is a video compression standard, one of several potential successors to the widely used AVC (H.264 or MPEG-4 Part 10). In comparison to AVC, HEVC offers about double the data compression ratio at the same level of video quality, or substantially improved video quality at the same bit rate. It supports resolutions up to 8192x4320, including 8K UHD.|
|`Theora`|Theora is derived from the formerly proprietary VP3 codec, released into the public domain by On2 Technologies. It is broadly comparable in design and bitrate efficiency to MPEG-4 Part 2, early versions of Windows Media Video, and RealVideo while lacking some of the features present in some of these other codecs. It is comparable in open standards philosophy to the BBC's Dirac codec.|
|`VP8`|VP8 can be multiplexed into the Matroska-based container format WebM along with Vorbis and Opus audio. The image format WebP is based on VP8's intra-frame coding. VP8's direct successor, VP9, and the emerging royalty-free internet video format AV1 from the Alliance for Open Media (AOMedia) are based on VP8.|
|`VP9`|Similar to VP8, but VP9 is customized for video resolutions beyond high-definition video (UHD) and also enables lossless compression.|### AudioStreamingIndicator
##### Elements| Value | Description |
| ---------- |:-----------:|
|`PLAY_PAUSE`|Default playback indicator. By default the playback indicator should be PLAY_PAUSE when: - the media app is newly registered on the head unit (after RegisterAppInterface) - the media app was closed by the user (App enters HMI_NONE) - the app sends SetMediaClockTimer with audioStreamingIndicator not set to any value|
|`PLAY`|Indicates that a button press of the Play/Pause button starts the audio playback.|
|`PAUSE`|Indicates that a button press of the Play/Pause button pauses the current audio playback.|
|`STOP`|Indicates that a button press of the Play/Pause button stops the current audio playback.|### GlobalProperty
The different global properties.##### Elements
| Value | Description |
| ---------- |:-----------:|
|`USER_LOCATION`|Location of the user's seat of setGlobalProperties|
|`HELPPROMPT`|The property helpPrompt of setGlobalProperties|
|`TIMEOUTPROMPT`|The property timeoutPrompt of setGlobalProperties|
|`VRHELPTITLE`|The property vrHelpTitle of setGlobalProperties|
|`VRHELPITEMS`|The property array of vrHelp of setGlobalProperties|
|`MENUNAME`|The property in-app menu name of setGlobalProperties|
|`MENUICON`|The property in-app menu icon of setGlobalProperties|
|`KEYBOARDPROPERTIES`|The on-screen keyboard configuration of setGlobalProperties|### CompassDirection
The list of potential compass directions##### Elements
| Value | Description |
| ---------- |:-----------:|
|`NORTH`||
|`NORTHWEST`||
|`WEST`||
|`SOUTHWEST`||
|`SOUTH`||
|`SOUTHEAST`||
|`EAST`||
|`NORTHEAST`||### Dimension
The supported dimensions of the GPS##### Elements
| Value | Description |
| ---------- |:-----------:|
|`NO_FIX`|No GPS at all|
|`2D`|Longitude and latitude|
|`3D`|Longitude and latitude and altitude|### PRNDL
The selected gear.##### Elements
| Value | Description |
| ---------- |:-----------:|
|`PARK`|Parking|
|`REVERSE`|Reverse gear|
|`NEUTRAL`|No gear|
|`DRIVE`|Regular Drive mode|
|`SPORT`|Drive Sport mode|
|`LOWGEAR`|1st gear hold|
|`FIRST`||
|`SECOND`||
|`THIRD`||
|`FOURTH`||
|`FIFTH`||
|`SIXTH`||
|`SEVENTH`||
|`EIGHTH`||
|`NINTH`||
|`TENTH`||
|`UNKNOWN`||
|`FAULT`||### TransmissionType
Type of transmission used in the vehicle.##### Elements
| Value | Description |
| ---------- |:-----------:|
|`MANUAL`|Manual transmission.|
|`AUTOMATIC`|Automatic transmission.|
|`SEMI_AUTOMATIC`|Semi automatic transmission.|
|`DUAL_CLUTCH`|Dual clutch transmission.|
|`CONTINUOUSLY_VARIABLE`|Continuously variable transmission(CVT).|
|`INFINITELY_VARIABLE`|Infinitely variable transmission.|
|`ELECTRIC_VARIABLE`|Electric variable transmission.|
|`DIRECT_DRIVE`|Direct drive between engine and wheels.|### ComponentVolumeStatus
The volume status of a vehicle component.##### Elements
| Value | Description |
| ---------- |:-----------:|
|`UNKNOWN`||
|`NORMAL`||
|`LOW`||
|`FAULT`||
|`ALERT`||
|`NOT_SUPPORTED`||### TPMS
##### Elements| Value | Description |
| ---------- |:-----------:|
|`UNKNOWN`|If set the status of the tire is not known.|
|`SYSTEM_FAULT`|TPMS does not function.|
|`SENSOR_FAULT`|The sensor of the tire does not function.|
|`LOW`|TPMS is reporting a low tire pressure for the tire.|
|`SYSTEM_ACTIVE`|TPMS is active and the tire pressure is monitored.|
|`TRAIN`|TPMS is reporting that the tire must be trained.|
|`TRAINING_COMPLETE`|TPMS reports the training for the tire is completed.|
|`NOT_TRAINED`|TPMS reports the tire is not trained.|### FuelType
##### Elements| Value | Description |
| ---------- |:-----------:|
|`GASOLINE`||
|`DIESEL`||
|`CNG`|For vehicles using compressed natural gas.|
|`LPG`|For vehicles using liquefied petroleum gas.|
|`HYDROGEN`|For FCEV (fuel cell electric vehicle).|
|`BATTERY`|For BEV (Battery Electric Vehicle), PHEV (Plug-in Hybrid Electric Vehicle), solar vehicles and other vehicles which run on a battery.|### ElectronicParkBrakeStatus
##### Elements| Value | Description |
| ---------- |:-----------:|
|`CLOSED`|Park brake actuators have been fully applied.|
|`TRANSITION`|Park brake actuators are transitioning to either Apply/Closed or Release/Open state.|
|`OPEN`|Park brake actuators are released.|
|`DRIVE_ACTIVE`|When driver pulls the Electronic Park Brake switch while driving "at speed".|
|`FAULT`|When system has a fault or is under maintenance.|### WarningLightStatus
Reflects the status of a cluster instrument warning light.##### Elements
| Value | Description |
| ---------- |:-----------:|
|`OFF`||
|`ON`||
|`FLASH`||
|`NOT_USED`||### VehicleDataNotificationStatus
Reflects the status of a vehicle data notification.##### Elements
| Value | Description |
| ---------- |:-----------:|
|`NOT_SUPPORTED`||
|`NORMAL`||
|`ACTIVE`||
|`NOT_USED`||### IgnitionStableStatus
Reflects the ignition switch stability.##### Elements
| Value | Description |
| ---------- |:-----------:|
|`IGNITION_SWITCH_NOT_STABLE`||
|`IGNITION_SWITCH_STABLE`||
|`MISSING_FROM_TRANSMITTER`||### IgnitionStatus
Reflects the status of ignition.##### Elements
| Value | Description |
| ---------- |:-----------:|
|`UNKNOWN`||
|`OFF`||
|`ACCESSORY`||
|`RUN`||
|`START`||
|`INVALID`||### VehicleDataEventStatus
Reflects the status of a vehicle data event; e.g. a seat belt event status.##### Elements
| Value | Description |
| ---------- |:-----------:|
|`NO_EVENT`||
|`NO`||
|`YES`||
|`NOT_SUPPORTED`||
|`FAULT`||### DeviceLevelStatus
Reflects the reported battery status of the connected device, if reported.##### Elements
| Value | Description |
| ---------- |:-----------:|
|`ZERO_LEVEL_BARS`||
|`ONE_LEVEL_BARS`||
|`TWO_LEVEL_BARS`||
|`THREE_LEVEL_BARS`||
|`FOUR_LEVEL_BARS`||
|`NOT_PROVIDED`||### PrimaryAudioSource
Reflects the current primary audio source (if selected).##### Elements
| Value | Description |
| ---------- |:-----------:|
|`NO_SOURCE_SELECTED`||
|`CD`||
|`USB`||
|`USB2`||
|`BLUETOOTH_STEREO_BTST`||
|`LINE_IN`||
|`IPOD`||
|`MOBILE_APP`||
|`AM`||
|`FM`||
|`XM`||
|`DAB`||### WiperStatus
Reflects the status of the wipers.##### Elements
| Value | Description |
| ---------- |:-----------:|
|`OFF`||
|`AUTO_OFF`||
|`OFF_MOVING`||
|`MAN_INT_OFF`||
|`MAN_INT_ON`||
|`MAN_LOW`||
|`MAN_HIGH`||
|`MAN_FLICK`||
|`WASH`||
|`AUTO_LOW`||
|`AUTO_HIGH`||
|`COURTESYWIPE`||
|`AUTO_ADJUST`||
|`STALLED`||
|`NO_DATA_EXISTS`||### VehicleDataStatus
Reflects the status of a binary vehicle data item.##### Elements
| Value | Description |
| ---------- |:-----------:|
|`NO_DATA_EXISTS`||
|`OFF`||
|`ON`||### MaintenanceModeStatus
Reflects the status of a vehicle maintenance mode.##### Elements
| Value | Description |
| ---------- |:-----------:|
|`NORMAL`||
|`NEAR`||
|`ACTIVE`||
|`FEATURE_NOT_PRESENT`||### VehicleDataActiveStatus
Reflects the status of given vehicle component.##### Elements
| Value | Description |
| ---------- |:-----------:|
|`INACTIVE_NOT_CONFIRMED`||
|`INACTIVE_CONFIRMED`||
|`ACTIVE_NOT_CONFIRMED`||
|`ACTIVE_CONFIRMED`||
|`FAULT`||### AmbientLightStatus
Reflects the status of the ambient light sensor.##### Elements
| Value | Description |
| ---------- |:-----------:|
|`NIGHT`||
|`TWILIGHT_1`||
|`TWILIGHT_2`||
|`TWILIGHT_3`||
|`TWILIGHT_4`||
|`DAY`||
|`UNKNOWN`||
|`INVALID`||### ModuleType
##### Elements| Value | Description |
| ---------- |:-----------:|
|`CLIMATE`||
|`RADIO`||
|`SEAT`||
|`AUDIO`||
|`LIGHT`||
|`HMI_SETTINGS`||### DefrostZone
##### Elements| Value | Description |
| ---------- |:-----------:|
|`FRONT`||
|`REAR`||
|`ALL`||
|`NONE`||### VentilationMode
##### Elements| Value | Description |
| ---------- |:-----------:|
|`UPPER`||
|`LOWER`||
|`BOTH`||
|`NONE`||### RadioBand
##### Elements| Value | Description |
| ---------- |:-----------:|
|`AM`||
|`FM`||
|`XM`||### RadioState
##### Elements| Value | Description |
| ---------- |:-----------:|
|`ACQUIRING`||
|`ACQUIRED`||
|`MULTICAST`||
|`NOT_FOUND`||### TemperatureUnit
##### Elements| Value | Description |
| ---------- |:-----------:|
|`FAHRENHEIT`||
|`CELSIUS`||### DoorStatusType
##### Elements| Value | Description |
| ---------- |:-----------:|
|`CLOSED`||
|`LOCKED`||
|`AJAR`||
|`REMOVED`||### FileType
Enumeration listing possible file types.##### Elements
| Value | Description |
| ---------- |:-----------:|
|`GRAPHIC_BMP`||
|`GRAPHIC_JPEG`||
|`GRAPHIC_PNG`||
|`AUDIO_WAVE`||
|`AUDIO_MP3`||
|`AUDIO_AAC`||
|`BINARY`||
|`JSON`||### FuelCutoffStatus
Reflects the status of the RCM fuel cutoff.##### Elements
| Value | Description |
| ---------- |:-----------:|
|`TERMINATE_FUEL`||
|`NORMAL_OPERATION`||
|`FAULT`||### EmergencyEventType
Reflects the emergency event status of the vehicle.##### Elements
| Value | Description |
| ---------- |:-----------:|
|`NO_EVENT`||
|`FRONTAL`||
|`SIDE`||
|`REAR`||
|`ROLLOVER`||
|`NOT_SUPPORTED`||
|`FAULT`||### ECallConfirmationStatus
Reflects the status of the eCall Notification.##### Elements
| Value | Description |
| ---------- |:-----------:|
|`NORMAL`||
|`CALL_IN_PROGRESS`||
|`CALL_CANCELLED`||
|`CALL_COMPLETED`||
|`CALL_UNSUCCESSFUL`||
|`ECALL_CONFIGURED_OFF`||
|`CALL_COMPLETE_DTMF_TIMEOUT`||### PowerModeQualificationStatus
Reflects the status of the current power mode qualification.##### Elements
| Value | Description |
| ---------- |:-----------:|
|`POWER_MODE_UNDEFINED`||
|`POWER_MODE_EVALUATION_IN_PROGRESS`||
|`NOT_DEFINED`||
|`POWER_MODE_OK`||### PowerModeStatus
Reflects the status of the current power mode.##### Elements
| Value | Description |
| ---------- |:-----------:|
|`KEY_OUT`||
|`KEY_RECENTLY_OUT`||
|`KEY_APPROVED_0`||
|`POST_ACCESORY_0`||
|`ACCESORY_1`||
|`POST_IGNITION_1`||
|`IGNITION_ON_2`||
|`RUNNING_2`||
|`CRANK_3`||### CarModeStatus
Reflects the status of the current car mode.##### Elements
| Value | Description |
| ---------- |:-----------:|
|`NORMAL`||
|`FACTORY`||
|`TRANSPORT`||
|`CRASH`||### VehicleDataResultCode
Enumeration that describes possible result codes of a vehicle data entry request.##### Elements
| Value | Description |
| ---------- |:-----------:|
|`SUCCESS`|Individual vehicle data item / DTC / DID request or subscription successful|
|`TRUNCATED_DATA`|DTC / DID request successful, however, not all active DTCs or full contents of DID location available|
|`DISALLOWED`|This vehicle data item is not allowed for this app by the OEM/Manufactorer of the connected module.|
|`USER_DISALLOWED`|The user has not granted access to this type of vehicle data item at this time.|
|`INVALID_ID`|The ECU ID referenced is not a valid ID on the bus / system.|
|`VEHICLE_DATA_NOT_AVAILABLE`|The requested vehicle data item / DTC / DID is not currently available or responding on the bus / system.|
|`DATA_ALREADY_SUBSCRIBED`|The vehicle data item is already subscribed.|
|`DATA_NOT_SUBSCRIBED`|The vehicle data item cannot be unsubscribed because it is not currently subscribed.|
|`IGNORED`|The request for this item is ignored because it is already in progress.|### TurnSignal
Enumeration that describes the status of the turn light indicator.##### Elements
| Value | Description |
| ---------- |:-----------:|
|`OFF`|Turn signal is OFF|
|`LEFT`|Left turn signal is on|
|`RIGHT`|Right turn signal is on|
|`BOTH`|Both signals (left and right) are on.|### MenuLayout
How the main menu or submenu is laid out on screen##### Elements
| Value | Description |
| ---------- |:-----------:|
|`LIST`||
|`TILES`||### TouchType
##### Elements| Value | Description |
| ---------- |:-----------:|
|`BEGIN`||
|`MOVE`||
|`END`||
|`CANCEL`||### PermissionStatus
Enumeration that describes possible permission states of a policy table entry.##### Elements
| Value | Description |
| ---------- |:-----------:|
|`ALLOWED`||
|`DISALLOWED`||
|`USER_DISALLOWED`||
|`USER_CONSENT_PENDING`||### KeyboardLayout
Enumeration listing possible keyboard layouts.##### Elements
| Value | Description |
| ---------- |:-----------:|
|`QWERTY`||
|`QWERTZ`||
|`AZERTY`||
|`NUMERIC`||### KeyboardEvent
Enumeration listing possible keyboard events.##### Elements
| Value | Description |
| ---------- |:-----------:|
|`KEYPRESS`||
|`ENTRY_SUBMITTED`||
|`ENTRY_VOICE`||
|`ENTRY_CANCELLED`||
|`ENTRY_ABORTED`||
|`INPUT_KEY_MASK_ENABLED`||
|`INPUT_KEY_MASK_DISABLED`||### KeypressMode
Enumeration listing possible keyboard events.##### Elements
| Value | Description |
| ---------- |:-----------:|
|`SINGLE_KEYPRESS`|Each keypress is individually sent as the user presses the keyboard keys.|
|`QUEUE_KEYPRESSES`|The keypresses are queued and a string is eventually sent once the user chooses to submit their entry.|
|`RESEND_CURRENT_ENTRY`|The keypresses are queue and a string is sent each time the user presses a keyboard key; the string contains the entire current entry.|### KeyboardInputMask
Enumeration listing possible input character masking.##### Elements
| Value | Description |
| ---------- |:-----------:|
|`ENABLE_INPUT_KEY_MASK`||
|`DISABLE_INPUT_KEY_MASK`||
|`USER_CHOICE_INPUT_KEY_MASK`||### RequestType
Enumeration listing possible asynchronous requests.##### Elements
| Value | Description |
| ---------- |:-----------:|
|`HTTP`||
|`FILE_RESUME`||
|`AUTH_REQUEST`||
|`AUTH_CHALLENGE`||
|`AUTH_ACK`||
|`PROPRIETARY`||
|`QUERY_APPS`||
|`LAUNCH_APP`||
|`LOCK_SCREEN_ICON_URL`||
|`TRAFFIC_MESSAGE_CHANNEL`||
|`DRIVER_PROFILE`||
|`VOICE_SEARCH`||
|`NAVIGATION`||
|`PHONE`||
|`CLIMATE`||
|`SETTINGS`||
|`VEHICLE_DIAGNOSTICS`||
|`EMERGENCY`||
|`MEDIA`||
|`FOTA`||
|`OEM_SPECIFIC`||
|`ICON_URL`||### AppHMIType
Enumeration listing possible app types.##### Elements
| Value | Description |
| ---------- |:-----------:|
|`DEFAULT`||
|`COMMUNICATION`||
|`MEDIA`||
|`MESSAGING`||
|`NAVIGATION`||
|`INFORMATION`||
|`SOCIAL`||
|`BACKGROUND_PROCESS`||
|`TESTING`||
|`SYSTEM`||
|`PROJECTION`||
|`REMOTE_CONTROL`||
|`WEB_VIEW`||### PredefinedLayout
Predefined screen layout.##### Elements
| Value | Description |
| ---------- |:-----------:|
|`DEFAULT`|Default media / non-media screen. Can be set as a root screen.|
|`MEDIA`|Default Media screen. Can be set as a root screen.|
|`NON-MEDIA`|Default Non-media screen. Can be set as a root screen.|
|`ONSCREEN_PRESETS`|Custom root media screen containing app-defined onscreen presets. Can be set as a root screen.|
|`NAV_FULLSCREEN_MAP`|Custom root template screen containing full screen map with navigation controls. Can be set as a root screen.|
|`NAV_LIST`|Custom root template screen containing video represented list. Can be set as a root screen.|
|`NAV_KEYBOARD`|Custom root template screen containing video represented keyboard. Can be set as a root screen.|
|`GRAPHIC_WITH_TEXT`|Custom root template screen containing half-screen graphic with lines of text. Can be set as a root screen.|
|`TEXT_WITH_GRAPHIC`|Custom root template screen containing lines of text with half-screen graphic. Can be set as a root screen.|
|`TILES_ONLY`|Custom root template screen containing only tiled SoftButtons. Can be set as a root screen.|
|`TEXTBUTTONS_ONLY`|Custom root template screen containing only text SoftButtons. Can be set as a root screen.|
|`GRAPHIC_WITH_TILES`|Custom root template screen containing half-screen graphic with tiled SoftButtons. Can be set as a root screen.|
|`TILES_WITH_GRAPHIC`|Custom root template screen containing tiled SoftButtons with half-screen graphic. Can be set as a root screen.|
|`GRAPHIC_WITH_TEXT_AND_SOFTBUTTONS`|Custom root template screen containing half-screen graphic with text and SoftButtons. Can be set as a root screen.|
|`TEXT_AND_SOFTBUTTONS_WITH_GRAPHIC`|Custom root template screen containing text and SoftButtons with half-screen graphic. Can be set as a root screen.|
|`GRAPHIC_WITH_TEXTBUTTONS`|Custom root template screen containing half-screen graphic with text only SoftButtons. Can be set as a root screen.|
|`TEXTBUTTONS_WITH_GRAPHIC`|Custom root template screen containing text only SoftButtons with half-screen graphic. Can be set as a root screen.|
|`LARGE_GRAPHIC_WITH_SOFTBUTTONS`|Custom root template screen containing a large graphic and SoftButtons. Can be set as a root screen.|
|`DOUBLE_GRAPHIC_WITH_SOFTBUTTONS`|Custom root template screen containing two graphics and SoftButtons. Can be set as a root screen.|
|`LARGE_GRAPHIC_ONLY`|Custom root template screen containing only a large graphic. Can be set as a root screen.|
|`WEB_VIEW`|Custom root template allowing in-vehicle WebEngine applications with appropriate permissions to show the application's own web view.|### FunctionID
Enumeration linking function names with function IDs in SmartDeviceLink protocol. Assumes enumeration starts at value 0.##### Elements
| Value | Description |
| ---------- |:-----------:|
|`RESERVED`||
|`RegisterAppInterfaceID`||
|`UnregisterAppInterfaceID`||
|`SetGlobalPropertiesID`||
|`ResetGlobalPropertiesID`||
|`AddCommandID`||
|`DeleteCommandID`||
|`AddSubMenuID`||
|`DeleteSubMenuID`||
|`CreateInteractionChoiceSetID`||
|`PerformInteractionID`||
|`DeleteInteractionChoiceSetID`||
|`AlertID`||
|`ShowID`||
|`SpeakID`||
|`SetMediaClockTimerID`||
|`PerformAudioPassThruID`||
|`EndAudioPassThruID`||
|`SubscribeButtonID`||
|`UnsubscribeButtonID`||
|`SubscribeVehicleDataID`||
|`UnsubscribeVehicleDataID`||
|`GetVehicleDataID`||
|`ReadDIDID`||
|`GetDTCsID`||
|`ScrollableMessageID`||
|`SliderID`||
|`ShowConstantTBTID`||
|`AlertManeuverID`||
|`UpdateTurnListID`||
|`ChangeRegistrationID`||
|`GenericResponseID`||
|`PutFileID`||
|`DeleteFileID`||
|`ListFilesID`||
|`SetAppIconID`||
|`SetDisplayLayoutID`||
|`DiagnosticMessageID`||
|`SystemRequestID`||
|`SendLocationID`||
|`DialNumberID`||
|`ButtonPressID`||
|`GetInteriorVehicleDataID`||
|`SetInteriorVehicleDataID`||
|`GetWayPointsID`||
|`SubscribeWayPointsID`||
|`UnsubscribeWayPointsID`||
|`GetSystemCapabilityID`||
|`SendHapticDataID`||
|`SetCloudAppPropertiesID`||
|`GetCloudAppPropertiesID`||
|`PublishAppServiceID`||
|`GetAppServiceDataID`||
|`GetFileID`||
|`PerformAppServiceInteractionID`||
|`UnpublishAppServiceID`||
|`CancelInteractionID`||
|`CloseApplicationID`||
|`ShowAppMenuID`||
|`CreateWindowID`||
|`DeleteWindowID`||
|`GetInteriorVehicleDataConsentID`||
|`ReleaseInteriorVehicleDataModuleID`||
|`SubtleAlertID`||
|`OnHMIStatusID`||
|`OnAppInterfaceUnregisteredID`||
|`OnButtonEventID`||
|`OnButtonPressID`||
|`OnVehicleDataID`||
|`OnCommandID`||
|`OnTBTClientStateID`||
|`OnDriverDistractionID`||
|`OnPermissionsChangeID`||
|`OnAudioPassThruID`||
|`OnLanguageChangeID`||
|`OnKeyboardInputID`||
|`OnTouchEventID`||
|`OnSystemRequestID`||
|`OnHashChangeID`||
|`OnInteriorVehicleDataID`||
|`OnWayPointChangeID`||
|`OnRCStatusID`||
|`OnAppServiceDataID`||
|`OnSystemCapabilityUpdatedID`||
|`OnSubtleAlertPressedID`||
|`OnUpdateFileID`||
|`OnUpdateSubMenuID`||
|`OnAppCapabilityUpdatedID`||
|`EncodedSyncPDataID`||
|`SyncPDataID`||
|`OnEncodedSyncPDataID`||
|`OnSyncPDataID`||### messageType
Enumeration linking message types with function types in WiPro protocol. Assumes enumeration starts at value 0. The integer value is used in the protocol binary header.##### Elements
| Value | Description |
| ---------- |:-----------:|
|`request`||
|`response`||
|`notification`||### WayPointType
Describes what kind of waypoint is requested/provided.##### Elements
| Value | Description |
| ---------- |:-----------:|
|`ALL`||
|`DESTINATION`||### SystemCapabilityType
Enumerations of all available system capability types##### Elements
| Value | Description |
| ---------- |:-----------:|
|`NAVIGATION`||
|`PHONE_CALL`||
|`VIDEO_STREAMING`||
|`REMOTE_CONTROL`||
|`APP_SERVICES`||
|`SEAT_LOCATION`||
|`DISPLAYS`||
|`DRIVER_DISTRACTION`||### MassageZone
List possible zones of a multi-contour massage seat.##### Elements
| Value | Description |
| ---------- |:-----------:|
|`LUMBAR`|The back of a multi-contour massage seat. or SEAT_BACK|
|`SEAT_CUSHION`|The bottom a multi-contour massage seat. or SEAT_BOTTOM|### MassageMode
List possible modes of a massage zone.##### Elements
| Value | Description |
| ---------- |:-----------:|
|`OFF`||
|`LOW`||
|`HIGH`||### MassageCushion
List possible cushions of a multi-contour massage seat.##### Elements
| Value | Description |
| ---------- |:-----------:|
|`TOP_LUMBAR`||
|`MIDDLE_LUMBAR`||
|`BOTTOM_LUMBAR`||
|`BACK_BOLSTERS`||
|`SEAT_BOLSTERS`||### SeatMemoryActionType
##### Elements| Value | Description |
| ---------- |:-----------:|
|`SAVE`|Save current seat positions and settings to seat memory.|
|`RESTORE`|Restore / apply the seat memory settings to the current seat.|
|`NONE`|No action to be performed.|### SupportedSeat
###### Deprecated since: 6.0.0List possible seats that is a remote controllable seat.
##### Elements
| Value | Description |
| ---------- |:-----------:|
|`DRIVER`||
|`FRONT_PASSENGER`||### LightName
Enumeration that describes possible values of light name. The mobile libraries and SDL Core use the name string when referencing these elements.##### Elements
| Value | Description |
| ---------- |:-----------:|
|`FRONT_LEFT_HIGH_BEAM`||
|`FRONT_RIGHT_HIGH_BEAM`||
|`FRONT_LEFT_LOW_BEAM`||
|`FRONT_RIGHT_LOW_BEAM`||
|`FRONT_LEFT_PARKING_LIGHT`||
|`FRONT_RIGHT_PARKING_LIGHT`||
|`FRONT_LEFT_FOG_LIGHT`||
|`FRONT_RIGHT_FOG_LIGHT`||
|`FRONT_LEFT_DAYTIME_RUNNING_LIGHT`||
|`FRONT_RIGHT_DAYTIME_RUNNING_LIGHT`||
|`FRONT_LEFT_TURN_LIGHT`||
|`FRONT_RIGHT_TURN_LIGHT`||
|`REAR_LEFT_FOG_LIGHT`||
|`REAR_RIGHT_FOG_LIGHT`||
|`REAR_LEFT_TAIL_LIGHT`||
|`REAR_RIGHT_TAIL_LIGHT`||
|`REAR_LEFT_BRAKE_LIGHT`||
|`REAR_RIGHT_BRAKE_LIGHT`||
|`REAR_LEFT_TURN_LIGHT`||
|`REAR_RIGHT_TURN_LIGHT`||
|`REAR_REGISTRATION_PLATE_LIGHT`||
|`HIGH_BEAMS`|Include all high beam lights: front_left and front_right.|
|`LOW_BEAMS`|Include all low beam lights: front_left and front_right.|
|`FOG_LIGHTS`|Include all fog lights: front_left, front_right, rear_left and rear_right.|
|`RUNNING_LIGHTS`|Include all daytime running lights: front_left and front_right.|
|`PARKING_LIGHTS`|Include all parking lights: front_left and front_right.|
|`BRAKE_LIGHTS`|Include all brake lights: rear_left and rear_right.|
|`REAR_REVERSING_LIGHTS`||
|`SIDE_MARKER_LIGHTS`||
|`LEFT_TURN_LIGHTS`|Include all left turn signal lights: front_left, rear_left, left_side and mirror_mounted.|
|`RIGHT_TURN_LIGHTS`|Include all right turn signal lights: front_right, rear_right, right_side and mirror_mounted.|
|`HAZARD_LIGHTS`|Include all hazard lights: front_left, front_right, rear_left and rear_right.|
|`REAR_CARGO_LIGHTS`|Cargo lamps illuminate the cargo area.|
|`REAR_TRUCK_BED_LIGHTS`|Truck bed lamps light up the bed of the truck.|
|`REAR_TRAILER_LIGHTS`|Trailer lights are lamps mounted on a trailer hitch.|
|`LEFT_SPOT_LIGHTS`|It is the spotlights mounted on the left side of a vehicle.|
|`RIGHT_SPOT_LIGHTS`|It is the spotlights mounted on the right side of a vehicle.|
|`LEFT_PUDDLE_LIGHTS`|Puddle lamps illuminate the ground beside the door as the customer is opening or approaching the door.|
|`RIGHT_PUDDLE_LIGHTS`|Puddle lamps illuminate the ground beside the door as the customer is opening or approaching the door.|
|`AMBIENT_LIGHTS`||
|`OVERHEAD_LIGHTS`||
|`READING_LIGHTS`||
|`TRUNK_LIGHTS`||
|`EXTERIOR_FRONT_LIGHTS`|Include exterior lights located in front of the vehicle. For example, fog lights and low beams.|
|`EXTERIOR_REAR_LIGHTS`|Include exterior lights located at the back of the vehicle. For example, license plate lights, reverse lights, cargo lights, bed lights and trailer assist lights.|
|`EXTERIOR_LEFT_LIGHTS`|Include exterior lights located at the left side of the vehicle. For example, left puddle lights and spot lights.|
|`EXTERIOR_RIGHT_LIGHTS`|Include exterior lights located at the right side of the vehicle. For example, right puddle lights and spot lights.|
|`EXTERIOR_ALL_LIGHTS`|Include all exterior lights around the vehicle.|### LightStatus
##### Elements| Value | Description |
| ---------- |:-----------:|
|`ON`||
|`OFF`||
|`RAMP_UP`||
|`RAMP_DOWN`||
|`UNKNOWN`||
|`INVALID`||### DisplayMode
##### Elements| Value | Description |
| ---------- |:-----------:|
|`DAY`||
|`NIGHT`||
|`AUTO`||### DistanceUnit
##### Elements| Value | Description |
| ---------- |:-----------:|
|`MILES`||
|`KILOMETERS`||### MetadataType
##### Elements| Value | Description |
| ---------- |:-----------:|
|`mediaTitle`|The data in this field contains the title of the currently playing audio track.|
|`mediaArtist`|The data in this field contains the artist or creator of the currently playing audio track.|
|`mediaAlbum`|The data in this field contains the album title of the currently playing audio track.|
|`mediaYear`|The data in this field contains the creation year of the currently playing audio track.|
|`mediaGenre`|The data in this field contains the genre of the currently playing audio track.|
|`mediaStation`|The data in this field contains the name of the current source for the media.|
|`rating`|The data in this field is a rating.|
|`currentTemperature`|The data in this field is the current temperature.|
|`maximumTemperature`|The data in this field is the maximum temperature for the day.|
|`minimumTemperature`|The data in this field is the minimum temperature for the day.|
|`weatherTerm`|The data in this field describes the current weather (ex. cloudy, clear, etc.).|
|`humidity`|The data in this field describes the current humidity value.|### AppServiceType
##### Elements| Value | Description |
| ---------- |:-----------:|
|`MEDIA`||
|`WEATHER`||
|`NAVIGATION`||### MediaType
##### Elements| Value | Description |
| ---------- |:-----------:|
|`MUSIC`||
|`PODCAST`||
|`AUDIOBOOK`||
|`OTHER`||### NavigationAction
##### Elements| Value | Description |
| ---------- |:-----------:|
|`TURN`|Using this action plus a supplied direction can give the type of turn.|
|`EXIT`||
|`STAY`||
|`MERGE`||
|`FERRY`||
|`CAR_SHUTTLE_TRAIN`||
|`WAYPOINT`||### NavigationJunction
##### Elements| Value | Description |
| ---------- |:-----------:|
|`REGULAR`|A junction that represents a standard intersection with a single road crossing another.|
|`BIFURCATION`|A junction where the road splits off into two paths; a fork in the road.|
|`MULTI_CARRIAGEWAY`|A junction that has multiple intersections and paths.|
|`ROUNDABOUT`|A junction where traffic moves in a single direction around a central, non-traversable point to reach one of the connecting roads.|
|`TRAVERSABLE_ROUNDABOUT`|Similar to a roundabout, however the center of the roundabout is fully traversable. Also known as a mini-roundabout.|
|`JUGHANDLE`|A junction where lefts diverge to the right, then curve to the left, converting a left turn to a crossing maneuver.|
|`ALL_WAY_YIELD`|Multiple way intersection that allows traffic to flow based on priority; most commonly right of way and first in, first out.|
|`TURN_AROUND`|A junction designated for traffic turn arounds.|### Direction
##### Elements| Value | Description |
| ---------- |:-----------:|
|`LEFT`||
|`RIGHT`||### ServiceUpdateReason
##### Elements| Value | Description |
| ---------- |:-----------:|
|`PUBLISHED`|The service has just been published with the module and once activated to the primary service of its type, it will be ready for possible consumption.|
|`REMOVED`|The service has just been unpublished with the module and is no longer accessible|
|`ACTIVATED`|The service is activated as the primary service of this type. All requests dealing with this service type will be handled by this service.|
|`DEACTIVATED`|The service has been deactivated as the primary service of its type|
|`MANIFEST_UPDATE`|The service has updated its manifest. This could imply updated capabilities|### SeekIndicatorType
##### Elements| Value | Description |
| ---------- |:-----------:|
|`TRACK`||
|`TIME`||## Structs
### AudioPassThruCapabilities
Describes different audio type configurations for PerformAudioPassThru. e.g. {8kHz,8-bit,PCM} The audio is recorded in monaural.##### Parameters
| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`samplingRate`|SamplingRate|True||
|`bitsPerSample`|BitsPerSample|True||
|`audioType`|AudioType|True||### CloudAppProperties
##### Parameters| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`nicknames`|String[]|False|An array of app names a cloud app is allowed to register with. If included in a SetCloudAppProperties request, this value will overwrite the existing "nicknames" field in the app policies section of the policy table.|
|`appID`|String|True||
|`enabled`|Boolean|False|If true, cloud app will be included in HMI RPC UpdateAppList|
|`authToken`|String|False|Used to authenticate websocket connection on app activation|
|`cloudTransportType`|String|False|Specifies the connection type Core should use|
|`hybridAppPreference`|HybridAppPreference|False|Specifies the user preference to use the cloud app version or mobile app version when both are available|
|`endpoint`|String|False|Specifies the endpoint which Core will attempt to connect to when this app is selected|### Image
##### Parameters| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`value`|String|True|Either the static hex icon value or the binary image file name identifier (sent by PutFile).|
|`imageType`|ImageType|True|Describes, whether it is a static or dynamic image.|
|`isTemplate`|Boolean|False|If true, the image is a template image and can be recolored by the HMI|### SoftButton
##### Parameters| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`type`|SoftButtonType|True|Describes, whether it is text, highlighted text, icon, or dynamic image. See softButtonType|
|`text`|String|False|Optional text to display (if defined as TEXT or BOTH)|
|`image`|Image|False|Optional image struct for SoftButton (if defined as IMAGE or BOTH)|
|`isHighlighted`|Boolean|False|True, if highlighted False, if not highlighted|
|`softButtonID`|Integer|True|Value which is returned via OnButtonPress / OnButtonEvent|
|`systemAction`|SystemAction|False|Parameter indicating whether selecting a SoftButton shall call a specific system action. This is intended to allow Notifications to bring the callee into full / focus; or in the case of persistent overlays, the overlay can persist when a SoftButton is pressed.|### Choice
A choice is an option given to the user, which can be selected either by menu, or through voice recognition system.##### Parameters
| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`choiceID`|Integer|True||
|`menuName`|String|True||
|`vrCommands`|String[]|False||
|`image`|Image|False||
|`secondaryText`|String|False|Optional secondary text to display; e.g. address of POI in a search result entry|
|`tertiaryText`|String|False|Optional tertiary text to display; e.g. distance to POI for a search result entry|
|`secondaryImage`|Image|False|Optional secondary image struct for choice|### VrHelpItem
##### Parameters| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`text`|String|True|Text to display for VR Help item|
|`image`|Image|False|Image struct for VR Help item|
|`position`|Integer|True|Position to display item in VR Help list|### SyncMsgVersion
Specifies the version number of the SmartDeviceLink protocol that is supported by the mobile application##### Parameters
| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`majorVersion`|Integer|True|The major version indicates versions that is not-compatible to previous versions.|
|`minorVersion`|Integer|True|The minor version indicates a change to a previous version that should still allow to be run on an older version (with limited functionality)|
|`patchVersion`|Integer|False|The patch version indicates a fix to existing functionality in a previous version that should still be able to be run on an older version|### FuelRange
##### Parameters| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`type`|FuelType|False||
|`range`|Float|False|The estimate range in KM the vehicle can travel based on fuel level and consumption.|
|`level`|Float|False|The relative remaining capacity of this fuel type (percentage).|
|`levelState`|ComponentVolumeStatus|False|The fuel level state|
|`capacity`|Float|False|The absolute capacity of this fuel type.|
|`capacityUnit`|CapacityUnit|False|The unit of the capacity of this fuel type such as liters for gasoline or kWh for batteries.|### SingleTireStatus
##### Parameters| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`status`|ComponentVolumeStatus|True|See ComponentVolumeStatus.|
|`tpms`|TPMS|False|The status of TPMS according to the particular tire.|
|`pressure`|Float|False|The pressure value of the particular tire in kilo pascal.|### BeltStatus
##### Parameters| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`driverBeltDeployed`|VehicleDataEventStatus|True|References signal "VedsDrvBelt_D_Ltchd". See VehicleDataEventStatus.|
|`passengerBeltDeployed`|VehicleDataEventStatus|True|References signal "VedsPasBelt_D_Ltchd". See VehicleDataEventStatus.|
|`passengerBuckleBelted`|VehicleDataEventStatus|True|References signal "VedsRw1PasBckl_D_Ltchd". See VehicleDataEventStatus.|
|`driverBuckleBelted`|VehicleDataEventStatus|True|References signal "VedsRw1DrvBckl_D_Ltchd". See VehicleDataEventStatus.|
|`leftRow2BuckleBelted`|VehicleDataEventStatus|True|References signal "VedsRw2lBckl_D_Ltchd". See VehicleDataEventStatus.|
|`passengerChildDetected`|VehicleDataEventStatus|True|References signal "VedsRw1PasChld_D_Ltchd". See VehicleDataEventStatus.|
|`rightRow2BuckleBelted`|VehicleDataEventStatus|True|References signal "VedsRw2rBckl_D_Ltchd". See VehicleDataEventStatus.|
|`middleRow2BuckleBelted`|VehicleDataEventStatus|True|References signal "VedsRw2mBckl_D_Ltchd". See VehicleDataEventStatus.|
|`middleRow3BuckleBelted`|VehicleDataEventStatus|True|References signal "VedsRw3mBckl_D_Ltchd". See VehicleDataEventStatus.|
|`leftRow3BuckleBelted`|VehicleDataEventStatus|True|References signal "VedsRw3lBckl_D_Ltchd". See VehicleDataEventStatus.|
|`rightRow3BuckleBelted`|VehicleDataEventStatus|True|References signal "VedsRw3rBckl_D_Ltchd". See VehicleDataEventStatus.|
|`leftRearInflatableBelted`|VehicleDataEventStatus|True|References signal "VedsRw2lRib_D_Ltchd". See VehicleDataEventStatus.|
|`rightRearInflatableBelted`|VehicleDataEventStatus|True|References signal "VedsRw2rRib_D_Ltchd". See VehicleDataEventStatus.|
|`middleRow1BeltDeployed`|VehicleDataEventStatus|True|References signal "VedsRw1mBelt_D_Ltchd". See VehicleDataEventStatus.|
|`middleRow1BuckleBelted`|VehicleDataEventStatus|True|References signal "VedsRw1mBckl_D_Ltchd". See VehicleDataEventStatus.|### Grid
Describes a location (origin coordinates and span) of a vehicle component.##### Parameters
| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`col`|Integer|True||
|`row`|Integer|True||
|`level`|Integer|False||
|`colspan`|Integer|False||
|`rowspan`|Integer|False||
|`levelspan`|Integer|False||### DoorStatus
Describes the status of a parameter of door.##### Parameters
| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`location`|Grid|True||
|`status`|DoorStatusType|True||### GateStatus
Describes the status of a parameter of trunk/hood/etc.##### Parameters
| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`location`|Grid|True||
|`status`|DoorStatusType|True||### WindowState
##### Parameters| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`approximatePosition`|Integer|True|The approximate percentage that the window is open - 0 being fully closed, 100 being fully open|
|`deviation`|Integer|True|The percentage deviation of the approximatePosition. e.g. If the approximatePosition is 50 and the deviation is 10, then the window's location is somewhere between 40 and 60.|### RoofStatus
Describes the status of a parameter of roof/convertible roof/sunroof/moonroof etc. If roof is open (AJAR), state will determine percentage of roof open.##### Parameters
| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`location`|Grid|True||
|`status`|DoorStatusType|True||
|`state`|WindowState|False||### BodyInformation
##### Parameters| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`parkBrakeActive`|Boolean|True|References signal "PrkBrkActv_B_Actl".|
|`ignitionStableStatus`|IgnitionStableStatus|True|References signal "Ignition_Switch_Stable". See IgnitionStableStatus.|
|`ignitionStatus`|IgnitionStatus|True|References signal "Ignition_status". See IgnitionStatus.|
|`driverDoorAjar`|Boolean|False|References signal "DrStatDrv_B_Actl". Deprecated starting with RPC Spec 7.1.0.|
|`passengerDoorAjar`|Boolean|False|References signal "DrStatPsngr_B_Actl". Deprecated starting with RPC Spec 7.1.0.|
|`rearLeftDoorAjar`|Boolean|False|References signal "DrStatRl_B_Actl". Deprecated starting with RPC Spec 7.1.0.|
|`rearRightDoorAjar`|Boolean|False|References signal "DrStatRr_B_Actl". Deprecated starting with RPC Spec 7.1.0.|
|`doorStatuses`|DoorStatus[]|False|Provides status for doors if Ajar/Closed/Locked|
|`gateStatuses`|GateStatus[]|False|Provides status for trunk/hood/etc. if Ajar/Closed/Locked|
|`roofStatuses`|RoofStatus[]|False|Provides status for roof/convertible roof/sunroof/moonroof etc., if Closed/Ajar/Removed etc.|### DeviceStatus
##### Parameters| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`voiceRecOn`|Boolean|True|References signal "CPM_VoiceRec_STAT".|
|`btIconOn`|Boolean|True|References signal "BT_ICON".|
|`callActive`|Boolean|True|References signal "CPM_Call_Active_STAT".|
|`phoneRoaming`|Boolean|True|References signal "CPM_Phone_Roaming_STAT".|
|`textMsgAvailable`|Boolean|True|References signal "CPM_TextMsg_AVAL".|
|`battLevelStatus`|DeviceLevelStatus|True|Device battery level status. References signal "CPM_Batt_Level_STAT". See DeviceLevelStatus.|
|`stereoAudioOutputMuted`|Boolean|True|References signal "CPM_Stereo_Audio_Output".|
|`monoAudioOutputMuted`|Boolean|True|References signal "CPM_Mono_Audio_Output".|
|`signalLevelStatus`|DeviceLevelStatus|True|Device signal level status. References signal "CPM_Signal_Strength_STAT". See DeviceLevelStatus.|
|`primaryAudioSource`|PrimaryAudioSource|True|References signal "CPM_Stereo_PAS_Source". See PrimaryAudioSource.|
|`eCallEventActive`|Boolean|True|References signal "eCall_Event".|### HeadLampStatus
##### Parameters| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`lowBeamsOn`|Boolean|True|Status of the low beam lamps. References signal "HeadLampLoActv_B_Stat".|
|`highBeamsOn`|Boolean|True|Status of the high beam lamps. References signal "HeadLghtHiOn_B_Stat".|
|`ambientLightSensorStatus`|AmbientLightStatus|False|Status of the ambient light sensor.|### AppInfo
Contains detailed information about the registered application.##### Parameters
| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`appDisplayName`|String|True|The name displayed for the mobile application on the mobile device (can differ from the app name set in the initial RAI request).|
|`appBundleID`|String|True|The AppBundleID of an iOS application or package name of the Android application. This supports App Launch strategies for each platform.|
|`appVersion`|String|True|Represents the build version number of this particular mobile app.|
|`appIcon`|String|False|A file reference to the icon utilized by this app (simplifies the process of setting an app icon during app registration).|### ECallInfo
##### Parameters| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`eCallNotificationStatus`|VehicleDataNotificationStatus|True|References signal "eCallNotification_4A". See VehicleDataNotificationStatus.|
|`auxECallNotificationStatus`|VehicleDataNotificationStatus|True|References signal "eCallNotification". See VehicleDataNotificationStatus.|
|`eCallConfirmationStatus`|ECallConfirmationStatus|True|References signal "eCallConfirmation". See ECallConfirmationStatus.|### AirbagStatus
##### Parameters| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`driverAirbagDeployed`|VehicleDataEventStatus|True|References signal "VedsDrvBag_D_Ltchd". See VehicleDataEventStatus.|
|`driverSideAirbagDeployed`|VehicleDataEventStatus|True|References signal "VedsDrvSideBag_D_Ltchd". See VehicleDataEventStatus.|
|`driverCurtainAirbagDeployed`|VehicleDataEventStatus|True|References signal "VedsDrvCrtnBag_D_Ltchd". See VehicleDataEventStatus.|
|`passengerAirbagDeployed`|VehicleDataEventStatus|True|References signal "VedsPasBag_D_Ltchd". See VehicleDataEventStatus.|
|`passengerCurtainAirbagDeployed`|VehicleDataEventStatus|True|References signal "VedsPasCrtnBag_D_Ltchd". See VehicleDataEventStatus.|
|`driverKneeAirbagDeployed`|VehicleDataEventStatus|True|References signal "VedsKneeDrvBag_D_Ltchd". See VehicleDataEventStatus.|
|`passengerSideAirbagDeployed`|VehicleDataEventStatus|True|References signal "VedsPasSideBag_D_Ltchd". See VehicleDataEventStatus.|
|`passengerKneeAirbagDeployed`|VehicleDataEventStatus|True|References signal "VedsKneePasBag_D_Ltchd". See VehicleDataEventStatus.|### EmergencyEvent
##### Parameters| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`emergencyEventType`|EmergencyEventType|True|References signal "VedsEvntType_D_Ltchd". See EmergencyEventType.|
|`fuelCutoffStatus`|FuelCutoffStatus|True|References signal "RCM_FuelCutoff". See FuelCutoffStatus.|
|`rolloverEvent`|VehicleDataEventStatus|True|References signal "VedsEvntRoll_D_Ltchd". See VehicleDataEventStatus.|
|`maximumChangeVelocity`|Integer|True|References signal "VedsMaxDeltaV_D_Ltchd". Change in velocity in KPH. Additional reserved values: 0x00 No event 0xFE Not supported 0xFF Fault|
|`multipleEvents`|VehicleDataEventStatus|True|References signal "VedsMultiEvnt_D_Ltchd". See VehicleDataEventStatus.|### ClusterModeStatus
##### Parameters| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`powerModeActive`|Boolean|True|References signal "PowerMode_UB".|
|`powerModeQualificationStatus`|PowerModeQualificationStatus|True|References signal "PowerModeQF". See PowerModeQualificationStatus.|
|`carModeStatus`|CarModeStatus|True|References signal "CarMode". See CarMode.|
|`powerModeStatus`|PowerModeStatus|True|References signal "PowerMode". See PowerMode.|### MyKey
##### Parameters| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`e911Override`|VehicleDataStatus|True|Indicates whether e911 override is on. References signal "MyKey_e911Override_St". See VehicleDataStatus.|### TireStatus
The status and pressure of the tires.##### Parameters
| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`pressureTelltale`|WarningLightStatus|False|Status of the Tire Pressure Telltale. See WarningLightStatus.|
|`leftFront`|SingleTireStatus|False|The status of the left front tire.|
|`rightFront`|SingleTireStatus|False|The status of the right front tire.|
|`leftRear`|SingleTireStatus|False|The status of the left rear tire.|
|`rightRear`|SingleTireStatus|False|The status of the right rear tire.|
|`innerLeftRear`|SingleTireStatus|False|The status of the inner left rear.|
|`innerRightRear`|SingleTireStatus|False|The status of the inner right rear.|### StabilityControlsStatus
##### Parameters| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`escSystem`|VehicleDataStatus|False|true if vehicle stability control is ON, else false|
|`trailerSwayControl`|VehicleDataStatus|False|true if vehicle trailer sway control is ON, else false|### GPSData
Struct with the GPS data.##### Parameters
| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`longitudeDegrees`|Float|True||
|`latitudeDegrees`|Float|True||
|`utcYear`|Integer|False|The current UTC year.|
|`utcMonth`|Integer|False|The current UTC month.|
|`utcDay`|Integer|False|The current UTC day.|
|`utcHours`|Integer|False|The current UTC hour.|
|`utcMinutes`|Integer|False|The current UTC minute.|
|`utcSeconds`|Integer|False|The current UTC second.|
|`compassDirection`|CompassDirection|False|See CompassDirection.|
|`pdop`|Float|False|PDOP. If undefined or unavailable, then value shall be set to 0.|
|`hdop`|Float|False|HDOP. If value is unknown, value shall be set to 0.|
|`vdop`|Float|False|VDOP. If value is unknown, value shall be set to 0.|
|`actual`|Boolean|False|True, if actual. False, if inferred.|
|`satellites`|Integer|False|Number of satellites in view|
|`dimension`|Dimension|False|See Dimension|
|`altitude`|Float|False|Altitude in meters|
|`heading`|Float|False|The heading. North is 0. Resolution is 0.01|
|`speed`|Float|False|The speed in KPH|
|`shifted`|Boolean|False|True, if GPS lat/long, time, and altitude have been purposefully shifted (requires a proprietary algorithm to unshift). False, if the GPS data is raw and un-shifted. If not provided, then value is assumed False.|### VehicleDataResult
Individual published data request result##### Parameters
| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`dataType`|VehicleDataType|True|Defined published data element type.|
|`resultCode`|VehicleDataResultCode|True|Published data result code.|
|`oemCustomDataType`|String|False|Type of requested oem specific parameter|### DIDResult
Individual requested DID result and data##### Parameters
| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`resultCode`|VehicleDataResultCode|True|Individual DID result code.|
|`didLocation`|Integer|True|Location of raw data from vehicle data DID|
|`data`|String|False|Raw DID-based data returned for requested element.|### StartTime
##### Parameters| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`hours`|Integer|True|The hour of the media clock. Some radios only support a max of 19 hours. If out of range, it will be rejected.|
|`minutes`|Integer|True||
|`seconds`|Integer|True||### TextField
##### Parameters| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`name`|TextFieldName|True|The name that identifies the field. See TextFieldName.|
|`characterSet`|CharacterSet|True|The set of characters that are supported by this text field. All text is sent in UTF-8 format, but not all systems may support all of the characters expressed by UTF-8. All systems will support at least ASCII, but they may support more, either the LATIN-1 character set, or the full UTF-8 character set.|
|`width`|Integer|True|The number of characters in one row of this field.|
|`rows`|Integer|True|The number of rows of this field.|### ImageResolution
##### Parameters| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`resolutionWidth`|Integer|True|The image resolution width.|
|`resolutionHeight`|Integer|True|The image resolution height.|### ImageField
##### Parameters| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`name`|ImageFieldName|True|The name that identifies the field. See ImageFieldName.|
|`imageTypeSupported`|FileType[]|True|The image types that are supported in this field. See FileType.|
|`imageResolution`|ImageResolution|False|The image resolution of this field.|### TouchCoord
##### Parameters| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`x`|Integer|True|The x coordinate of the touch.|
|`y`|Integer|True|The y coordinate of the touch.|### TouchEvent
##### Parameters| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`id`|Integer|True|A touch's unique identifier. The application can track the current touch events by id. If a touch event has type begin, the id should be added to the set of touches. If a touch event has type end, the id should be removed from the set of touches.|
|`ts`|Integer[]|True|The time that the touch was recorded. This number can the time since the beginning of the session or something else as long as the units are in milliseconds. The timestamp is used to determined the rate of change of position of a touch. The application also uses the time to verify whether two touches, with different ids, are part of a single action by the user. If there is only a single timestamp in this array, it is the same for every coordinate in the coordinates array.|
|`c`|TouchCoord[]|True||### TouchEventCapabilities
##### Parameters| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`pressAvailable`|Boolean|True||
|`multiTouchAvailable`|Boolean|True||
|`doublePressAvailable`|Boolean|True||### ScreenParams
##### Parameters| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`resolution`|ImageResolution|True|The resolution of the prescribed screen area.|
|`touchEventAvailable`|TouchEventCapabilities|False|Types of screen touch events available in screen area.|### HMIPermissions
##### Parameters| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`allowed`|HMILevel[]|True|A set of all HMI levels that are permitted for this given RPC.|
|`userDisallowed`|HMILevel[]|True|A set of all HMI levels that are prohibited for this given RPC.|### ParameterPermissions
##### Parameters| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`allowed`|String[]|True|A set of all parameters that are permitted for this given RPC.|
|`userDisallowed`|String[]|True|A set of all parameters that are prohibited for this given RPC.|### PermissionItem
##### Parameters| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`rpcName`|String|True|Name of the individual RPC in the policy table.|
|`hmiPermissions`|HMIPermissions|True||
|`parameterPermissions`|ParameterPermissions|True||
|`requireEncryption`|Boolean|False||### DisplayCapabilities
###### Deprecated since: 6.0.0Contains information about the display capabilities. This struct is deprecated; please see the new SystemCapability DISPLAYS and corresponding struct DisplayCapability
##### Parameters
| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`displayType`|DisplayType|True|The type of the display. See DisplayType|
|`displayName`|String|False|The name of the display the app is connected to.|
|`textFields`|TextField[]|True|A set of all fields that support text data. See TextField|
|`imageFields`|ImageField[]|False|A set of all fields that support images. See ImageField|
|`mediaClockFormats`|MediaClockFormat[]|True|A set of all supported formats of the media clock. See MediaClockFormat|
|`graphicSupported`|Boolean|True|The display's persistent screen supports referencing a static or dynamic image.|
|`templatesAvailable`|String[]|False|A set of all predefined persistent display templates available on headunit. To be referenced in SetDisplayLayout.|
|`screenParams`|ScreenParams|False|A set of all parameters related to a prescribed screen area (e.g. for video / touch input).|
|`numCustomPresetsAvailable`|Integer|False|The number of on-screen custom presets available (if any); otherwise omitted.|### WindowStatus
Describes the status of a window of a door/liftgate etc.##### Parameters
| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`location`|Grid|True||
|`state`|WindowState|True||### ModuleInfo
Information about an RC module##### Parameters
| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`moduleId`|String|True|UUID of a module. "moduleId + moduleType" uniquely identify a module.|
|`location`|Grid|False|Location of a module.|
|`serviceArea`|Grid|False|Service area of a module.|
|`allowMultipleAccess`|Boolean|False|allow multiple users/apps to access the module or not|### ButtonCapabilities
Contains information about a button's capabilities. NOTE: Multiple button capabilities can exist for the same ButtonName with different module ids. The module Id for a button should match the module id for a "primary" module type, such as a climate module or a radio module. Whichever module the id matches the button's id is the module the button will control.##### Parameters
| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`name`|ButtonName|True|The name of the button. See ButtonName.|
|`moduleInfo`|ModuleInfo|False|Information about an RC module, including its id.|
|`shortPressAvailable`|Boolean|True|The button supports a short press. Whenever the button is pressed short, onButtonPressed( SHORT) will be invoked.|
|`longPressAvailable`|Boolean|True|The button supports a LONG press. Whenever the button is pressed long, onButtonPressed( LONG) will be invoked.|
|`upDownAvailable`|Boolean|True|The button supports "button down" and "button up". Whenever the button is pressed, onButtonEvent( DOWN) will be invoked. Whenever the button is released, onButtonEvent( UP) will be invoked.|### SoftButtonCapabilities
Contains information about a SoftButton's capabilities.##### Parameters
| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`shortPressAvailable`|Boolean|True|The button supports a short press. Whenever the button is pressed short, onButtonPressed( SHORT) will be invoked.|
|`longPressAvailable`|Boolean|True|The button supports a LONG press. Whenever the button is pressed long, onButtonPressed( LONG) will be invoked.|
|`upDownAvailable`|Boolean|True|The button supports "button down" and "button up". Whenever the button is pressed, onButtonEvent( DOWN) will be invoked. Whenever the button is released, onButtonEvent( UP) will be invoked.|
|`imageSupported`|Boolean|True|The button supports referencing a static or dynamic image.|
|`textSupported`|Boolean|False|The button supports the use of text. If not included, the default value should be considered true that the button will support text.|### PresetBankCapabilities
Contains information about on-screen preset capabilities.##### Parameters
| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`onScreenPresetsAvailable`|Boolean|True|Onscreen custom presets are available.|### DynamicUpdateCapabilities
##### Parameters| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`supportedDynamicImageFieldNames`|ImageFieldName[]|False|An array of ImageFieldName values for which the system supports sending OnFileUpdate notifications. If you send an Image struct for that image field with a name without having uploaded the image data using PutFile that matches that name, the system will request that you upload the data with PutFile at a later point when the HMI needs it. The HMI will then display the image in the appropriate field. If not sent, assume false.|
|`supportsDynamicSubMenus`|Boolean|False|If true, the head unit supports dynamic sub-menus by sending OnUpdateSubMenu notifications. If true, you should not send AddCommands that attach to a parentID for an AddSubMenu until OnUpdateSubMenu is received with the menuID. At that point, you should send all AddCommands with a parentID that match the menuID. If not set, assume false.|### KeyboardLayoutCapability
Describes the capabilities of a single keyboard layout.##### Parameters
| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`keyboardLayout`|KeyboardLayout|True||
|`numConfigurableKeys`|Integer|True|Number of keys available for special characters, App can customize as per their needs.|### KeyboardCapabilities
##### Parameters| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`maskInputCharactersSupported`|Boolean|False|Availability of capability to mask input characters using keyboard. True: Available, False: Not Available|
|`supportedKeyboards`|KeyboardLayoutCapability[]|False|Capabilities of supported keyboard layouts by HMI.|### WindowCapability
##### Parameters| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`windowID`|Integer|False|The specified ID of the window. This ID is either one used when sending the CreateWindow request, or one of the predefined window ID values from the enum PredefinedWindows. If omitted, value is assumed to be the main window on the main display.|
|`textFields`|TextField[]|False|A set of all fields that support text data. See TextField|
|`imageFields`|ImageField[]|False|A set of all fields that support images. See ImageField|
|`imageTypeSupported`|ImageType[]|False|Provides information about image types supported by the system.|
|`templatesAvailable`|String[]|False|A set of all window templates available on the head unit.|
|`numCustomPresetsAvailable`|Integer|False|The number of on-window custom presets available (if any); otherwise omitted.|
|`buttonCapabilities`|ButtonCapabilities[]|False|The number of buttons and the capabilities of each on-window button.|
|`softButtonCapabilities`|SoftButtonCapabilities[]|False|The number of soft buttons available on-window and the capabilities for each button.|
|`menuLayoutsAvailable`|MenuLayout[]|False|An array of available menu layouts. If this parameter is not provided, only the `LIST` layout is assumed to be available|
|`dynamicUpdateCapabilities`|DynamicUpdateCapabilities|False|Contains the head unit's capabilities for dynamic updating features declaring if the module will send dynamic update RPCs.|
|`keyboardCapabilities`|KeyboardCapabilities|False|See KeyboardCapabilities|### WindowTypeCapabilities
##### Parameters| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`type`|WindowType|True||
|`maximumNumberOfWindows`|Integer|True||### DisplayCapability
##### Parameters| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`displayName`|String|False||
|`windowTypeSupported`|WindowTypeCapabilities[]|False|Informs the application how many windows the app is allowed to create per type.|
|`windowCapabilities`|WindowCapability[]|False|Contains a list of capabilities of all windows related to the app. Once the app has registered the capabilities of all windows are provided. GetSystemCapability still allows requesting window capabilities of all windows. After registration, only windows with capabilities changed will be included. Following cases will cause only affected windows to be included: 1. App creates a new window. After the window is created, a system capability notification will be sent related only to the created window. 2. App sets a new layout to the window. The new layout changes window capabilities. The notification will reflect those changes to the single window.|### HMICapabilities
##### Parameters| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`navigation`|Boolean|False|Availability of build in Nav. True: Available, False: Not Available|
|`phoneCall`|Boolean|False|Availability of build in phone. True: Available, False: Not Available|
|`videoStreaming`|Boolean|False|Availability of video streaming.|
|`remoteControl`|Boolean|False|Availability of remote control feature. True: Available, False: Not Available|
|`appServices`|Boolean|False|Availability of App Services functionality. True: Available, False: Not Available|
|`displays`|Boolean|False|Availability of displays capability. True: Available, False: Not Available|
|`seatLocation`|Boolean|False|Availability of seat location feature. True: Available, False: Not Available|
|`driverDistraction`|Boolean|False|Availability of driver distraction capability. True: Available, False: Not Available|### MenuParams
##### Parameters| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`parentID`|Integer|False|unique ID of the sub menu, the command will be added to. If not provided, it will be provided to the top level of the in application menu.|
|`position`|Integer|False|Position within the items that are at top level of the in application menu. 0 will insert at the front. 1 will insert at the second position. if position is greater or equal than the number of items on top level, the sub menu will be appended to the end. If this param was omitted the entry will be added at the end.|
|`menuName`|String|True|Text to show in the menu for this sub menu.|
|`secondaryText`|String|False|Optional secondary text to display|
|`tertiaryText`|String|False|Optional tertiary text to display|### TTSChunk
A TTS chunk, that consists of text/phonemes to speak or the name of a file to play, and a TTS type (like text or SAPI)##### Parameters
| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`text`|String|True|The text or phonemes to speak, or the name of the audio file to play. May not be empty.|
|`type`|SpeechCapabilities|True|Describes whether the TTS chunk is plain text, a specific phoneme set, or an audio file. See SpeechCapabilities|### Turn
##### Parameters| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`navigationText`|String|False|Individual turn text. Must provide at least text or icon for a given turn.|
|`turnIcon`|Image|False|Individual turn icon. Must provide at least text or icon for a given turn.|### VehicleType
##### Parameters| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`make`|String|False|Make of the vehicle, e.g. Ford|
|`model`|String|False|Model of the vehicle, e.g. Fiesta|
|`modelYear`|String|False|Model Year of the vehicle, e.g. 2013|
|`trim`|String|False|Trim of the vehicle, e.g. SE|### KeyboardProperties
Configuration of on-screen keyboard (if available).##### Parameters
| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`language`|Language|False|The keyboard language.|
|`keyboardLayout`|KeyboardLayout|False|Desired keyboard layout.|
|`keypressMode`|KeypressMode|False|Desired keypress mode. If omitted, this value will be set to RESEND_CURRENT_ENTRY.|
|`limitedCharacterList`|String[]|False|Array of keyboard characters to enable. All omitted characters will be greyed out (disabled) on the keyboard. If omitted, the entire keyboard will be enabled.|
|`autoCompleteText`|String|False|Deprecated, use autoCompleteList instead.|
|`autoCompleteList`|String[]|False|Allows an app to pre-populate the text field with a list of suggested or completed entries as the user types. If empty, the auto-complete list will be removed from the screen.|
|`maskInputCharacters`|KeyboardInputMask|False|Allows an app to mask entered characters on HMI|
|`customKeys`|String[]|False|Array of special characters to show in customizable keys. If omitted, keyboard will show default special characters|### DeviceInfo
Various information about connecting device.##### Parameters
| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`hardware`|String|False|Device model|
|`firmwareRev`|String|False|Device firmware revision|
|`os`|String|False|Device OS|
|`osVersion`|String|False|Device OS version|
|`carrier`|String|False|Device mobile carrier (if applicable)|
|`maxNumberRFCOMMPorts`|Integer|False|Omitted if connected not via BT.|### DateTime
##### Parameters| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`millisecond`|Integer|False|Milliseconds|
|`second`|Integer|False|Seconds part of time|
|`minute`|Integer|False|Minutes part of time|
|`hour`|Integer|False|Hours part of time. Note that this structure accepts time only in 24 Hr format|
|`day`|Integer|False|Day of the month|
|`month`|Integer|False|Month of the year|
|`year`|Integer|False|The year in YYYY format|
|`tz_hour`|Integer|False|Time zone offset in Hours wrt UTC.|
|`tz_minute`|Integer|False|Time zone offset in Min wrt UTC.|### Coordinate
##### Parameters| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`latitudeDegrees`|Float|True|Latitude of the location.|
|`longitudeDegrees`|Float|True|Longitude of the location.|### OASISAddress
##### Parameters| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`countryName`|String|False|Name of the country (localized)|
|`countryCode`|String|False|Name of country (ISO 3166-2)|
|`postalCode`|String|False|(PLZ, ZIP, PIN, CAP etc.)|
|`administrativeArea`|String|False|Portion of country (e.g. state)|
|`subAdministrativeArea`|String|False|Portion of e.g. state (e.g. county)|
|`locality`|String|False|Hypernym for e.g. city/village|
|`subLocality`|String|False|Hypernym for e.g. district|
|`thoroughfare`|String|False|Hypernym for street, road etc.|
|`subThoroughfare`|String|False|Portion of thoroughfare e.g. house number|### LocationDetails
##### Parameters| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`coordinate`|Coordinate|False|Latitude/Longitude of the location.|
|`locationName`|String|False|Name of location.|
|`addressLines`|String[]|False|Location address for display purposes only|
|`locationDescription`|String|False|Description intended location / establishment (if applicable)|
|`phoneNumber`|String|False|Phone number of location / establishment.|
|`locationImage`|Image|False|Image / icon of intended location.|
|`searchAddress`|OASISAddress|False|Address to be used by navigation engines for search|### NavigationCapability
Extended capabilities for an onboard navigation system##### Parameters
| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`sendLocationEnabled`|Boolean|False|If the module has the ability to add locations to the onboard nav|
|`getWayPointsEnabled`|Boolean|False|If the module has the ability to return way points from onboard nav|### PhoneCapability
Extended capabilities of the module's phone feature##### Parameters
| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`dialNumberEnabled`|Boolean|False|If the module has the ability to perform dial number|### VideoStreamingFormat
Video streaming formats and their specifications.##### Parameters
| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`protocol`|VideoStreamingProtocol|True|Protocol type, see VideoStreamingProtocol|
|`codec`|VideoStreamingCodec|True|Codec type, see VideoStreamingCodec|### VideoStreamingCapability
Contains information about this system's video streaming capabilities.##### Parameters
| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`preferredResolution`|ImageResolution|False|The preferred resolution of a video stream for decoding and rendering on HMI.|
|`maxBitrate`|Integer|False|The maximum bitrate of video stream that is supported, in kbps.|
|`supportedFormats`|VideoStreamingFormat[]|False|Detailed information on each format supported by this system, in its preferred order (i.e. the first element in the array is most preferable to the system). Each object will contain a VideoStreamingFormat that describes what can be expected.|
|`hapticSpatialDataSupported`|Boolean|False|True if the system can utilize the haptic spatial data from the source being streamed. If not included, it can be assumed the module doesn't support haptic spatial data'.|
|`diagonalScreenSize`|Float|False|The diagonal screen size in inches.|
|`pixelPerInch`|Float|False|PPI is the diagonal resolution in pixels divided by the diagonal screen size in inches.|
|`scale`|Float|False|The scaling factor the app should use to change the size of the projecting view.|
|`preferredFPS`|Integer|False|The preferred frame rate per second of the head unit. The mobile application / app library may take other factors into account that constrain the frame rate lower than this value, but it should not perform streaming at a higher frame rate than this value.|
|`additionalVideoStreamingCapabilities`|VideoStreamingCapability[]|False||### DriverDistractionCapability
##### Parameters| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`menuLength`|Integer|False|The number of items allowed in a Choice Set or Command menu while the driver is distracted|
|`subMenuDepth`|Integer|False|The depth of submenus allowed when the driver is distracted. e.g. 3 == top level menu -> submenu -> submenu; 1 == top level menu only|### RGBColor
##### Parameters| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`red`|Integer|True||
|`green`|Integer|True||
|`blue`|Integer|True||### TemplateColorScheme
A color scheme for all display layout templates.##### Parameters
| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`primaryColor`|RGBColor|False|The primary "accent" color|
|`secondaryColor`|RGBColor|False|The secondary "accent" color|
|`backgroundColor`|RGBColor|False|The color of the background|### TemplateConfiguration
##### Parameters| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`template`|String|True|Predefined or dynamically created window template. Currently only predefined window template layouts are defined.|
|`dayColorScheme`|TemplateColorScheme|False||
|`nightColorScheme`|TemplateColorScheme|False||### SeatLocation
Describes the location of a seat.##### Parameters
| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`grid`|Grid|False||### SeatLocationCapability
Contains information about the locations of each seat##### Parameters
| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`rows`|Integer|False||
|`columns`|Integer|False||
|`levels`|Integer|False||
|`seats`|SeatLocation[]|False|Contains a list of SeatLocation in the vehicle|### MassageModeData
Specify the mode of a massage zone.##### Parameters
| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`massageZone`|MassageZone|True||
|`massageMode`|MassageMode|True||### MassageCushionFirmness
The intensity or firmness of a cushion.##### Parameters
| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`cushion`|MassageCushion|True||
|`firmness`|Integer|True||### SeatMemoryAction
##### Parameters| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`id`|Integer|True||
|`label`|String|False||
|`action`|SeatMemoryActionType|True||### SeatControlData
Seat control data corresponds to "SEAT" ModuleType.##### Parameters
| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`id`|SupportedSeat|True||
|`heatingEnabled`|Boolean|False||
|`coolingEnabled`|Boolean|False||
|`heatingLevel`|Integer|False||
|`coolingLevel`|Integer|False||
|`horizontalPosition`|Integer|False||
|`verticalPosition`|Integer|False||
|`frontVerticalPosition`|Integer|False||
|`backVerticalPosition`|Integer|False||
|`backTiltAngle`|Integer|False||
|`headSupportHorizontalPosition`|Integer|False||
|`headSupportVerticalPosition`|Integer|False||
|`massageEnabled`|Boolean|False||
|`massageMode`|MassageModeData[]|False||
|`massageCushionFirmness`|MassageCushionFirmness[]|False||
|`memory`|SeatMemoryAction|False||### SeatControlCapabilities
##### Parameters| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`moduleName`|String|True|The short friendly name of the seat control module. It should not be used to identify a module by mobile application.|
|`moduleInfo`|ModuleInfo|False|Information about an RC module, including its id.|
|`heatingEnabledAvailable`|Boolean|False||
|`coolingEnabledAvailable`|Boolean|False||
|`heatingLevelAvailable`|Boolean|False||
|`coolingLevelAvailable`|Boolean|False||
|`horizontalPositionAvailable`|Boolean|False||
|`verticalPositionAvailable`|Boolean|False||
|`frontVerticalPositionAvailable`|Boolean|False||
|`backVerticalPositionAvailable`|Boolean|False||
|`backTiltAngleAvailable`|Boolean|False||
|`headSupportHorizontalPositionAvailable`|Boolean|False||
|`headSupportVerticalPositionAvailable`|Boolean|False||
|`massageEnabledAvailable`|Boolean|False||
|`massageModeAvailable`|Boolean|False||
|`massageCushionFirmnessAvailable`|Boolean|False||
|`memoryAvailable`|Boolean|False||### Temperature
##### Parameters| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`unit`|TemperatureUnit|True|Temperature Unit|
|`value`|Float|True|Temperature Value in TemperatureUnit specified unit. Range depends on OEM and is not checked by SDL.|### RdsData
##### Parameters| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`PS`|String|False|Program Service Name|
|`RT`|String|False|Radio Text|
|`CT`|String|False|The clock text in UTC format as YYYY-MM-DDThh:mm:ss.sTZD|
|`PI`|String|False|Program Identification - the call sign for the radio station|
|`PTY`|Integer|False|The program type - The region should be used to differentiate between EU and North America program types|
|`TP`|Boolean|False|Traffic Program Identification - Identifies a station that offers traffic|
|`TA`|Boolean|False|Traffic Announcement Identification - Indicates an ongoing traffic announcement|
|`REG`|String|False|Region|### StationIDNumber
##### Parameters| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`countryCode`|Integer|False|Binary Representation of ITU Country Code. USA Code is 001.|
|`fccFacilityId`|Integer|False|Binary representation of unique facility ID assigned by the FCC; FCC controlled for U.S. territory|### SisData
##### Parameters| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`stationShortName`|String|False|Identifies the 4-alpha-character station call sign plus an optional (-FM) extension|
|`stationIDNumber`|StationIDNumber|False|Used for network Application. Consists of Country Code and FCC Facility ID.|
|`stationLongName`|String|False|Identifies the station call sign or other identifying information in the long format.|
|`stationLocation`|GPSData|False|Provides the 3-dimensional geographic station location.|
|`stationMessage`|String|False|May be used to convey textual information of general interest to the consumer such as weather forecasts or public service announcements. Includes a high priority delivery feature to convey emergencies that may be in the listening area.|### RadioControlData
##### Parameters| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`frequencyInteger`|Integer|False|The integer part of the frequency ie for 101.7 this value should be 101|
|`frequencyFraction`|Integer|False|The fractional part of the frequency for 101.7 is 7|
|`band`|RadioBand|False||
|`rdsData`|RdsData|False||
|`hdRadioEnable`|Boolean|False|True if the hd radio is on, false if the radio is off|
|`availableHDs`|Integer|False|Number of HD sub-channels if available|
|`availableHdChannels`|Integer[]|False|The list of available HD sub-channel indexes. Empty list means no Hd channel is available. Read-only.|
|`hdChannel`|Integer|False|Current HD sub-channel if available|
|`signalStrength`|Integer|False||
|`signalChangeThreshold`|Integer|False|If the signal strength falls below the set value for this parameter, the radio will tune to an alternative frequency|
|`radioEnable`|Boolean|False|True if the radio is on, false if the radio is off. If set to false, no other data will be included.|
|`state`|RadioState|False||
|`sisData`|SisData|False|Read-only Station Information Service (SIS) data provides basic information about the station such as call sign, as well as information not displayable to the consumer such as the station identification number|### ClimateControlData
##### Parameters| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`fanSpeed`|Integer|False||
|`currentTemperature`|Temperature|False||
|`desiredTemperature`|Temperature|False||
|`acEnable`|Boolean|False||
|`circulateAirEnable`|Boolean|False||
|`autoModeEnable`|Boolean|False||
|`defrostZone`|DefrostZone|False||
|`dualModeEnable`|Boolean|False||
|`acMaxEnable`|Boolean|False||
|`ventilationMode`|VentilationMode|False||
|`heatedSteeringWheelEnable`|Boolean|False|value false means disabled/turn off, value true means enabled/turn on.|
|`heatedWindshieldEnable`|Boolean|False|value false means disabled, value true means enabled.|
|`heatedRearWindowEnable`|Boolean|False|value false means disabled, value true means enabled.|
|`heatedMirrorsEnable`|Boolean|False|value false means disabled, value true means enabled.|
|`climateEnable`|Boolean|False|True if the climate module is on, false if the climate module is off|### RadioControlCapabilities
Contains information about a radio control module's capabilities.##### Parameters
| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`moduleName`|String|True|The short friendly name of the radio control module. It should not be used to identify a module by mobile application.|
|`moduleInfo`|ModuleInfo|False|Information about an RC module, including its id.|
|`radioEnableAvailable`|Boolean|False|Availability of the control of enable/disable radio. True: Available, False: Not Available, Not present: Not Available.|
|`radioBandAvailable`|Boolean|False|Availability of the control of radio band. True: Available, False: Not Available, Not present: Not Available.|
|`radioFrequencyAvailable`|Boolean|False|Availability of the control of radio frequency. True: Available, False: Not Available, Not present: Not Available.|
|`hdChannelAvailable`|Boolean|False|Availability of the control of HD radio channel. True: Available, False: Not Available, Not present: Not Available.|
|`rdsDataAvailable`|Boolean|False|Availability of the getting Radio Data System (RDS) data. True: Available, False: Not Available, Not present: Not Available.|
|`availableHDsAvailable`|Boolean|False|Availability of the getting the number of available HD channels. True: Available, False: Not Available, Not present: Not Available.|
|`availableHdChannelsAvailable`|Boolean|False|Availability of the list of available HD sub-channel indexes. True: Available, False: Not Available, Not present: Not Available.|
|`stateAvailable`|Boolean|False|Availability of the getting the Radio state. True: Available, False: Not Available, Not present: Not Available.|
|`signalStrengthAvailable`|Boolean|False|Availability of the getting the signal strength. True: Available, False: Not Available, Not present: Not Available.|
|`signalChangeThresholdAvailable`|Boolean|False|Availability of the getting the signal Change Threshold. True: Available, False: Not Available, Not present: Not Available.|
|`sisDataAvailable`|Boolean|False|Availability of the getting HD radio Station Information Service (SIS) data. True: Available, False: Not Available, Not present: Not Available.|
|`hdRadioEnableAvailable`|Boolean|False|Availability of the control of enable/disable HD radio. True: Available, False: Not Available, Not present: Not Available.|
|`siriusxmRadioAvailable`|Boolean|False|Availability of Sirius XM radio. True: Available, False: Not Available, Not present: Not Available.|### ClimateControlCapabilities
Contains information about a climate control module's capabilities.##### Parameters
| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`moduleName`|String|True|The short friendly name of the climate control module. It should not be used to identify a module by mobile application.|
|`moduleInfo`|ModuleInfo|False|Information about an RC module, including its id.|
|`currentTemperatureAvailable`|Boolean|False|Availability of the reading of current temperature. True: Available, False: Not Available, Not present: Not Available.|
|`fanSpeedAvailable`|Boolean|False|Availability of the control of fan speed. True: Available, False: Not Available, Not present: Not Available.|
|`desiredTemperatureAvailable`|Boolean|False|Availability of the control of desired temperature. True: Available, False: Not Available, Not present: Not Available.|
|`acEnableAvailable`|Boolean|False|Availability of the control of turn on/off AC. True: Available, False: Not Available, Not present: Not Available.|
|`acMaxEnableAvailable`|Boolean|False|Availability of the control of enable/disable air conditioning is ON on the maximum level. True: Available, False: Not Available, Not present: Not Available.|
|`circulateAirEnableAvailable`|Boolean|False|Availability of the control of enable/disable circulate Air mode. True: Available, False: Not Available, Not present: Not Available.|
|`autoModeEnableAvailable`|Boolean|False|Availability of the control of enable/disable auto mode. True: Available, False: Not Available, Not present: Not Available.|
|`dualModeEnableAvailable`|Boolean|False|Availability of the control of enable/disable dual mode. True: Available, False: Not Available, Not present: Not Available.|
|`defrostZoneAvailable`|Boolean|False|Availability of the control of defrost zones. True: Available, False: Not Available, Not present: Not Available.|
|`defrostZone`|DefrostZone[]|False|A set of all defrost zones that are controllable.|
|`ventilationModeAvailable`|Boolean|False|Availability of the control of air ventilation mode. True: Available, False: Not Available, Not present: Not Available.|
|`ventilationMode`|VentilationMode[]|False|A set of all ventilation modes that are controllable.|
|`heatedSteeringWheelAvailable`|Boolean|False|Availability of the control (enable/disable) of heated Steering Wheel. True: Available, False: Not Available, Not present: Not Available.|
|`heatedWindshieldAvailable`|Boolean|False|Availability of the control (enable/disable) of heated Windshield. True: Available, False: Not Available, Not present: Not Available.|
|`heatedRearWindowAvailable`|Boolean|False|Availability of the control (enable/disable) of heated Rear Window. True: Available, False: Not Available, Not present: Not Available.|
|`heatedMirrorsAvailable`|Boolean|False|Availability of the control (enable/disable) of heated Mirrors. True: Available, False: Not Available, Not present: Not Available.|
|`climateEnableAvailable`|Boolean|False|Availability of the control of enable/disable climate control. True: Available, False: Not Available, Not present: Not Available.|### EqualizerSettings
Defines the each Equalizer channel settings.##### Parameters
| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`channelId`|Integer|True||
|`channelName`|String|False|read-only channel / frequency name (e.i. "Treble, Midrange, Bass" or "125 Hz")|
|`channelSetting`|Integer|True|Reflects the setting, from 0%-100%.|### AudioControlData
##### Parameters| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`source`|PrimaryAudioSource|False|In a getter response or a notification, it is the current primary audio source of the system. In a setter request, it is the target audio source that the system shall switch to. If the value is MOBILE_APP, the system shall switch to the mobile media app that issues the setter RPC.|
|`keepContext`|Boolean|False|This parameter shall not be present in any getter responses or notifications. This parameter is optional in a setter request. The default value is false if it is not included. If it is false, the system not only changes the audio source but also brings the default application or system UI associated with the audio source to foreground. If it is true, the system only changes the audio source, but keeps the current application in foreground.|
|`volume`|Integer|False|Reflects the volume of audio, from 0%-100%.|
|`equalizerSettings`|EqualizerSettings[]|False|Defines the list of supported channels (band) and their current/desired settings on HMI|### AudioControlCapabilities
##### Parameters| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`moduleName`|String|True|The short friendly name of the audio control module. It should not be used to identify a module by mobile application.|
|`moduleInfo`|ModuleInfo|False|Information about an RC module, including its id.|
|`sourceAvailable`|Boolean|False|Availability of the control of audio source.|
|`keepContextAvailable`|Boolean|False|Availability of the keepContext parameter.|
|`volumeAvailable`|Boolean|False|Availability of the control of audio volume.|
|`equalizerAvailable`|Boolean|False|Availability of the control of Equalizer Settings.|
|`equalizerMaxChannelId`|Integer|False|Must be included if equalizerAvailable=true, and assume all IDs starting from 1 to this value are valid|### LightCapabilities
##### Parameters| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`name`|LightName|True||
|`statusAvailable`|Boolean|False|Indicates if the status (ON/OFF) can be set remotely. App shall not use read-only values (RAMP_UP/RAMP_DOWN/UNKNOWN/INVALID) in a setInteriorVehicleData request.|
|`densityAvailable`|Boolean|False|Indicates if the light's density can be set remotely (similar to a dimmer).|
|`rgbColorSpaceAvailable`|Boolean|False|Indicates if the light's color can be set remotely by using the sRGB color space.|### LightControlCapabilities
##### Parameters| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`moduleName`|String|True|The short friendly name of the light control module. It should not be used to identify a module by mobile application.|
|`moduleInfo`|ModuleInfo|False|Information about an RC module, including its id.|
|`supportedLights`|LightCapabilities[]|True|An array of available LightCapabilities that are controllable.|### LightState
##### Parameters| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`id`|LightName|True|The name of a light or a group of lights.|
|`status`|LightStatus|True||
|`density`|Float|False||
|`color`|RGBColor|False||### LightControlData
##### Parameters| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`lightState`|LightState[]|True|An array of LightNames and their current or desired status. No change to the status of the LightNames that are not listed in the array.|### HMISettingsControlData
Corresponds to "HMI_SETTINGS" ModuleType##### Parameters
| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`displayMode`|DisplayMode|False||
|`temperatureUnit`|TemperatureUnit|False||
|`distanceUnit`|DistanceUnit|False||### HMISettingsControlCapabilities
##### Parameters| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`moduleName`|String|True|The short friendly name of the hmi setting module. It should not be used to identify a module by mobile application.|
|`moduleInfo`|ModuleInfo|False|Information about an RC module, including its id.|
|`distanceUnitAvailable`|Boolean|False|Availability of the control of distance unit.|
|`temperatureUnitAvailable`|Boolean|False|Availability of the control of temperature unit.|
|`displayModeUnitAvailable`|Boolean|False|Availability of the control of HMI display mode.|### ModuleData
The moduleType indicates which type of data should be changed and identifies which data object exists in this struct. For example, if the moduleType is CLIMATE then a "climateControlData" should exist##### Parameters
| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`moduleType`|ModuleType|True||
|`moduleId`|String|False|Id of a module, published by System Capability.|
|`radioControlData`|RadioControlData|False||
|`climateControlData`|ClimateControlData|False||
|`seatControlData`|SeatControlData|False||
|`audioControlData`|AudioControlData|False||
|`lightControlData`|LightControlData|False||
|`hmiSettingsControlData`|HMISettingsControlData|False||### RemoteControlCapabilities
##### Parameters| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`climateControlCapabilities`|ClimateControlCapabilities[]|False|If included, the platform supports RC climate controls. For this baseline version, maxsize=1. i.e. only one climate control module is supported.|
|`radioControlCapabilities`|RadioControlCapabilities[]|False|If included, the platform supports RC radio controls.|
|`buttonCapabilities`|ButtonCapabilities[]|False|If included, the platform supports RC button controls with the included button names. NOTE: Multiple button capabilities can exist for the same ButtonName with different module ids. The module Id for a button should match the module id for a "primary" module type, such as a climate module or a radio module. Whichever module the id matches the button's id is the module the button will control.|
|`audioControlCapabilities`|AudioControlCapabilities[]|False|If included, the platform supports audio controls.|
|`hmiSettingsControlCapabilities`|HMISettingsControlCapabilities|False|If included, the platform supports hmi setting controls.|
|`lightControlCapabilities`|LightControlCapabilities|False|If included, the platform supports light controls.|
|`seatControlCapabilities`|SeatControlCapabilities[]|False|If included, the platform supports seat controls.|### MetadataTags
##### Parameters| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`mainField1`|MetadataType[]|False|The type of data contained in the "mainField1" text field.|
|`mainField2`|MetadataType[]|False|The type of data contained in the "mainField2" text field.|
|`mainField3`|MetadataType[]|False|The type of data contained in the "mainField3" text field.|
|`mainField4`|MetadataType[]|False|The type of data contained in the "mainField4" text field.|### Rectangle
##### Parameters| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`x`|Float|True|The upper left X-coordinate of the rectangle|
|`y`|Float|True|The upper left Y-coordinate of the rectangle|
|`width`|Float|True|The width of the rectangle|
|`height`|Float|True|The height of the rectangle|### HapticRect
Defines haptic data for each user control object for video streaming application##### Parameters
| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`id`|Integer|True|A user control spatial identifier|
|`rect`|Rectangle|True|The position of the haptic rectangle to be highlighted. The center of this rectangle will be "touched" when a press occurs.|### MediaServiceManifest
### MediaServiceData
This data is related to what a media service should provide##### Parameters
| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`mediaType`|MediaType|False|The type of the currently playing or paused track.|
|`mediaTitle`|String|False|Music: The name of the current track Podcast: The name of the current episode Audiobook: The name of the current chapter|
|`mediaArtist`|String|False|Music: The name of the current album artist Podcast: The provider of the podcast (hosts, network, company) Audiobook: The book author's name|
|`mediaAlbum`|String|False|Music: The name of the current album Podcast: The name of the current podcast show Audiobook: The name of the current book|
|`playlistName`|String|False|Music: The name of the playlist or radio station, if the user is playing from a playlist, otherwise, Null Podcast: The name of the playlist, if the user is playing from a playlist, otherwise, Null Audiobook: Likely not applicable, possibly a collection or "playlist" of books|
|`isExplicit`|Boolean|False|Whether or not the content currently playing (e.g. the track, episode, or book) contains explicit content|
|`trackPlaybackProgress`|Integer|False|Music: The current progress of the track in seconds Podcast: The current progress of the episode in seconds Audiobook: The current progress of the current segment (e.g. the chapter) in seconds|
|`trackPlaybackDuration`|Integer|False|Music: The total duration of the track in seconds Podcast: The total duration of the episode in seconds Audiobook: The total duration of the current segment (e.g. the chapter) in seconds|
|`queuePlaybackProgress`|Integer|False|Music: The current progress of the playback queue in seconds Podcast: The current progress of the playback queue in seconds Audiobook: The current progress of the playback queue (e.g. the book) in seconds|
|`queuePlaybackDuration`|Integer|False|Music: The total duration of the playback queue in seconds Podcast: The total duration of the playback queue in seconds Audiobook: The total duration of the playback queue (e.g. the book) in seconds|
|`queueCurrentTrackNumber`|Integer|False|Music: The current number (1 based) of the track in the playback queue Podcast: The current number (1 based) of the episode in the playback queue Audiobook: The current number (1 based) of the episode in the playback queue (e.g. the chapter number in the book)|
|`queueTotalTrackCount`|Integer|False|Music: The total number of tracks in the playback queue Podcast: The total number of episodes in the playback queue Audiobook: The total number of sections in the playback queue (e.g. the number of chapters in the book)|
|`mediaImage`|Image|False|Music: The album art of the current track Podcast: The podcast or chapter artwork of the current podcast episode Audiobook: The book or chapter artwork of the current audiobook|### WeatherServiceManifest
##### Parameters| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`currentForecastSupported`|Boolean|False||
|`maxMultidayForecastAmount`|Integer|False||
|`maxHourlyForecastAmount`|Integer|False||
|`maxMinutelyForecastAmount`|Integer|False||
|`weatherForLocationSupported`|Boolean|False||### WeatherAlert
##### Parameters| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`title`|String|False||
|`summary`|String|False||
|`expires`|DateTime|False||
|`regions`|String[]|False||
|`severity`|String|False||
|`timeIssued`|DateTime|False||### WeatherData
##### Parameters| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`currentTemperature`|Temperature|False|The central temperature depending on the context of the weather data. It could be the present temperature, the temperature of a future minute, the temperature of a future hour, or an average temperature of a future day, for example.|
|`temperatureHigh`|Temperature|False||
|`temperatureLow`|Temperature|False||
|`apparentTemperature`|Temperature|False||
|`apparentTemperatureHigh`|Temperature|False||
|`apparentTemperatureLow`|Temperature|False||
|`weatherSummary`|String|False||
|`time`|DateTime|False||
|`humidity`|Float|False|0 to 1, percentage humidity|
|`cloudCover`|Float|False|0 to 1, percentage cloud cover|
|`moonPhase`|Float|False|0 to 1, percentage of the moon seen, e.g. 0 = no moon, 0.25 = quarter moon|
|`windBearing`|Integer|False|In degrees, true north at 0 degrees|
|`windGust`|Float|False|km/hr|
|`windSpeed`|Float|False|km/hr|
|`nearestStormBearing`|Integer|False|In degrees, true north at 0 degrees|
|`nearestStormDistance`|Integer|False|In km|
|`precipAccumulation`|Float|False|cm|
|`precipIntensity`|Float|False|cm of water per hour|
|`precipProbability`|Float|False|0 to 1, percentage chance|
|`precipType`|String|False|e.g. "rain", "snow", "sleet", "hail"|
|`visibility`|Float|False|In km|
|`weatherIcon`|Image|False||### WeatherServiceData
This data is related to what a weather service would provide##### Parameters
| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`location`|LocationDetails|True||
|`currentForecast`|WeatherData|False||
|`minuteForecast`|WeatherData[]|False||
|`hourlyForecast`|WeatherData[]|False||
|`multidayForecast`|WeatherData[]|False||
|`alerts`|WeatherAlert[]|False|This array should be ordered with the first object being the current day|### NavigationServiceManifest
##### Parameters| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`acceptsWayPoints`|Boolean|False|Informs the subscriber if this service can actually accept way points.|### NavigationInstruction
##### Parameters| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`locationDetails`|LocationDetails|True||
|`action`|NavigationAction|True||
|`eta`|DateTime|False||
|`bearing`|Integer|False|The angle at which this instruction takes place. For example, 0 would mean straight, less than 45 is bearing right, greater than 135 is sharp right, between 45 and 135 is a regular right, and 180 is a U-Turn, etc.|
|`junctionType`|NavigationJunction|False||
|`drivingSide`|Direction|False|Used to infer which side of the road this instruction takes place. For a U-Turn (action=TURN, bearing=180) this will determine which direction the turn should take place.|
|`details`|String|False|This is a string representation of this instruction, used to display instructions to the users. This is not intended to be read aloud to the users, see the param prompt in NavigationServiceData for that.|
|`image`|Image|False|An image representation of this instruction.|### NavigationServiceData
This data is related to what a navigation service would provide.##### Parameters
| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`timeStamp`|DateTime|True|This is the timestamp of when the data was generated. This is to ensure any time or distance given in the data can accurately be adjusted if necessary.|
|`origin`|LocationDetails|False||
|`destination`|LocationDetails|False||
|`destinationETA`|DateTime|False||
|`instructions`|NavigationInstruction[]|False|This array should be ordered with all remaining instructions. The start of this array should always contain the next instruction.|
|`nextInstructionETA`|DateTime|False||
|`nextInstructionDistance`|Float|False|The distance to this instruction from current location. This should only be updated ever .1 unit of distance. For more accuracy the consumer can use the GPS location of itself and the next instruction.|
|`nextInstructionDistanceScale`|Float|False|Distance till next maneuver (starting from) from previous maneuver.|
|`prompt`|String|False|This is a prompt message that should be conveyed to the user through either display or voice (TTS). This param will change often as it should represent the following: approaching instruction, post instruction, alerts that affect the current navigation session, etc.|### AppServiceManifest
This manifest contains all the information necessary for the service to be published, activated, and consumers able to interact with it##### Parameters
| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`serviceName`|String|False|Unique name of this service|
|`serviceType`|String|True|The type of service that is to be offered by this app. See AppServiceType for known enum equivalent types. Parameter is a string to allow for new service types to be used by apps on older versions of SDL Core.|
|`serviceIcon`|Image|False|The icon to be associated with this service. Most likely the same as the appIcon.|
|`allowAppConsumers`|Boolean|False|If true, app service consumers beyond the IVI system will be able to access this service. If false, only the IVI system will be able consume the service. If not provided, it is assumed to be false.|
|`rpcSpecVersion`|SyncMsgVersion|False|This is the max RPC Spec version the app service understands. This is important during the RPC passthrough functionality. If not included, it is assumed the max version of the module is acceptable.|
|`handledRPCs`|Integer[]|False|This field contains the Function IDs for the RPCs that this service intends to handle correctly. This means the service will provide meaningful responses.|
|`mediaServiceManifest`|MediaServiceManifest|False||
|`weatherServiceManifest`|WeatherServiceManifest|False||
|`navigationServiceManifest`|NavigationServiceManifest|False||### AppServiceRecord
This is the record of an app service publisher that the module has. It should contain the most up to date information including the service's active state##### Parameters
| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`serviceID`|String|True|A unique ID tied to this specific service record. The ID is supplied by the module that services publish themselves.|
|`serviceManifest`|AppServiceManifest|True|Manifest for the service that this record is for.|
|`servicePublished`|Boolean|True|If true, the service is published and available. If false, the service has likely just been unpublished, and should be considered unavailable.|
|`serviceActive`|Boolean|True|If true, the service is the active primary service of the supplied service type. It will receive all potential RPCs that are passed through to that service type. If false, it is not the primary service of the supplied type. See servicePublished for its availability.|### AppServiceData
Contains all the current data of the app service. The serviceType will link to which of the service data objects are included in this object (e.g. if the service type is MEDIA, the mediaServiceData param should be included).##### Parameters
| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`serviceType`|String|True|The type of service that is to be offered by this app. See AppServiceType for known enum equivalent types. Parameter is a string to allow for new service types to be used by apps on older versions of SDL Core.|
|`serviceID`|String|True||
|`mediaServiceData`|MediaServiceData|False||
|`weatherServiceData`|WeatherServiceData|False||
|`navigationServiceData`|NavigationServiceData|False||### AppServiceCapability
##### Parameters| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`updateReason`|ServiceUpdateReason|False|Only included in OnSystemCapabilityUpdated. Update reason for service record.|
|`updatedAppServiceRecord`|AppServiceRecord|True|Service record for a specific app service provider|### AppServicesCapabilities
Capabilities of app services including what service types are supported and the current state of services.##### Parameters
| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`appServices`|AppServiceCapability[]|False|An array of currently available services. If this is an update to the capability the affected services will include an update reason in that item|### SystemCapability
The systemCapabilityType identifies which data object exists in this struct. For example, if the SystemCapability Type is NAVIGATION then a "navigationCapability" should exist##### Parameters
| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`systemCapabilityType`|SystemCapabilityType|True|Used as a descriptor of what data to expect in this struct. The corresponding param to this enum should be included and the only other param included.|
|`navigationCapability`|NavigationCapability|False|Describes extended capabilities for onboard navigation system|
|`phoneCapability`|PhoneCapability|False|Describes extended capabilities of the module's phone feature|
|`videoStreamingCapability`|VideoStreamingCapability|False|Contains information about the module's video streaming capabilities|
|`remoteControlCapability`|RemoteControlCapabilities|False|Contains information about the module's remote control feature|
|`appServicesCapabilities`|AppServicesCapabilities|False|An array of currently available services. If this is an update to the capability the affected services will include an update reason in that item|
|`seatLocationCapability`|SeatLocationCapability|False|Contains information about the locations of each seat|
|`displayCapabilities`|DisplayCapability[]|False||
|`driverDistractionCapability`|DriverDistractionCapability|False|Describes capabilities when the driver is distracted|### ClimateData
##### Parameters| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`externalTemperature`|Temperature|False|The external temperature in degrees celsius|
|`cabinTemperature`|Temperature|False|Internal ambient cabin temperature in degrees celsius|
|`atmosphericPressure`|Float|False|Current atmospheric pressure in mBar|### GearStatus
##### Parameters| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`userSelectedGear`|PRNDL|False|Gear position selected by the user i.e. Park, Drive, Reverse|
|`actualGear`|PRNDL|False|Actual Gear in use by the transmission|
|`transmissionType`|TransmissionType|False|Tells the transmission type|### SeatStatus
Describes the status of a parameter of seat.##### Parameters
| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`seatLocation`|SeatLocation|True||
|`conditionActive`|Boolean|True||### SeatOccupancy
##### Parameters| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`seatsOccupied`|SeatStatus[]|False|Seat status array containing location and whether the seats are occupied.|
|`seatsBelted`|SeatStatus[]|False|Seat status array containing location and whether the seats are belted.|### SeekStreamingIndicator
The seek next / skip previous subscription buttons' content##### Parameters
| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`type`|SeekIndicatorType|True||
|`seekTime`|Integer|False|If the type is TIME, this number of seconds may be present alongside the skip indicator. It will indicate the number of seconds that the currently playing media will skip forward or backward.|### AppCapability
##### Parameters| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`appCapabilityType`|AppCapabilityType|True|Used as a descriptor of what data to expect in this struct. The corresponding param to this enum should be included and the only other param included.|
|`videoStreamingCapability`|VideoStreamingCapability|False|Describes supported capabilities for video streaming|## Remote Procedure Calls
### RegisterAppInterface
Message Type: **request**Establishes an interface with a mobile application. Before registerAppInterface no other commands will be accepted/executed.
##### Parameters
| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`syncMsgVersion`|SyncMsgVersion|True|See SyncMsgVersion|
|`appName`|String|True|The mobile application name, e.g. "My SDL App". Needs to be unique over all applications from the same device. May not be empty. May not start with a new line character. May not interfere with any name or synonym of previously registered applications from the same device and any predefined blacklist of words (global commands) Additional applications with the same name from the same device will be rejected. Only characters from char set [@TODO: Create char set (character/hex value) for each ACM and refer to] are supported.|
|`ttsName`|TTSChunk[]|False|TTS string for VR recognition of the mobile application name, e.g. "My S D L App". Meant to overcome any failing on speech engine in properly pronouncing / understanding app name. Needs to be unique over all applications from the same device. May not be empty. May not start with a new line character. Only characters from char set [@TODO: Create char set (character/hex value) for each ACM and refer to] are supported.|
|`ngnMediaScreenAppName`|String|False|Provides an abbreviated version of the app name (if needed), that will be displayed on the NGN media screen. If not provided, the appName is used instead (and will be truncated if too long) Only characters from char set [@TODO: Create char set (character/hex value) for each ACM and refer to] are supported.|
|`vrSynonyms`|String[]|False|Defines an additional voice recognition command. May not interfere with any app name of previously registered applications from the same device and any predefined blacklist of words (global commands) Only characters from char set [@TODO: Create char set (character/hex value) for each ACM and refer to] are supported.|
|`isMediaApplication`|Boolean|True|Indicates if the application is a media or a non-media application. Only media applications will be able to stream audio to the module that is audible outside of the BT media source.|
|`languageDesired`|Language|True|See Language Current app's expected VR+TTS language If there is a mismatch with the module, the app will be able to change this registration with changeRegistration prior to app being brought into focus.|
|`hmiDisplayLanguageDesired`|Language|True|See Language Current app's expected display language If there is a mismatch with the module, the app will be able to change this registration with changeRegistration prior to app being brought into focus.|
|`appHMIType`|AppHMIType[]|False|See AppHMIType List of all applicable app HMI types stating which HMI classifications to be given to the app.|
|`hashID`|String|False|ID used to uniquely identify current state of all app data that can persist through connection cycles (e.g. ignition cycles). This registered data (commands, submenus, choice sets, etc.) can be reestablished without needing to explicitly reregister each piece. If omitted, then the previous state of an app's commands, etc. will not be restored. When sending hashID, all RegisterAppInterface parameters should still be provided (e.g. ttsName, etc.).|
|`deviceInfo`|DeviceInfo|False|See DeviceInfo.|
|`appID`|String|True|ID used to validate app with policy table entries|
|`fullAppID`|String|False|ID used to validate app with policy table entries|
|`appInfo`|AppInfo|False|See AppInfo.|
|`dayColorScheme`|TemplateColorScheme|False||
|`nightColorScheme`|TemplateColorScheme|False||### RegisterAppInterface
Message Type: **response**The response to registerAppInterface
##### Parameters
| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`success`|Boolean|True|true if successful; false, if failed|
|`resultCode`|Result|True|See Result|
|`info`|String|False|Provides additional human readable info regarding the result.|
|`syncMsgVersion`|SyncMsgVersion|False|See SyncMsgVersion|
|`language`|Language|False|The currently active VR+TTS language on the module. See "Language" for options.|
|`hmiDisplayLanguage`|Language|False|The currently active display language on the module. See "Language" for options.|
|`displayCapabilities`|DisplayCapabilities|False|See DisplayCapabilities. This parameter is deprecated and replaced by SystemCapability using DISPLAYS.|
|`buttonCapabilities`|ButtonCapabilities[]|False|See ButtonCapabilities. This parameter is deprecated and replaced by SystemCapability using DISPLAYS.|
|`softButtonCapabilities`|SoftButtonCapabilities[]|False|If returned, the platform supports on-screen SoftButtons; see SoftButtonCapabilities. This parameter is deprecated and replaced by SystemCapability using DISPLAYS.|
|`presetBankCapabilities`|PresetBankCapabilities|False|If returned, the platform supports custom on-screen Presets; see PresetBankCapabilities. This parameter is deprecated and replaced by SystemCapability using DISPLAYS.|
|`hmiZoneCapabilities`|HmiZoneCapabilities[]|False|See HmiZoneCapabilities|
|`speechCapabilities`|SpeechCapabilities[]|False|See SpeechCapabilities|
|`prerecordedSpeech`|PrerecordedSpeech[]|False|See PrerecordedSpeech|
|`vrCapabilities`|VrCapabilities[]|False|See VrCapabilities|
|`audioPassThruCapabilities`|AudioPassThruCapabilities[]|False|See AudioPassThruCapability|
|`pcmStreamCapabilities`|AudioPassThruCapabilities|False|See AudioPassThruCapability|
|`vehicleType`|VehicleType|False|Specifies the vehicle's type. See VehicleType.|
|`supportedDiagModes`|Integer[]|False|Specifies the white-list of supported diagnostic modes (0x00-0xFF) capable for DiagnosticMessage requests. If a mode outside this list is requested, it will be rejected.|
|`hmiCapabilities`|HMICapabilities|False|Specifies the HMI's capabilities. See HMICapabilities.|
|`sdlVersion`|String|False|The SmartDeviceLink version.|
|`systemSoftwareVersion`|String|False|The software version of the system that implements the SmartDeviceLink core.|
|`iconResumed`|Boolean|False|Existence of apps icon at system. If true, apps icon was resumed at system. If false, apps icon is not resumed at system|### UnregisterAppInterface
Message Type: **request**Closes an interface from a mobile application. After unregisterAppInterface, no commands other than registerAppInterface will be accepted/executed. Will fail, if no registerAppInterface was completed successfully before.
### UnregisterAppInterface
Message Type: **response**##### Parameters
| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`success`|Boolean|True|true if successful; false, if failed|
|`resultCode`|Result|True|See Result|
|`info`|String|False|Provides additional human readable info regarding the result.|### CreateWindow
Message Type: **request**Create a new window on the display with the specified window type.
##### Parameters
| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`windowID`|Integer|True|A unique ID to identify the window. The value of '0' will always be the default main window on the main display and should not be used in this context as it will already be created for the app. See PredefinedWindows enum. Creating a window with an ID that is already in use will be rejected with `INVALID_ID`.|
|`windowName`|String|True|The window name to be used by the HMI. The name of the pre-created default window will match the app name. Multiple apps can share the same window name except for the default main window. Creating a window with a name which is already in use by the app will result in `DUPLICATE_NAME`.|
|`type`|WindowType|True|The type of the window to be created. Main window or widget.|
|`associatedServiceType`|String|False|Allows an app to create a widget related to a specific service type. As an example if a `MEDIA` app becomes active, this app becomes audible and is allowed to play audio. Actions such as skip or play/pause will be directed to this active media app. In case of widgets, the system can provide a single "media" widget which will act as a placeholder for the active media app. It is only allowed to have one window per service type. This means that a media app can only have a single MEDIA widget. Still the app can create widgets omitting this parameter. Those widgets would be available as app specific widgets that are permanently included in the HMI. This parameter is related to widgets only. The default main window, which is pre-created during app registration, will be created based on the HMI types specified in the app registration request.|
|`duplicateUpdatesFromWindowID`|Integer|False|Optional parameter. Specify whether the content sent to an existing window should be duplicated to the created window. If there isn't a window with the ID, the request will be rejected with `INVALID_DATA`.|### CreateWindow
Message Type: **response**##### Parameters
| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`success`|Boolean|True|true if successful; false, if failed.|
|`info`|String|False|Provides additional human readable info regarding the result.|
|`resultCode`|Result|True|See Result|### DeleteWindow
Message Type: **request**Deletes previously created window of the SDL application.
##### Parameters
| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`windowID`|Integer|True|A unique ID to identify the window. The value of '0' will always be the default main window on the main display and cannot be deleted. See PredefinedWindows enum.|### DeleteWindow
Message Type: **response**##### Parameters
| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`success`|Boolean|True|true if successful; false, if failed.|
|`info`|String|False|Provides additional human readable info regarding the result.|
|`resultCode`|Result|True|See Result|### SetGlobalProperties
Message Type: **request**Allows setting global properties.
##### Parameters
| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`userLocation`|SeatLocation|False|Location of the user's seat. Default is driver's seat location if it is not set yet.|
|`helpPrompt`|TTSChunk[]|False|The help prompt. An array of text chunks of type TTSChunk. See TTSChunk. The array must have at least one item.|
|`timeoutPrompt`|TTSChunk[]|False|Help text for a wait timeout. An array of text chunks of type TTSChunk. See TTSChunk. The array must have at least one item.|
|`vrHelpTitle`|String|False|VR Help Title text. If omitted on supported displays, the default module help title shall be used. If omitted and one or more vrHelp items are provided, the request will be rejected.|
|`vrHelp`|VrHelpItem[]|False|VR Help Items. If omitted on supported displays, the default SmartDeviceLink VR help / What Can I Say? screen shall be used. If the list of VR Help Items contains nonsequential positions (e.g. [1,2,4]), the RPC shall be rejected. If omitted and a vrHelpTitle is provided, the request will be rejected.|
|`menuTitle`|String|False|Optional text to label an app menu button (for certain touchscreen platforms).|
|`menuIcon`|Image|False|Optional icon to draw on an app menu button (for certain touchscreen platforms).|
|`keyboardProperties`|KeyboardProperties|False|On-screen keyboard configuration (if available).|
|`menuLayout`|MenuLayout|False|Sets the layout of the main menu screen. If this is sent while a menu is already on-screen, the head unit will change the display to the new layout type.|### SetGlobalProperties
Message Type: **response**##### Parameters
| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`success`|Boolean|True|true if successful; false, if failed|
|`resultCode`|Result|True|See Result|
|`info`|String|False|Provides additional human readable info regarding the result.|### ResetGlobalProperties
Message Type: **request**Allows resetting global properties.
##### Parameters
| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`properties`|GlobalProperty[]|True|Contains the names of all global properties (like timeoutPrompt) that should be unset. Resetting means, that they have the same value as at start up (default)|### ResetGlobalProperties
Message Type: **response**##### Parameters
| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`success`|Boolean|True|true if successful; false, if failed|
|`resultCode`|Result|True|See Result|
|`info`|String|False|Provides additional human readable info regarding the result.|### AddCommand
Message Type: **request**Adds a command to the in application menu. Either menuParams or vrCommands must be provided.
##### Parameters
| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`cmdID`|Integer|True|unique ID of the command to add.|
|`menuParams`|MenuParams|False|Optional sub value containing menu parameters|
|`vrCommands`|String[]|False|An array of strings to be used as VR synonyms for this command. If this array is provided, it may not be empty.|
|`cmdIcon`|Image|False|Image struct determining whether static or dynamic icon. If omitted on supported displays, no (or the default if applicable) icon shall be displayed.|
|`secondaryImage`|Image|False|Optional secondary image struct for menu cell|### AddCommand
Message Type: **response**##### Parameters
| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`success`|Boolean|True|true if successful; false, if failed|
|`resultCode`|Result|True|See Result|
|`info`|String|False|Provides additional human readable info regarding the result.|### DeleteCommand
Message Type: **request**Deletes all commands from the in-application menu with the specified command id.
##### Parameters
| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`cmdID`|Integer|True|ID of the command(s) to delete.|### DeleteCommand
Message Type: **response**##### Parameters
| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`success`|Boolean|True|true if successful; false, if failed|
|`resultCode`|Result|True|See Result|
|`info`|String|False|Provides additional human readable info regarding the result.|### AddSubMenu
Message Type: **request**Adds a sub menu to the in-application menu.
##### Parameters
| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`menuID`|Integer|True|unique ID of the sub menu to add.|
|`position`|Integer|False|Position within the items that are at top level of the in application menu. 0 will insert at the front. 1 will insert at the second position. If position is greater or equal than the number of items on top level, the sub menu will be appended to the end. Position of any submenu will always be located before the return and exit options If this param was omitted the entry will be added at the end.|
|`menuName`|String|True|Text to show in the menu for this sub menu.|
|`menuIcon`|Image|False|The image field for AddSubMenu|
|`menuLayout`|MenuLayout|False|Sets the layout of the submenu screen.|
|`parentID`|Integer|False|unique ID of the sub menu, the command will be added to. If not provided or 0, it will be provided to the top level of the in application menu.|
|`secondaryText`|String|False|Optional secondary text to display|
|`tertiaryText`|String|False|Optional tertiary text to display|
|`secondaryImage`|Image|False|Optional secondary image struct for sub-menu cell|### AddSubMenu
Message Type: **response**##### Parameters
| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`success`|Boolean|True|true if successful; false, if failed|
|`resultCode`|Result|True|See Result|
|`info`|String|False|Provides additional human readable info regarding the result.|### DeleteSubMenu
Message Type: **request**Deletes a submenu from the in-application menu.
##### Parameters
| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`menuID`|Integer|True|The "menuID" of the submenu to delete. (See addSubMenu.menuID)|### DeleteSubMenu
Message Type: **response**##### Parameters
| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`success`|Boolean|True|true if successful; false, if failed|
|`resultCode`|Result|True|See Result|
|`info`|String|False|Provides additional human readable info regarding the result.|### ShowAppMenu
Message Type: **request**Shows the built in menu view
##### Parameters
| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`menuID`|Integer|False|If omitted the HMI opens the app's menu. If set to a sub-menu ID the HMI opens the corresponding sub-menu previously added using `AddSubMenu`.|### ShowAppMenu
Message Type: **response**##### Parameters
| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`success`|Boolean|True|true if successful; false, if failed|
|`resultCode`|Result|True|See Result|
|`info`|String|False|Provides additional human readable info regarding the result.|### CreateInteractionChoiceSet
Message Type: **request**creates interaction choice set to be used later by performInteraction
##### Parameters
| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`interactionChoiceSetID`|Integer|True|Unique ID used for this interaction choice set.|
|`choiceSet`|Choice[]|True||### CreateInteractionChoiceSet
Message Type: **response**##### Parameters
| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`success`|Boolean|True|true if successful; false, if failed|
|`resultCode`|Result|True|See Result|
|`info`|String|False|Provides additional human readable info regarding the result.|### PerformInteraction
Message Type: **request**Triggers an interaction (e.g. "Permit GPS?" - Yes, no, Always Allow).
##### Parameters
| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`initialText`|String|True|Text to be displayed first.|
|`initialPrompt`|TTSChunk[]|False|This is the initial prompt spoken to the user at the start of an interaction. An array of text chunks of type TTSChunk. See TTSChunk. The array must have at least one item.|
|`interactionMode`|InteractionMode|True|See InteractionMode.|
|`interactionChoiceSetIDList`|Integer[]|True|List of interaction choice set IDs to use with an interaction.|
|`helpPrompt`|TTSChunk[]|False|Help text. This is the spoken string when a user speaks "help" when the interaction is occurring. An array of text chunks of type TTSChunk. See TTSChunk. The array must have at least one item.|
|`timeoutPrompt`|TTSChunk[]|False|Timeout text. This text is spoken when a VR interaction times out. An array of text chunks of type TTSChunk. See TTSChunk. The array must have at least one item.|
|`timeout`|Integer|False|Timeout in milliseconds. If omitted a standard value of 10000 milliseconds is used. Applies only to the menu portion of the interaction. The VR timeout will be handled by the platform.|
|`vrHelp`|VrHelpItem[]|False|Ability to send suggested VR Help Items to display on-screen during Perform Interaction. If omitted on supported displays, the default generated list of suggested choices shall be displayed.|
|`interactionLayout`|LayoutMode|False|See LayoutMode.|
|`cancelID`|Integer|False|An ID for this specific PerformInteraction to allow cancellation through the `CancelInteraction` RPC.|### PerformInteraction
Message Type: **response**##### Parameters
| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`success`|Boolean|True|true if successful; false, if failed|
|`resultCode`|Result|True|See Result|
|`info`|String|False|Provides additional human readable info regarding the result.|
|`choiceID`|Integer|False|ID of the choice that was selected in response to PerformInteraction. Only is valid if general result is "success:true".|
|`manualTextEntry`|String|False|Manually entered text selection, e.g. through keyboard Can be returned in lieu of choiceID, depending on trigger source|
|`triggerSource`|TriggerSource|False|See TriggerSource Only is valid if resultCode is SUCCESS.|### DeleteInteractionChoiceSet
Message Type: **request**Deletes interaction choice set that has been created with "CreateInteractionChoiceSet". The interaction may only be deleted when not currently in use by a "performInteraction".
##### Parameters
| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`interactionChoiceSetID`|Integer|True|ID of the interaction choice set to delete.|### DeleteInteractionChoiceSet
Message Type: **response**##### Parameters
| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`success`|Boolean|True|true if successful; false, if failed|
|`resultCode`|Result|True|See Result|
|`info`|String|False|Provides additional human readable info regarding the result.|### Alert
Message Type: **request**Shows an alert which typically consists of text-to-speech message and text on the display. At least either alertText1, alertText2 or TTSChunks need to be provided.
##### Parameters
| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`alertText1`|String|False|The first line of the alert text field|
|`alertText2`|String|False|The second line of the alert text field|
|`alertText3`|String|False|The optional third line of the alert text field|
|`ttsChunks`|TTSChunk[]|False|An array of text chunks of type TTSChunk. See TTSChunk. The array must have at least one item.|
|`duration`|Integer|False|Timeout in milliseconds. Typical timeouts are 3-5 seconds. If omitted, timeout is set to 5s.|
|`playTone`|Boolean|False|Defines if tone should be played. Tone is played before TTS. If omitted or provided without ttsChunks, no tone is played.|
|`progressIndicator`|Boolean|False|If supported on the given platform, the alert GUI will include some sort of animation indicating that loading of a feature is progressing. e.g. a spinning wheel or hourglass, etc.|
|`softButtons`|SoftButton[]|False|App defined SoftButtons. If omitted on supported displays, the displayed alert shall not have any SoftButtons.|
|`alertIcon`|Image|False|Image struct determining whether static or dynamic icon. If omitted on supported displays, no (or the default if applicable) icon should be displayed.|
|`cancelID`|Integer|False|An ID for this specific alert to allow cancellation through the `CancelInteraction` RPC.|### Alert
Message Type: **response**##### Parameters
| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`success`|Boolean|True|true if successful; false, if failed|
|`resultCode`|Result|True|See Result|
|`info`|String|False|Provides additional human readable info regarding the result.|
|`tryAgainTime`|Integer|False|Amount of time (in seconds) that an app must wait before resending an alert. If provided, another system event or overlay currently has a higher priority than this alert. An app must not send an alert without waiting at least the amount of time dictated.|### SubtleAlert
Message Type: **request**Shows an alert which typically consists of text-to-speech message and text on the display. At least either alertText1, alertText2 or ttsChunks need to be provided.
##### Parameters
| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`alertText1`|String|False|The first line of the alert text field|
|`alertText2`|String|False|The second line of the alert text field|
|`alertIcon`|Image|False|Image to be displayed for the corresponding alert. See Image. If omitted on supported displays, no (or the default if applicable) icon should be displayed.|
|`ttsChunks`|TTSChunk[]|False|An array of text chunks of type TTSChunk. See TTSChunk. The array must have at least one item.|
|`duration`|Integer|False|Timeout in milliseconds. Typical timeouts are 3-5 seconds. If omitted, timeout is set to 5s.|
|`softButtons`|SoftButton[]|False|App defined SoftButtons. If omitted on supported displays, the displayed alert shall not have any SoftButtons.|
|`cancelID`|Integer|False|An ID for this specific alert to allow cancellation through the `CancelInteraction` RPC.|### SubtleAlert
Message Type: **response**##### Parameters
| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`success`|Boolean|True|true if successful; false, if failed|
|`resultCode`|Result|True|See Result|
|`info`|String|False|Provides additional human readable info regarding the result.|
|`tryAgainTime`|Integer|False|Amount of time (in milliseconds) that an app must wait before resending an alert. If provided, another system event or overlay currently has a higher priority than this alert. An app must not send an alert without waiting at least the amount of time dictated.|### OnSubtleAlertPressed
Message Type: **notification**Sent when the alert itself is touched (outside of a soft button). Touching (or otherwise selecting) the alert should open the app before sending this notification.
### Show
Message Type: **request**Updates the persistent display. Supported fields depend on display capabilities.
##### Parameters
| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`mainField1`|String|False|The text that should be displayed in a single or upper display line. If this text is not set, the text of mainField1 stays unchanged. If this text is empty "", the field will be cleared.|
|`mainField2`|String|False|The text that should be displayed on the second display line. If this text is not set, the text of mainField2 stays unchanged. If this text is empty "", the field will be cleared.|
|`mainField3`|String|False|The text that should be displayed on the second "page" first display line. If this text is not set, the text of mainField3 stays unchanged. If this text is empty "", the field will be cleared.|
|`mainField4`|String|False|The text that should be displayed on the second "page" second display line. If this text is not set, the text of mainField4 stays unchanged. If this text is empty "", the field will be cleared.|
|`alignment`|TextAlignment|False|Specifies how mainField1 and mainField2 texts should be aligned on display. If omitted, texts will be centered.|
|`statusBar`|String|False|Requires investigation regarding the nav display capabilities. Potentially lower lowerStatusBar, upperStatusBar, titleBar, etc.|
|`mediaClock`|String|False|Text value for MediaClock field. Has to be properly formatted by Mobile App according to the module's capabilities. If this text is set, any automatic media clock updates previously set with SetMediaClockTimer will be stopped.|
|`mediaTrack`|String|False|The text that should be displayed in the track field. If this text is not set, the text of mediaTrack stays unchanged. If this text is empty "", the field will be cleared.|
|`graphic`|Image|False|Image struct determining whether static or dynamic image to display in app. If omitted on supported displays, the displayed graphic shall not change.|
|`secondaryGraphic`|Image|False|Image struct determining whether static or dynamic secondary image to display in app. If omitted on supported displays, the displayed secondary graphic shall not change.|
|`softButtons`|SoftButton[]|False|App defined SoftButtons. If omitted on supported displays, the currently displayed SoftButton values will not change.|
|`customPresets`|String[]|False|App labeled on-screen presets (i.e. on-screen media presets or dynamic search suggestions). If omitted on supported displays, the presets will be shown as not defined.|
|`metadataTags`|MetadataTags|False|App defined metadata information. See MetadataStruct. Uses mainField1, mainField2, mainField3, mainField4. If omitted on supported displays, the currently set metadata tags will not change. If any text field contains no tags or the none tag, the metadata tag for that textfield should be removed.|
|`templateTitle`|String|False|The title of the new template that will be displayed. How this will be displayed is dependent on the OEM design and implementation of the template.|
|`windowID`|Integer|False|This is the unique ID assigned to the window that this RPC is intended. If this param is not included, it will be assumed that this request is specifically for the main window on the main display. See PredefinedWindows enum.|
|`templateConfiguration`|TemplateConfiguration|False|Used to set an alternate template layout to a window.|### Show
Message Type: **response**##### Parameters
| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`success`|Boolean|True|true if successful; false, if failed|
|`resultCode`|Result|True|See Result|
|`info`|String|False|Provides additional human readable info regarding the result.|### Speak
Message Type: **request**Speaks a text.
##### Parameters
| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`ttsChunks`|TTSChunk[]|True|An array of text chunks of type TTSChunk. See TTSChunk. The array must have at least one item.|### Speak
Message Type: **response**##### Parameters
| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`success`|Boolean|True|true if successful; false, if failed|
|`resultCode`|Result|True|See Result|
|`info`|String|False|Provides additional human readable info regarding the result.|### SetMediaClockTimer
Message Type: **request**Sets the initial media clock value and automatic update method.
##### Parameters
| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`startTime`|StartTime|False|See StartTime. startTime must be provided for "COUNTUP" and "COUNTDOWN". startTime will be ignored for "RESUME", and "CLEAR" startTime can be sent for "PAUSE", in which case it will update the paused startTime|
|`endTime`|StartTime|False|See StartTime. endTime can be provided for "COUNTUP" and "COUNTDOWN"; to be used to calculate any visual progress bar (if not provided, this feature is ignored) If endTime is greater than startTime for COUNTDOWN or less than startTime for COUNTUP, then the request will return an INVALID_DATA. endTime will be ignored for "RESUME", and "CLEAR" endTime can be sent for "PAUSE", in which case it will update the paused endTime|
|`updateMode`|UpdateMode|True|Enumeration to control the media clock. In case of pause, resume, or clear, the start time value is ignored and shall be left out. For resume, the time continues with the same value as it was when paused.|
|`audioStreamingIndicator`|AudioStreamingIndicator|False|Enumeration for the indicator icon on a play/pause button. see AudioStreamingIndicator.|
|`forwardSeekIndicator`|SeekStreamingIndicator|False|Used to control the forward seek button to either skip forward a set amount of time or to the next track.|
|`backSeekIndicator`|SeekStreamingIndicator|False|Used to control the back seek button to either skip back a set amount of time or to the previous track.|
|`countRate`|Float|False|The value of this parameter is the amount that the media clock timer will advance per 1.0 seconds of real time. Values less than 1.0 will therefore advance the timer slower than real-time, while values greater than 1.0 will advance the timer faster than real-time. e.g. If this parameter is set to `0.5`, the timer will advance one second per two seconds real-time, or at 50% speed. If this parameter is set to `2.0`, the timer will advance two seconds per one second real-time, or at 200% speed.|### SetMediaClockTimer
Message Type: **response**##### Parameters
| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`success`|Boolean|True|true if successful; false, if failed|
|`resultCode`|Result|True|See Result|
|`info`|String|False|Provides additional human readable info regarding the result.|### PerformAudioPassThru
Message Type: **request**Starts audio pass thru session
##### Parameters
| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`initialPrompt`|TTSChunk[]|False|The module will speak this prompt before opening the audio pass thru session. An array of text chunks of type TTSChunk. See TTSChunk. The array must have at least one item. If omitted, then no initial prompt is spoken.|
|`audioPassThruDisplayText1`|String|False|First line of text displayed during audio capture.|
|`audioPassThruDisplayText2`|String|False|Second line of text displayed during audio capture.|
|`samplingRate`|SamplingRate|True|This value shall be allowed at 8 kHz or 16 or 22 or 44 kHz.|
|`maxDuration`|Integer|True|The maximum duration of audio recording in milliseconds.|
|`bitsPerSample`|BitsPerSample|True|Specifies the quality the audio is recorded. Currently 8 bit or 16 bit.|
|`audioType`|AudioType|True|Specifies the type of audio data being requested.|
|`muteAudio`|Boolean|False|Defines if the current audio source should be muted during the APT session. If not, the audio source will play without interruption. If omitted, the value is set to true.|### PerformAudioPassThru
Message Type: **response**##### Parameters
| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`success`|Boolean|True|true if successful; false, if failed|
|`resultCode`|Result|True|See Result|
|`info`|String|False|Provides additional human readable info regarding the result.|### EndAudioPassThru
Message Type: **request**When this request is invoked, the audio capture stops.
### EndAudioPassThru
Message Type: **response**##### Parameters
| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`success`|Boolean|True|true if successful; false, if failed|
|`resultCode`|Result|True|See Result|
|`info`|String|False|Provides additional human readable info regarding the result.|### SubscribeButton
Message Type: **request**Subscribes to built-in HMI buttons. The application will be notified by the OnButtonEvent and OnButtonPress. To unsubscribe the notifications, use unsubscribeButton.
##### Parameters
| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`buttonName`|ButtonName|True|Name of the button to subscribe.|### SubscribeButton
Message Type: **response**##### Parameters
| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`success`|Boolean|True|true if successful; false, if failed|
|`resultCode`|Result|True|See Result|
|`info`|String|False|Provides additional human readable info regarding the result.|### UnsubscribeButton
Message Type: **request**Unsubscribes from built-in HMI buttons.
##### Parameters
| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`buttonName`|ButtonName|True|Name of the button to unsubscribe.|### UnsubscribeButton
Message Type: **response**##### Parameters
| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`success`|Boolean|True|true if successful; false, if failed|
|`resultCode`|Result|True|See Result|
|`info`|String|False|Provides additional human readable info regarding the result.|### SubscribeVehicleData
Message Type: **request**Subscribes for specific published data items. The data will be only sent if it has changed. The application will be notified by the onVehicleData notification whenever new data is available. To unsubscribe the notifications, use unsubscribe with the same subscriptionType.
##### Parameters
| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`gps`|Boolean|False|See GPSData|
|`speed`|Boolean|False|The vehicle speed in kilometers per hour|
|`rpm`|Boolean|False|The number of revolutions per minute of the engine|
|`fuelLevel`|Boolean|False|The fuel level in the tank (percentage). This parameter is deprecated starting RPC Spec 7.0, please see fuelRange.|
|`fuelLevel_State`|Boolean|False|The fuel level state. This parameter is deprecated starting RPC Spec 7.0, please see fuelRange.|
|`instantFuelConsumption`|Boolean|False|The instantaneous fuel consumption in microlitres|
|`fuelRange`|Boolean|False|The fuel type, estimated range in KM, fuel level/capacity and fuel level state for the vehicle. See struct FuelRange for details.|
|`climateData`|Boolean|False|See ClimateData|
|`externalTemperature`|Boolean|False|The external temperature in degrees celsius. This parameter is deprecated starting RPC Spec 7.1, please see climateData.|
|`turnSignal`|Boolean|False|See TurnSignal|
|`gearStatus`|Boolean|False|See GearStatus|
|`prndl`|Boolean|False|See PRNDL. This parameter is deprecated and it is now covered in `gearStatus`|
|`tirePressure`|Boolean|False|See TireStatus|
|`odometer`|Boolean|False|Odometer in km|
|`beltStatus`|Boolean|False|The status of the seat belts|
|`bodyInformation`|Boolean|False|The body information including power modes|
|`deviceStatus`|Boolean|False|The device status including signal and battery strength|
|`driverBraking`|Boolean|False|The status of the brake pedal|
|`wiperStatus`|Boolean|False|The status of the wipers|
|`headLampStatus`|Boolean|False|Status of the head lamps|
|`engineTorque`|Boolean|False|Torque value for engine (in Nm) on non-diesel variants|
|`accPedalPosition`|Boolean|False|Accelerator pedal position (percentage depressed)|
|`steeringWheelAngle`|Boolean|False|Current angle of the steering wheel (in deg)|
|`engineOilLife`|Boolean|False|The estimated percentage of remaining oil life of the engine.|
|`electronicParkBrakeStatus`|Boolean|False|The status of the park brake as provided by Electric Park Brake (EPB) system.|
|`cloudAppVehicleID`|Boolean|False|Parameter used by cloud apps to identify a head unit|
|`stabilityControlsStatus`|Boolean|False|See StabilityControlsStatus|
|`eCallInfo`|Boolean|False|Emergency Call notification and confirmation data|
|`airbagStatus`|Boolean|False|The status of the air bags|
|`emergencyEvent`|Boolean|False|Information related to an emergency event (and if it occurred)|
|`clusterModeStatus`|Boolean|False|The status modes of the cluster|
|`myKey`|Boolean|False|Information related to the MyKey feature|
|`windowStatus`|Boolean|False|See WindowStatus|
|`handsOffSteering`|Boolean|False|To indicate whether driver hands are off the steering wheel|
|`seatOccupancy`|Boolean|False|See SeatOccupancy|### SubscribeVehicleData
Message Type: **response**##### Parameters
| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`success`|Boolean|True|true, if successful; false, if failed|
|`resultCode`|Result|True|See Result|
|`info`|String|False|Provides additional human readable info regarding the result.|
|`gps`|VehicleDataResult|False|See GPSData|
|`speed`|VehicleDataResult|False|The vehicle speed in kilometers per hour|
|`rpm`|VehicleDataResult|False|The number of revolutions per minute of the engine|
|`fuelLevel`|VehicleDataResult|False|The fuel level in the tank (percentage). This parameter is deprecated starting RPC Spec 7.0, please see fuelRange.|
|`fuelLevel_State`|VehicleDataResult|False|The fuel level state. This parameter is deprecated starting RPC Spec 7.0, please see fuelRange.|
|`instantFuelConsumption`|VehicleDataResult|False|The instantaneous fuel consumption in microlitres|
|`fuelRange`|VehicleDataResult|False|The fuel type, estimated range in KM, fuel level/capacity and fuel level state for the vehicle. See struct FuelRange for details.|
|`climateData`|VehicleDataResult|False|See ClimateData|
|`externalTemperature`|VehicleDataResult|False|The external temperature in degrees celsius. This parameter is deprecated starting RPC Spec 7.1, please see climateData.|
|`turnSignal`|VehicleDataResult|False|See TurnSignal|
|`gearStatus`|VehicleDataResult|False|See GearStatus|
|`prndl`|VehicleDataResult|False|See PRNDL. This parameter is deprecated and it is now covered in `gearStatus`|
|`tirePressure`|VehicleDataResult|False|See TireStatus|
|`odometer`|VehicleDataResult|False|Odometer in km|
|`beltStatus`|VehicleDataResult|False|The status of the seat belts|
|`bodyInformation`|VehicleDataResult|False|The body information including power modes|
|`deviceStatus`|VehicleDataResult|False|The device status including signal and battery strength|
|`driverBraking`|VehicleDataResult|False|The status of the brake pedal|
|`wiperStatus`|VehicleDataResult|False|The status of the wipers|
|`headLampStatus`|VehicleDataResult|False|Status of the head lamps|
|`engineTorque`|VehicleDataResult|False|Torque value for engine (in Nm) on non-diesel variants|
|`accPedalPosition`|VehicleDataResult|False|Accelerator pedal position (percentage depressed)|
|`steeringWheelAngle`|VehicleDataResult|False|Current angle of the steering wheel (in deg)|
|`engineOilLife`|VehicleDataResult|False|The estimated percentage of remaining oil life of the engine.|
|`electronicParkBrakeStatus`|VehicleDataResult|False|The status of the park brake as provided by Electric Park Brake (EPB) system.|
|`cloudAppVehicleID`|VehicleDataResult|False|Parameter used by cloud apps to identify a head unit|
|`stabilityControlsStatus`|VehicleDataResult|False|See StabilityControlsStatus|
|`eCallInfo`|VehicleDataResult|False|Emergency Call notification and confirmation data|
|`airbagStatus`|VehicleDataResult|False|The status of the air bags|
|`emergencyEvent`|VehicleDataResult|False|Information related to an emergency event (and if it occurred)|
|`clusterModes`|VehicleDataResult|False|The status modes of the cluster|
|`myKey`|VehicleDataResult|False|Information related to the MyKey feature|
|`windowStatus`|VehicleDataResult|False|See WindowStatus|
|`handsOffSteering`|VehicleDataResult|False|To indicate whether driver hands are off the steering wheel|
|`seatOccupancy`|VehicleDataResult|False|See SeatOccupancy|### UnsubscribeVehicleData
Message Type: **request**This function is used to unsubscribe the notifications from the subscribeVehicleData function.
##### Parameters
| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`gps`|Boolean|False|See GPSData|
|`speed`|Boolean|False|The vehicle speed in kilometers per hour|
|`rpm`|Boolean|False|The number of revolutions per minute of the engine|
|`fuelLevel`|Boolean|False|The fuel level in the tank (percentage). This parameter is deprecated starting RPC Spec 7.0, please see fuelRange.|
|`fuelLevel_State`|Boolean|False|The fuel level state. This parameter is deprecated starting RPC Spec 7.0, please see fuelRange.|
|`instantFuelConsumption`|Boolean|False|The instantaneous fuel consumption in microlitres|
|`fuelRange`|Boolean|False|The fuel type, estimated range in KM, fuel level/capacity and fuel level state for the vehicle. See struct FuelRange for details.|
|`climateData`|Boolean|False|See ClimateData|
|`externalTemperature`|Boolean|False|The external temperature in degrees celsius. This parameter is deprecated starting RPC Spec 7.1, please see climateData.|
|`turnSignal`|Boolean|False|See TurnSignal|
|`gearStatus`|Boolean|False|See GearStatus|
|`prndl`|Boolean|False|See PRNDL. This parameter is deprecated and it is now covered in `gearStatus`|
|`tirePressure`|Boolean|False|See TireStatus|
|`odometer`|Boolean|False|Odometer in km|
|`beltStatus`|Boolean|False|The status of the seat belts|
|`bodyInformation`|Boolean|False|The body information including power modes|
|`deviceStatus`|Boolean|False|The device status including signal and battery strength|
|`driverBraking`|Boolean|False|The status of the brake pedal|
|`wiperStatus`|Boolean|False|The status of the wipers|
|`headLampStatus`|Boolean|False|Status of the head lamps|
|`engineTorque`|Boolean|False|Torque value for engine (in Nm) on non-diesel variants|
|`accPedalPosition`|Boolean|False|Accelerator pedal position (percentage depressed)|
|`steeringWheelAngle`|Boolean|False|Current angle of the steering wheel (in deg)|
|`engineOilLife`|Boolean|False|The estimated percentage of remaining oil life of the engine.|
|`electronicParkBrakeStatus`|Boolean|False|The status of the park brake as provided by Electric Park Brake (EPB) system.|
|`cloudAppVehicleID`|Boolean|False|Parameter used by cloud apps to identify a head unit|
|`stabilityControlsStatus`|Boolean|False|See StabilityControlsStatus|
|`eCallInfo`|Boolean|False|Emergency Call notification and confirmation data|
|`airbagStatus`|Boolean|False|The status of the air bags|
|`emergencyEvent`|Boolean|False|Information related to an emergency event (and if it occurred)|
|`clusterModeStatus`|Boolean|False|The status modes of the cluster|
|`myKey`|Boolean|False|Information related to the MyKey feature|
|`windowStatus`|Boolean|False|See WindowStatus|
|`handsOffSteering`|Boolean|False|To indicate whether driver hands are off the steering wheel|
|`seatOccupancy`|Boolean|False|See SeatOccupancy|### UnsubscribeVehicleData
Message Type: **response**##### Parameters
| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`success`|Boolean|True|true, if successful; false, if failed|
|`resultCode`|Result|True|See Result|
|`info`|String|False|Provides additional human readable info regarding the result.|
|`gps`|VehicleDataResult|False|See GPSData|
|`speed`|VehicleDataResult|False|The vehicle speed in kilometers per hour|
|`rpm`|VehicleDataResult|False|The number of revolutions per minute of the engine|
|`fuelLevel`|VehicleDataResult|False|The fuel level in the tank (percentage). This parameter is deprecated starting RPC Spec 7.0, please see fuelRange.|
|`fuelLevel_State`|VehicleDataResult|False|The fuel level state. This parameter is deprecated starting RPC Spec 7.0, please see fuelRange.|
|`instantFuelConsumption`|VehicleDataResult|False|The instantaneous fuel consumption in microlitres|
|`fuelRange`|VehicleDataResult|False|The fuel type, estimated range in KM, fuel level/capacity and fuel level state for the vehicle. See struct FuelRange for details.|
|`climateData`|VehicleDataResult|False|See ClimateData|
|`externalTemperature`|VehicleDataResult|False|The external temperature in degrees celsius. This parameter is deprecated starting RPC Spec 7.1, please see climateData.|
|`turnSignal`|VehicleDataResult|False|See TurnSignal|
|`gearStatus`|VehicleDataResult|False|See GearStatus|
|`prndl`|VehicleDataResult|False|See PRNDL. This parameter is deprecated and it is now covered in `gearStatus`|
|`tirePressure`|VehicleDataResult|False|See TireStatus|
|`odometer`|VehicleDataResult|False|Odometer in km|
|`beltStatus`|VehicleDataResult|False|The status of the seat belts|
|`bodyInformation`|VehicleDataResult|False|The body information including power modes|
|`deviceStatus`|VehicleDataResult|False|The device status including signal and battery strength|
|`driverBraking`|VehicleDataResult|False|The status of the brake pedal|
|`wiperStatus`|VehicleDataResult|False|The status of the wipers|
|`headLampStatus`|VehicleDataResult|False|Status of the head lamps|
|`engineTorque`|VehicleDataResult|False|Torque value for engine (in Nm) on non-diesel variants|
|`accPedalPosition`|VehicleDataResult|False|Accelerator pedal position (percentage depressed)|
|`steeringWheelAngle`|VehicleDataResult|False|Current angle of the steering wheel (in deg)|
|`engineOilLife`|VehicleDataResult|False|The estimated percentage of remaining oil life of the engine.|
|`electronicParkBrakeStatus`|VehicleDataResult|False|The status of the park brake as provided by Electric Park Brake (EPB) system.|
|`cloudAppVehicleID`|VehicleDataResult|False|Parameter used by cloud apps to identify a head unit|
|`stabilityControlsStatus`|VehicleDataResult|False|See StabilityControlsStatus|
|`eCallInfo`|VehicleDataResult|False|Emergency Call notification and confirmation data|
|`airbagStatus`|VehicleDataResult|False|The status of the air bags|
|`emergencyEvent`|VehicleDataResult|False|Information related to an emergency event (and if it occurred)|
|`clusterModes`|VehicleDataResult|False|The status modes of the cluster|
|`myKey`|VehicleDataResult|False|Information related to the MyKey feature|
|`windowStatus`|VehicleDataResult|False|See WindowStatus|
|`handsOffSteering`|VehicleDataResult|False|To indicate whether driver hands are off the steering wheel|
|`seatOccupancy`|VehicleDataResult|False|See SeatOccupancy|### GetVehicleData
Message Type: **request**Non periodic vehicle data read request.
##### Parameters
| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`gps`|Boolean|False|See GPSData|
|`speed`|Boolean|False|The vehicle speed in kilometers per hour|
|`rpm`|Boolean|False|The number of revolutions per minute of the engine|
|`fuelLevel`|Boolean|False|The fuel level in the tank (percentage). This parameter is deprecated starting RPC Spec 7.0, please see fuelRange.|
|`fuelLevel_State`|Boolean|False|The fuel level state. This parameter is deprecated starting RPC Spec 7.0, please see fuelRange.|
|`instantFuelConsumption`|Boolean|False|The instantaneous fuel consumption in microlitres|
|`fuelRange`|Boolean|False|The fuel type, estimated range in KM, fuel level/capacity and fuel level state for the vehicle. See struct FuelRange for details.|
|`climateData`|Boolean|False|See ClimateData|
|`externalTemperature`|Boolean|False|The external temperature in degrees celsius. This parameter is deprecated starting RPC Spec 7.1, please see climateData.|
|`turnSignal`|Boolean|False|See TurnSignal|
|`vin`|Boolean|False|Vehicle identification number|
|`gearStatus`|Boolean|False|See GearStatus|
|`prndl`|Boolean|False|See PRNDL. This parameter is deprecated and it is now covered in `gearStatus`|
|`tirePressure`|Boolean|False|See TireStatus|
|`odometer`|Boolean|False|Odometer in km|
|`beltStatus`|Boolean|False|The status of the seat belts|
|`bodyInformation`|Boolean|False|The body information including ignition status and internal temp|
|`deviceStatus`|Boolean|False|The device status including signal and battery strength|
|`driverBraking`|Boolean|False|The status of the brake pedal|
|`wiperStatus`|Boolean|False|The status of the wipers|
|`headLampStatus`|Boolean|False|Status of the head lamps|
|`engineTorque`|Boolean|False|Torque value for engine (in Nm) on non-diesel variants|
|`accPedalPosition`|Boolean|False|Accelerator pedal position (percentage depressed)|
|`steeringWheelAngle`|Boolean|False|Current angle of the steering wheel (in deg)|
|`engineOilLife`|Boolean|False|The estimated percentage of remaining oil life of the engine.|
|`electronicParkBrakeStatus`|Boolean|False|The status of the park brake as provided by Electric Park Brake (EPB) system.|
|`cloudAppVehicleID`|Boolean|False|Parameter used by cloud apps to identify a head unit|
|`stabilityControlsStatus`|Boolean|False|See StabilityControlsStatus|
|`eCallInfo`|Boolean|False|Emergency Call notification and confirmation data|
|`airbagStatus`|Boolean|False|The status of the air bags|
|`emergencyEvent`|Boolean|False|Information related to an emergency event (and if it occurred)|
|`clusterModeStatus`|Boolean|False|The status modes of the cluster|
|`myKey`|Boolean|False|Information related to the MyKey feature|
|`windowStatus`|Boolean|False|See WindowStatus|
|`handsOffSteering`|Boolean|False|To indicate whether driver hands are off the steering wheel|
|`seatOccupancy`|Boolean|False|See SeatOccupancy|### GetVehicleData
Message Type: **response**##### Parameters
| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`success`|Boolean|True|true, if successful; false, if failed|
|`resultCode`|Result|True|See Result|
|`info`|String|False|Provides additional human readable info regarding the result.|
|`gps`|GPSData|False|See GPSData|
|`speed`|Float|False|The vehicle speed in kilometers per hour|
|`rpm`|Integer|False|The number of revolutions per minute of the engine|
|`fuelLevel`|Float|False|The fuel level in the tank (percentage). This parameter is deprecated starting RPC Spec 7.0, please see fuelRange.|
|`fuelLevel_State`|ComponentVolumeStatus|False|The fuel level state. This parameter is deprecated starting RPC Spec 7.0, please see fuelRange.|
|`instantFuelConsumption`|Float|False|The instantaneous fuel consumption in microlitres|
|`fuelRange`|FuelRange[]|False|The fuel type, estimated range in KM, fuel level/capacity and fuel level state for the vehicle. See struct FuelRange for details.|
|`climateData`|ClimateData|False|See ClimateData|
|`externalTemperature`|Float|False|The external temperature in degrees celsius. This parameter is deprecated starting RPC Spec 7.1, please see climateData.|
|`turnSignal`|TurnSignal|False|See TurnSignal|
|`vin`|String|False|Vehicle identification number|
|`gearStatus`|GearStatus|False|See GearStatus|
|`prndl`|PRNDL|False|See PRNDL. This parameter is deprecated and it is now covered in `gearStatus`|
|`tirePressure`|TireStatus|False|See TireStatus|
|`odometer`|Integer|False|Odometer in km|
|`beltStatus`|BeltStatus|False|The status of the seat belts|
|`bodyInformation`|BodyInformation|False|The body information including power modes|
|`deviceStatus`|DeviceStatus|False|The device status including signal and battery strength|
|`driverBraking`|VehicleDataEventStatus|False|The status of the brake pedal|
|`wiperStatus`|WiperStatus|False|The status of the wipers|
|`headLampStatus`|HeadLampStatus|False|Status of the head lamps|
|`engineTorque`|Float|False|Torque value for engine (in Nm) on non-diesel variants|
|`accPedalPosition`|Float|False|Accelerator pedal position (percentage depressed)|
|`steeringWheelAngle`|Float|False|Current angle of the steering wheel (in deg)|
|`engineOilLife`|Float|False|The estimated percentage of remaining oil life of the engine.|
|`electronicParkBrakeStatus`|ElectronicParkBrakeStatus|False|The status of the park brake as provided by Electric Park Brake (EPB) system.|
|`cloudAppVehicleID`|String|False|Parameter used by cloud apps to identify a head unit|
|`stabilityControlsStatus`|StabilityControlsStatus|False|See StabilityControlsStatus|
|`eCallInfo`|ECallInfo|False|Emergency Call notification and confirmation data|
|`airbagStatus`|AirbagStatus|False|The status of the air bags|
|`emergencyEvent`|EmergencyEvent|False|Information related to an emergency event (and if it occurred)|
|`clusterModeStatus`|ClusterModeStatus|False|The status modes of the cluster|
|`myKey`|MyKey|False|Information related to the MyKey feature|
|`windowStatus`|WindowStatus[]|False|See WindowStatus|
|`handsOffSteering`|Boolean|False|To indicate whether driver hands are off the steering wheel|
|`seatOccupancy`|SeatOccupancy|False|See SeatOccupancy|### ReadDID
Message Type: **request**Non periodic vehicle data read request
##### Parameters
| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`ecuName`|Integer|True|Name of ECU.|
|`didLocation`|Integer[]|True|Get raw data from vehicle data DID location(s)|### ReadDID
Message Type: **response**##### Parameters
| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`success`|Boolean|True|true, if successful; false, if failed|
|`resultCode`|Result|True|See Result|
|`info`|String|False|Provides additional human readable info regarding the result.|
|`didResult`|DIDResult[]|False|Array of requested DID results (with data if available).|### GetDTCs
Message Type: **request**Vehicle module diagnostic trouble code request.
##### Parameters
| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`ecuName`|Integer|True|Name of ECU.|
|`dtcMask`|Integer|False|DTC Mask Byte to be sent in diagnostic request to module .|### GetDTCs
Message Type: **response**##### Parameters
| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`success`|Boolean|True|true, if successful; false, if failed|
|`resultCode`|Result|True|See Result|
|`info`|String|False|Provides additional human readable info regarding the result.|
|`ecuHeader`|Integer|False|2 byte ECU Header for DTC response (as defined in VHR_Layout_Specification_DTCs.pdf)|
|`dtc`|String[]|False|Array of all reported DTCs on module (ecuHeader contains information if list is truncated). Each DTC is represented by 4 bytes (3 bytes of data and 1 byte status as defined in VHR_Layout_Specification_DTCs.pdf).|### DiagnosticMessage
Message Type: **request**Non periodic vehicle diagnostic request
##### Parameters
| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`targetID`|Integer|True|Name of target ECU.|
|`messageLength`|Integer|True|Length of message (in bytes).|
|`messageData`|Integer[]|True|Array of bytes comprising CAN message.|### DiagnosticMessage
Message Type: **response**##### Parameters
| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`success`|Boolean|True|true, if successful; false, if failed|
|`resultCode`|Result|True|See Result|
|`info`|String|False|Provides additional human readable info regarding the result.|
|`messageDataResult`|Integer[]|False|Array of bytes comprising CAN message result.|### ScrollableMessage
Message Type: **request**Creates a full screen overlay containing a large block of formatted text that can be scrolled with up to 8 SoftButtons defined
##### Parameters
| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`scrollableMessageBody`|String|True|Body of text that can include newlines and tabs.|
|`timeout`|Integer|False|App defined timeout. Indicates how long of a timeout from the last action (i.e. scrolling message resets timeout).|
|`softButtons`|SoftButton[]|False|App defined SoftButtons. If omitted on supported displays, only the system defined "Close" SoftButton will be displayed.|
|`cancelID`|Integer|False|An ID for this specific ScrollableMessage to allow cancellation through the `CancelInteraction` RPC.|### ScrollableMessage
Message Type: **response**##### Parameters
| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`success`|Boolean|True|true, if successful; false, if failed|
|`resultCode`|Result|True|See Result|
|`info`|String|False|Provides additional human readable info regarding the result.|### Slider
Message Type: **request**Creates a full screen or pop-up overlay (depending on platform) with a single user controlled slider.
##### Parameters
| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`numTicks`|Integer|True|Number of selectable items on a horizontal axis|
|`position`|Integer|True|Initial position of slider control (cannot exceed numTicks)|
|`sliderHeader`|String|True|Text header to display|
|`sliderFooter`|String[]|False|Text footer to display (meant to display min/max threshold descriptors). For a static text footer, only one footer string shall be provided in the array. For a dynamic text footer, the number of footer text string in the array must match the numTicks value. For a dynamic text footer, text array string should correlate with potential slider position index. If omitted on supported displays, no footer text shall be displayed.|
|`timeout`|Integer|False|App defined timeout. Indicates how long of a timeout from the last action (i.e. sliding control resets timeout). If omitted, the value is set to 10000.|
|`cancelID`|Integer|False|An ID for this specific Slider to allow cancellation through the `CancelInteraction` RPC.|### Slider
Message Type: **response**##### Parameters
| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`success`|Boolean|True|true, if successful; false, if failed|
|`resultCode`|Result|True|See Result|
|`info`|String|False|Provides additional human readable info regarding the result.|
|`sliderPosition`|Integer|False|Current slider value returned when saved or canceled (aborted) This value is only returned for resultCodes "SAVED" or "ABORTED"|### ShowConstantTBT
Message Type: **request**##### Parameters
| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`navigationText1`|String|False||
|`navigationText2`|String|False||
|`eta`|String|False||
|`timeToDestination`|String|False||
|`totalDistance`|String|False||
|`turnIcon`|Image|False||
|`nextTurnIcon`|Image|False||
|`distanceToManeuver`|Float|False|Distance (in meters) until next maneuver. May be used to calculate progress bar.|
|`distanceToManeuverScale`|Float|False|Distance (in meters) from previous maneuver to next maneuver. May be used to calculate progress bar.|
|`maneuverComplete`|Boolean|False|If and when a maneuver has completed while an AlertManeuver is active, the app must send this value set to TRUE in order to clear the AlertManeuver overlay. If omitted the value will be assumed as FALSE.|
|`softButtons`|SoftButton[]|False|Three dynamic SoftButtons available (first SoftButton is fixed to "Turns"). If omitted on supported displays, the currently displayed SoftButton values will not change.|### ShowConstantTBT
Message Type: **response**##### Parameters
| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`success`|Boolean|True|true, if successful; false, if failed|
|`resultCode`|Result|True|See Result|
|`info`|String|False|Provides additional human readable info regarding the result.|### AlertManeuver
Message Type: **request**##### Parameters
| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`ttsChunks`|TTSChunk[]|False|An array of text chunks of type TTSChunk. See TTSChunk|
|`softButtons`|SoftButton[]|False|If omitted on supported displays, only the system defined "Close" SoftButton shall be displayed.|### AlertManeuver
Message Type: **response**##### Parameters
| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`success`|Boolean|True|true, if successful; false, if failed|
|`resultCode`|Result|True|See Result|
|`info`|String|False|Provides additional human readable info regarding the result.|### UpdateTurnList
Message Type: **request**##### Parameters
| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`turnList`|Turn[]|False||
|`softButtons`|SoftButton[]|False|If omitted on supported displays, app-defined SoftButton will be left blank.|### UpdateTurnList
Message Type: **response**##### Parameters
| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`success`|Boolean|True|true, if successful; false, if failed|
|`resultCode`|Result|True|See Result|
|`info`|String|False|Provides additional human readable info regarding the result.|### ChangeRegistration
Message Type: **request**##### Parameters
| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`language`|Language|True|Requested voice engine (VR+TTS) language registration|
|`hmiDisplayLanguage`|Language|True|Request display language registration|
|`appName`|String|False|Request new app name registration|
|`ttsName`|TTSChunk[]|False|Request new ttsName registration|
|`ngnMediaScreenAppName`|String|False|Request new app short name registration|
|`vrSynonyms`|String[]|False|Request new VR synonyms registration|### ChangeRegistration
Message Type: **response**##### Parameters
| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`success`|Boolean|True|true, if successful; false, if failed|
|`resultCode`|Result|True|See Result|
|`info`|String|False|Provides additional human readable info regarding the result.|### GenericResponse
Message Type: **response**Generic Response is sent, when the name of a received msg cannot be retrieved. Only used in case of an error. Currently, only resultCode INVALID_DATA is used.
##### Parameters
| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`success`|Boolean|True|true, if successful; false, if failed|
|`resultCode`|Result|True|See Result|
|`info`|String|False|Provides additional human readable info regarding the result.|### PutFile
Message Type: **request**Used to push a binary data onto the module from a mobile device, such as icons and album art Not supported on first generation of SDL enabled modules. Binary data is in binary part of hybrid msg.
##### Parameters
| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`syncFileName`|String|True|File reference name.|
|`fileType`|FileType|True|Selected file type.|
|`persistentFile`|Boolean|False|Indicates if the file is meant to persist between sessions / ignition cycles. If set to TRUE, then the system will aim to persist this file through session / cycles. While files with this designation will have priority over others, they are subject to deletion by the system at any time. In the event of automatic deletion by the system, the app will receive a rejection and have to resend the file. If omitted, the value will be set to false.|
|`systemFile`|Boolean|False|Indicates if the file is meant to be passed thru core to elsewhere on the system. If set to TRUE, then the system will instead pass the data thru as it arrives to a predetermined area outside of core. If omitted, the value will be set to false.|
|`offset`|Integer|False|Optional offset in bytes for resuming partial data chunks|
|`length`|Integer|False|Optional length in bytes for resuming partial data chunks If offset is set to 0, then length is the total length of the file to be downloaded|
|`crc`|Integer|False|Additional CRC32 checksum to protect data integrity up to 512 Mbits|### PutFile
Message Type: **response**Response is sent, when the file data was copied (success case). Or when an error occurred. Not supported on first generation SDL enabled vehicles.
##### Parameters
| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`success`|Boolean|True|true, if successful; false, if failed|
|`resultCode`|Result|True|See Result|
|`spaceAvailable`|Integer|False|Provides the total local space available in SDL Core for the registered app. If the transfer has systemFile enabled, then the value will be set to 0 automatically.|
|`info`|String|False|Provides additional human readable info regarding the result.|### GetFile
Message Type: **request**This request is sent to the module to retrieve a file
##### Parameters
| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`fileName`|String|True|File name that should be retrieved|
|`appServiceId`|String|False|ID of the service that should have uploaded the requested file.|
|`fileType`|FileType|False|Selected file type.|
|`offset`|Integer|False|Optional offset in bytes for resuming partial data chunks|
|`length`|Integer|False|Optional length in bytes for resuming partial data chunks If offset is set to 0, then length is the total length of the file to be retrieved|### GetFile
Message Type: **response**This response includes the data that is requested from the specific service
##### Parameters
| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`success`|Boolean|True|true, if successful; false, if failed|
|`resultCode`|Result|True|See Result|
|`info`|String|False|Provides additional human readable info regarding the result.|
|`offset`|Integer|False|Optional offset in bytes for resuming partial data chunks|
|`length`|Integer|False|Optional length in bytes for resuming partial data chunks if offset is set to 0, then length is the total length of the file to be downloaded|
|`fileType`|FileType|False|File type that is being sent in response.|
|`crc`|Integer|False|Additional CRC32 checksum to protect data integrity up to 512 Mbits|### DeleteFile
Message Type: **request**Used to delete a file resident on the module in the app's local cache. Not supported on first generation SDL enabled vehicles.
##### Parameters
| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`syncFileName`|String|True|File reference name.|### DeleteFile
Message Type: **response**Response is sent, when the file data was deleted (success case). Or when an error occurred. Not supported on First generation SDL enabled vehicles.
##### Parameters
| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`success`|Boolean|True|true if successful; false, if failed|
|`resultCode`|Result|True|See Result|
|`spaceAvailable`|Integer|False|Provides the total local space available on the module for the registered app.|
|`info`|String|False|Provides additional human readable info regarding the result.|### ListFiles
Message Type: **request**Requests the current list of resident filenames for the registered app. Not supported on first generation SDL enabled vehicles.
### ListFiles
Message Type: **response**Returns the current list of resident filenames for the registered app along with the current space available Not supported on First generation SDL enabled vehicles.
##### Parameters
| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`success`|Boolean|True|true, if successful; false, if failed|
|`resultCode`|Result|True|See Result|
|`filenames`|String[]|False|An array of all filenames resident on the module for the given registered app. If omitted, then no files currently reside on the system.|
|`spaceAvailable`|Integer|False|Provides the total local space available on the module for the registered app.|
|`info`|String|False|Provides additional human readable info regarding the result.|### SetAppIcon
Message Type: **request**Used to set existing local file on the module as the app's icon Not supported on first generation SDL enabled vehicles.
##### Parameters
| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`syncFileName`|String|True|File reference name.|### SetAppIcon
Message Type: **response**Response is sent, when the file data was copied (success case). Or when an error occurred. Not supported on First generation SDL enabled vehicles.
##### Parameters
| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`success`|Boolean|True|true, if successful; false, if failed|
|`resultCode`|Result|True|See Result|
|`info`|String|False|Provides additional human readable info regarding the result.|### SetDisplayLayout
Message Type: **request**###### Deprecated since: 6.0.0
This RPC is deprecated. Use Show RPC to change layout.
##### Parameters
| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`displayLayout`|String|True|Predefined or dynamically created screen layout. Currently only predefined screen layouts are defined.|
|`dayColorScheme`|TemplateColorScheme|False||
|`nightColorScheme`|TemplateColorScheme|False||### SetDisplayLayout
Message Type: **response**###### Deprecated since: 6.0.0
This RPC is deprecated. Use Show RPC to change layout.
##### Parameters
| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`success`|Boolean|True|true, if successful; false, if failed|
|`resultCode`|Result|True|See Result|
|`displayCapabilities`|DisplayCapabilities|False|See DisplayCapabilities|
|`buttonCapabilities`|ButtonCapabilities[]|False|See ButtonCapabilities|
|`softButtonCapabilities`|SoftButtonCapabilities[]|False|If returned, the platform supports on-screen SoftButtons; see SoftButtonCapabilities.|
|`presetBankCapabilities`|PresetBankCapabilities|False|If returned, the platform supports custom on-screen Presets; see PresetBankCapabilities.|
|`info`|String|False|Provides additional human readable info regarding the result.|### SystemRequest
Message Type: **request**An asynchronous request from the device; binary data can be included in hybrid part of message for some requests (such as HTTP, Proprietary, or Authentication requests)
##### Parameters
| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`requestType`|RequestType|True|The type of system request. Note that Proprietary requests should forward the binary data to the known proprietary module on the system.|
|`requestSubType`|String|False|This parameter is filled for supporting OEM proprietary data exchanges.|
|`fileName`|String|False|Filename of HTTP data to store in predefined system staging area. Mandatory if requestType is HTTP. PROPRIETARY requestType should ignore this parameter.|### SystemRequest
Message Type: **response**##### Parameters
| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`success`|Boolean|True|true, if successful; false, if failed|
|`resultCode`|Result|True|See Result|
|`info`|String|False|Provides additional human readable info regarding the result.|### SendLocation
Message Type: **request**##### Parameters
| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`longitudeDegrees`|Float|False||
|`latitudeDegrees`|Float|False||
|`locationName`|String|False|Name / title of intended location|
|`locationDescription`|String|False|Description intended location / establishment (if applicable)|
|`addressLines`|String[]|False|Location address (if applicable)|
|`phoneNumber`|String|False|Phone number of intended location / establishment (if applicable)|
|`locationImage`|Image|False|Image / icon of intended location (if applicable and supported)|
|`timeStamp`|DateTime|False|timestamp in ISO 8601 format|
|`address`|OASISAddress|False|Address to be used for setting destination|
|`deliveryMode`|DeliveryMode|False|Defines the mode of prompt for user|### SendLocation
Message Type: **response**##### Parameters
| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`success`|Boolean|True|true, if successful; false, if failed|
|`resultCode`|Result|True|See Result|
|`info`|String|False|Provides additional human readable info regarding the result.|### DialNumber
Message Type: **request**Dials a phone number and switches to phone application.
##### Parameters
| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`number`|String|True|Phone number is a string, which can be up to 40 chars. All characters shall be stripped from string except digits 0-9 and * # , ; +|### DialNumber
Message Type: **response**##### Parameters
| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`success`|Boolean|True|true, if successful; false, if failed|
|`resultCode`|Result|True|See Result|
|`info`|String|False|Provides additional human readable info regarding the result.|### ButtonPress
Message Type: **request**NOTE: Certain ButtonNames are tied to specific RC module types. See ButtonName
##### Parameters
| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`moduleType`|ModuleType|True|The module where the button should be pressed|
|`moduleId`|String|False|Id of a module in the published ButtonCapabilities|
|`buttonName`|ButtonName|True|The name of the supported RC button.|
|`buttonPressMode`|ButtonPressMode|True|Indicates whether this is a LONG or SHORT button press event.|### ButtonPress
Message Type: **response**##### Parameters
| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`resultCode`|Result|True|See Result|
|`info`|String|False||
|`success`|Boolean|True|true if successful; false, if failed|### GetInteriorVehicleData
Message Type: **request**##### Parameters
| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`moduleType`|ModuleType|True|The type of an RC module to retrieve module data from the vehicle. In the future, this should be the Identification of a module.|
|`moduleId`|String|False|Id of a module, published by System Capability.|
|`subscribe`|Boolean|False|If subscribe is true, the head unit will register OnInteriorVehicleData notifications for the requested module (moduleId and moduleType). If subscribe is false, the head unit will unregister OnInteriorVehicleData notifications for the requested module (moduleId and moduleType). If subscribe is not included, the subscription status of the app for the requested module (moduleId and moduleType) will remain unchanged.|### GetInteriorVehicleData
Message Type: **response**##### Parameters
| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`moduleData`|ModuleData|False||
|`resultCode`|Result|True|See Result|
|`info`|String|False||
|`success`|Boolean|True|true if successful; false, if failed|
|`isSubscribed`|Boolean|False|It is a conditional-mandatory parameter: must be returned in case "subscribe" parameter was present in the related request. if "true" - the "moduleType" from request is successfully subscribed and the head unit will send onInteriorVehicleData notifications for the moduleType. if "false" - the "moduleType" from request is either unsubscribed or failed to subscribe.|### GetInteriorVehicleDataConsent
Message Type: **request**##### Parameters
| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`moduleType`|ModuleType|True|The module type that the app requests to control.|
|`moduleIds`|String[]|True|Ids of a module of same type, published by System Capability.|### GetInteriorVehicleDataConsent
Message Type: **response**##### Parameters
| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`success`|Boolean|True|true if successful; false, if failed|
|`resultCode`|Result|True|See Result|
|`info`|String|False||
|`allowed`|Boolean[]|False|This array has the same size as "moduleIds" in the request and each element corresponds to one moduleId If true, SDL grants the permission for the requested module If false, SDL denies the permission for the requested module.|### ReleaseInteriorVehicleDataModule
Message Type: **request**##### Parameters
| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`moduleType`|ModuleType|True||
|`moduleId`|String|False|Id of a module, published by System Capability.|### ReleaseInteriorVehicleDataModule
Message Type: **response**##### Parameters
| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`success`|Boolean|True|true if successful; false, if failed|
|`resultCode`|Result|True|See Result|
|`info`|String|False||### SetInteriorVehicleData
Message Type: **request**##### Parameters
| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`moduleData`|ModuleData|True|The module data to set for the requested RC module.|### SetInteriorVehicleData
Message Type: **response**Used to set the values of one remote control module
##### Parameters
| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`moduleData`|ModuleData|False||
|`resultCode`|Result|True|See Result|
|`info`|String|False||
|`success`|Boolean|True|true if successful; false, if failed|### SubscribeWayPoints
Message Type: **request**To subscribe in getting changes for Waypoints/destinations
### SubscribeWayPoints
Message Type: **response**##### Parameters
| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`success`|Boolean|True|true, if successful; false, if failed|
|`resultCode`|Result|True|See Result|
|`info`|String|False|Provides additional human readable info regarding the result.|### GetWayPoints
Message Type: **request**Request for getting waypoint/destination data.
##### Parameters
| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`wayPointType`|WayPointType|True|To request for either the destination only or for all waypoints including destination|### GetWayPoints
Message Type: **response**##### Parameters
| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`success`|Boolean|True|true, if successful; false, if failed|
|`resultCode`|Result|True|See Result|
|`info`|String|False|Provides additional human readable info regarding the result.|
|`wayPoints`|LocationDetails[]|False|See LocationDetails|### UnsubscribeWayPoints
Message Type: **request**Request to unsubscribe from WayPoints and Destination
### UnsubscribeWayPoints
Message Type: **response**##### Parameters
| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`success`|Boolean|True|true, if successful; false, if failed|
|`resultCode`|Result|True|See Result|
|`info`|String|False|Provides additional human readable info regarding the result.|
|`wayPoints`|LocationDetails[]|False|See LocationDetails|### GetSystemCapability
Message Type: **request**Request for expanded information about a supported system/HMI capability
##### Parameters
| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`systemCapabilityType`|SystemCapabilityType|True|The type of system capability to get more information on|
|`subscribe`|Boolean|False|Flag to subscribe to updates of the supplied service capability type. If true, the requester will be subscribed. If false, the requester will not be subscribed and be removed as a subscriber if it was previously subscribed.|### GetSystemCapability
Message Type: **response**##### Parameters
| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`systemCapability`|SystemCapability|False||
|`resultCode`|Result|True|See Result|
|`info`|String|False|Provides additional human readable info regarding the result.|
|`success`|Boolean|True|true if successful; false, if failed|### SendHapticData
Message Type: **request**Send the spatial data gathered from SDLCarWindow or VirtualDisplayEncoder to the HMI. This data will be utilized by the HMI to determine how and when haptic events should occur
##### Parameters
| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`hapticRectData`|HapticRect[]|False|Array of spatial data structures that represent the locations of all user controls present on the HMI. This data should be updated if/when the application presents a new screen. When a request is sent, if successful, it will replace all spatial data previously sent through RPC. If an empty array is sent, the existing spatial data will be cleared|### SendHapticData
Message Type: **response**##### Parameters
| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`success`|Boolean|True|true if successful; false if failed|
|`info`|String|False|Provides additional human readable info regarding the result.|
|`resultCode`|Result|True|See Result|### SetCloudAppProperties
Message Type: **request**RPC used to enable/disable a cloud application and set its cloud-related policy properties
##### Parameters
| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`properties`|CloudAppProperties|True|The new cloud application properties|### SetCloudAppProperties
Message Type: **response**The response to SetCloudAppProperties
##### Parameters
| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`success`|Boolean|True|true if successful; false if failed|
|`resultCode`|Result|True|See Result|
|`info`|String|False|Provides additional human readable info regarding the result.|### GetCloudAppProperties
Message Type: **request**RPC used to get the current properties of a cloud application
##### Parameters
| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`appID`|String|True||### GetCloudAppProperties
Message Type: **response**The response to GetCloudAppProperties
##### Parameters
| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`properties`|CloudAppProperties|False|The requested cloud application properties|
|`success`|Boolean|True|true if successful; false if failed|
|`resultCode`|Result|True|See Result|
|`info`|String|False|Provides additional human readable info regarding the result.|### PublishAppService
Message Type: **request**Registers a service offered by this app on the module. Subsequent calls with the same service type will update the manifest for that service.
##### Parameters
| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`appServiceManifest`|AppServiceManifest|True|The manifest of the service that wishes to be published. If already published, the updated manifest for this service.|### PublishAppService
Message Type: **response**Response to the request to register a service offered by this app on the module
##### Parameters
| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`success`|Boolean|True|true, if successful; false, if failed|
|`resultCode`|Result|True|See Result|
|`info`|String|False|Provides additional human readable info regarding the result.|
|`appServiceRecord`|AppServiceRecord|False|If the request was successful, this object will be the current status of the service record for the published service. This will include the Core supplied service ID.|### UnpublishAppService
Message Type: **request**Unpublish an existing service published by this application.
##### Parameters
| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`serviceID`|String|True|The ID of the service to be unpublished.|### UnpublishAppService
Message Type: **response**The response to UnpublishAppService
##### Parameters
| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`success`|Boolean|True|true, if successful; false, if failed|
|`resultCode`|Result|True|See Result|
|`info`|String|False|Provides additional human readable info regarding the result.|### GetAppServiceData
Message Type: **request**This request asks the module for current data related to the specific service. It also includes an option to subscribe to that service for future updates
##### Parameters
| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`serviceType`|String|True|The type of service that is to be offered by this app. See AppServiceType for known enum equivalent types. Parameter is a string to allow for new service types to be used by apps on older versions of SDL Core.|
|`subscribe`|Boolean|False|If true, the consumer is requesting to subscribe to all future updates from the service publisher. If false, the consumer doesn't wish to subscribe and should be unsubscribed if it was previously subscribed.|### GetAppServiceData
Message Type: **response**This response includes the data that was requested from the specific service
##### Parameters
| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`success`|Boolean|True|true, if successful; false, if failed|
|`resultCode`|Result|True|See Result|
|`info`|String|False|Provides additional human readable info regarding the result.|
|`serviceData`|AppServiceData|False||### PerformAppServiceInteraction
Message Type: **request**##### Parameters
| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`serviceUri`|String|True|Fully qualified URI based on a predetermined scheme provided by the app service. SDL makes no guarantee that this URI is correct.|
|`serviceID`|String|True|The service ID that the app consumer wishes to send this URI.|
|`originApp`|String|True|This string is the appID of the app requesting the app service provider take the specific action.|
|`requestServiceActive`|Boolean|False|This flag signals the requesting consumer would like this service to become the active primary service of the destination's type.|### PerformAppServiceInteraction
Message Type: **response**##### Parameters
| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`success`|Boolean|True|true, if successful; false, if failed|
|`resultCode`|Result|True|See Result. All results will be available for this response.|
|`info`|String|False|Provides additional human readable info regarding the result.|
|`serviceSpecificResult`|String|False|The service can provide specific result strings to the consumer through this param.|### CancelInteraction
Message Type: **request**Close an active interaction on the HMI.
##### Parameters
| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`cancelID`|Integer|False|The ID of the specific interaction you want to dismiss. If not set, the most recent of the RPC type set in functionID will be dismissed.|
|`functionID`|Integer|True|The ID of the type of interaction the developer wants to dismiss. Only values 10, (PerformInteractionID), 12 (AlertID), 25 (ScrollableMessageID), 26 (SliderID), and 64 (SubtleAlertID) are permitted.|### CancelInteraction
Message Type: **response**If no applicable request can be dismissed, the result will be IGNORED.
##### Parameters
| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`success`|Boolean|True|true if successful; false, if failed|
|`resultCode`|Result|True|See Result|
|`info`|String|False|Provides additional human readable info regarding the result.|### CloseApplication
Message Type: **request**Request from the application to exit the foreground and enter HMI_NONE.
### CloseApplication
Message Type: **response**##### Parameters
| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`success`|Boolean|True|true if successful; false, if failed|
|`resultCode`|Result|True|See Result|
|`info`|String|False|Provides additional human readable info regarding the result.|### OnHMIStatus
Message Type: **notification**##### Parameters
| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`hmiLevel`|HMILevel|True|See HMILevel|
|`audioStreamingState`|AudioStreamingState|True|See AudioStreamingState|
|`systemContext`|SystemContext|True|See SystemContext|
|`videoStreamingState`|VideoStreamingState|False|See VideoStreamingState. If it is NOT_STREAMABLE, the app must stop streaming video to SDL Core(stop service).|
|`windowID`|Integer|False|This is the unique ID assigned to the window that this RPC is intended. If this param is not included, it will be assumed that this request is specifically for the main window on the main display. See PredefinedWindows enum.|### OnAppInterfaceUnregistered
Message Type: **notification**##### Parameters
| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`reason`|AppInterfaceUnregisteredReason|True|See AppInterfaceUnregisteredReason|### OnButtonEvent
Message Type: **notification**Notifies application of UP/DOWN events for buttons to which the application is subscribed.
##### Parameters
| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`buttonName`|ButtonName|True||
|`buttonEventMode`|ButtonEventMode|True|Indicates whether this is an UP or DOWN event.|
|`customButtonID`|Integer|False|If ButtonName is "CUSTOM_BUTTON", this references the integer ID passed by a custom button. (e.g. softButton ID)|### OnButtonPress
Message Type: **notification**Notifies application of LONG/SHORT press events for buttons to which the application is subscribed.
##### Parameters
| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`buttonName`|ButtonName|True||
|`buttonPressMode`|ButtonPressMode|True|Indicates whether this is a LONG or SHORT button press event.|
|`customButtonID`|Integer|False|If ButtonName is "CUSTOM_BUTTON", this references the integer ID passed by a custom button. (e.g. softButton ID)|### OnVehicleData
Message Type: **notification**Callback for the periodic and non periodic vehicle data read function.
##### Parameters
| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`gps`|GPSData|False|See GPSData|
|`speed`|Float|False|The vehicle speed in kilometers per hour|
|`rpm`|Integer|False|The number of revolutions per minute of the engine|
|`fuelLevel`|Float|False|The fuel level in the tank (percentage). This parameter is deprecated starting RPC Spec 7.0, please see fuelRange.|
|`fuelLevel_State`|ComponentVolumeStatus|False|The fuel level state. This parameter is deprecated starting RPC Spec 7.0, please see fuelRange.|
|`instantFuelConsumption`|Float|False|The instantaneous fuel consumption in microlitres|
|`fuelRange`|FuelRange[]|False|The fuel type, estimated range in KM, fuel level/capacity and fuel level state for the vehicle. See struct FuelRange for details.|
|`climateData`|ClimateData|False|See ClimateData|
|`externalTemperature`|Float|False|The external temperature in degrees celsius. This parameter is deprecated starting RPC Spec 7.1, please see climateData.|
|`turnSignal`|TurnSignal|False|See TurnSignal|
|`vin`|String|False|Vehicle identification number.|
|`gearStatus`|GearStatus|False|See GearStatus|
|`prndl`|PRNDL|False|See PRNDL. This parameter is deprecated and it is now covered in `gearStatus`|
|`tirePressure`|TireStatus|False|See TireStatus|
|`odometer`|Integer|False|Odometer in km|
|`beltStatus`|BeltStatus|False|The status of the seat belts|
|`bodyInformation`|BodyInformation|False|The body information including power modes|
|`deviceStatus`|DeviceStatus|False|The device status including signal and battery strength|
|`driverBraking`|VehicleDataEventStatus|False|The status of the brake pedal|
|`wiperStatus`|WiperStatus|False|The status of the wipers|
|`headLampStatus`|HeadLampStatus|False|Status of the head lamps|
|`engineTorque`|Float|False|Torque value for engine (in Nm) on non-diesel variants|
|`accPedalPosition`|Float|False|Accelerator pedal position (percentage depressed)|
|`steeringWheelAngle`|Float|False|Current angle of the steering wheel (in deg)|
|`engineOilLife`|Float|False|The estimated percentage of remaining oil life of the engine.|
|`electronicParkBrakeStatus`|ElectronicParkBrakeStatus|False|The status of the park brake as provided by Electric Park Brake (EPB) system.|
|`cloudAppVehicleID`|String|False|Parameter used by cloud apps to identify a head unit|
|`stabilityControlsStatus`|StabilityControlsStatus|False|See StabilityControlsStatus|
|`eCallInfo`|ECallInfo|False|Emergency Call notification and confirmation data|
|`airbagStatus`|AirbagStatus|False|The status of the air bags|
|`emergencyEvent`|EmergencyEvent|False|Information related to an emergency event (and if it occurred)|
|`clusterModeStatus`|ClusterModeStatus|False|The status modes of the cluster|
|`myKey`|MyKey|False|Information related to the MyKey feature|
|`windowStatus`|WindowStatus[]|False|See WindowStatus|
|`handsOffSteering`|Boolean|False|To indicate whether driver hands are off the steering wheel|
|`seatOccupancy`|SeatOccupancy|False|See SeatOccupancy|### OnCommand
Message Type: **notification**##### Parameters
| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`cmdID`|Integer|True|Command ID, which is related to a specific menu entry|
|`triggerSource`|TriggerSource|True|See TriggerSource|### OnTBTClientState
Message Type: **notification**Provides applications with notifications specific to the current TBT client status on the module
##### Parameters
| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`state`|TBTState|True|Current State of TBT client|### OnDriverDistraction
Message Type: **notification**Provides driver distraction state to mobile applications
##### Parameters
| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`state`|DriverDistractionState|True|Current State of Driver Distraction|
|`lockScreenDismissalEnabled`|Boolean|False|If enabled, the lock screen will be able to be dismissed while connected to SDL, allowing users the ability to interact with the app. Dismissals should include a warning to the user and ensure that they are not the driver.|
|`lockScreenDismissalWarning`|String|False|Warning message to be displayed on the lock screen when dismissal is enabled. This warning should be used to ensure that the user is not the driver of the vehicle, ex. `Swipe down to dismiss, acknowledging that you are not the driver.`. This parameter must be present if "lockScreenDismissalEnabled" is set to true.|### OnPermissionsChange
Message Type: **notification**Provides update to app of which policy-table-enabled functions are available
##### Parameters
| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`permissionItem`|PermissionItem[]|True|Change in permissions for a given set of RPCs|
|`requireEncryption`|Boolean|False||### OnAudioPassThru
Message Type: **notification**Binary data is in binary part of hybrid msg
### OnLanguageChange
Message Type: **notification**##### Parameters
| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`language`|Language|True|Current SDL voice engine (VR+TTS) language|
|`hmiDisplayLanguage`|Language|True|Current display language|### OnKeyboardInput
Message Type: **notification**On-screen keyboard event. Can be full string or individual keypresses depending on keyboard mode.
##### Parameters
| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`event`|KeyboardEvent|True|On-screen keyboard input data.|
|`data`|String|False|On-screen keyboard input data. For dynamic keypress events, this will be the current compounded string of entry text. For entry submission events, this will be the full text entry (this will always return regardless of the mode). For entry cancelled and entry aborted events, this data param will be omitted.|### OnTouchEvent
Message Type: **notification**Notifies about touch events on the screen's prescribed area
##### Parameters
| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`type`|TouchType|True|The type of touch event.|
|`event`|TouchEvent[]|True|List of all individual touches involved in this event.|### OnSystemRequest
Message Type: **notification**An asynchronous request from the system for specific data from the device or the cloud or response to a request from the device or cloud Binary data can be included in hybrid part of message for some requests (such as Authentication request responses)
##### Parameters
| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`requestType`|RequestType|True|The type of system request.|
|`requestSubType`|String|False|This parameter is filled for supporting OEM proprietary data exchanges.|
|`url`|String|False|Optional URL for HTTP requests. If blank, the binary data shall be forwarded to the app. If not blank, the binary data shall be forwarded to the url with a provided timeout in seconds.|
|`timeout`|Integer|False|Optional timeout for HTTP requests Required if a URL is provided|
|`fileType`|FileType|False|Optional file type (meant for HTTP file requests).|
|`offset`|Integer|False|Optional offset in bytes for resuming partial data chunks|
|`length`|Integer|False|Optional length in bytes for resuming partial data chunks|### OnHashChange
Message Type: **notification**Notification containing an updated hashID which can be used over connection cycles (i.e. loss of connection, ignition cycles, etc.). Sent after initial registration and subsequently after any change in the calculated hash of all persisted app data.
##### Parameters
| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`hashID`|String|True|Calculated hash ID to be referenced during RegisterAppInterface.|### OnWayPointChange
Message Type: **notification**Notification which provides the entire LocationDetails when there is a change to any waypoints or destination.
##### Parameters
| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`wayPoints`|LocationDetails[]|True|See LocationDetails|### OnInteriorVehicleData
Message Type: **notification**##### Parameters
| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`moduleData`|ModuleData|True||### OnRCStatus
Message Type: **notification**Issued by SDL to notify the application about remote control status change on SDL
##### Parameters
| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`allowed`|Boolean|False|If "true" - RC is allowed; if "false" - RC is disallowed.|
|`allocatedModules`|ModuleData[]|True|Contains a list (zero or more) of module types that are allocated to the application.|
|`freeModules`|ModuleData[]|True|Contains a list (zero or more) of module types that are free to access for the application.|### OnAppServiceData
Message Type: **notification**This notification includes the data that is updated from the specific service
##### Parameters
| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`serviceData`|AppServiceData|True||### OnSystemCapabilityUpdated
Message Type: **notification**A notification to inform the connected device that a specific system capability has changed.
##### Parameters
| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`systemCapability`|SystemCapability|True|The system capability that has been updated|### OnAppCapabilityUpdated
Message Type: **notification**A notification to inform SDL Core that a specific app capability has changed.
##### Parameters
| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`appCapability`|AppCapability|True|The app capability that has been updated|### OnUpdateFile
Message Type: **notification**This notification tells an app to upload and update a file with a given name.
##### Parameters
| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`fileName`|String|True|File reference name.|### OnUpdateSubMenu
Message Type: **notification**This notification tells an app to update the AddSubMenu or its 'sub' AddCommand and AddSubMenus with the requested data
##### Parameters
| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`menuID`|Integer|True|This menuID must match a menuID in the current menu structure|
|`updateSubCells`|Boolean|False|If not set, assume false. If true, the app should send AddCommands with parentIDs matching the menuID. These AddCommands will then be attached to the submenu and displayed if the submenu is selected.|### EncodedSyncPData
Message Type: **request**###### Deprecated since: 7.1.0
Allows encoded data in the form of SyncP packets to be sent to the SYNC module. Legacy / v1 Protocol implementation; use SyncPData instead. *** DEPRECATED ***
##### Parameters
| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`data`|String[]|True|Contains base64 encoded string of SyncP packets.|### EncodedSyncPData
Message Type: **response**###### Deprecated since: 7.1.0
##### Parameters
| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`success`|Boolean|True|true, if successful; false, if failed|
|`resultCode`|Result|True|See Result|
|`info`|String|False|Provides additional human readable info regarding the result.|### OnEncodedSyncPData
Message Type: **notification**###### Deprecated since: 7.1.0
Callback including encoded data of any SyncP packets that SYNC needs to send back to the mobile device. Legacy / v1 Protocol implementation; responds to EncodedSyncPData. *** DEPRECATED ***
##### Parameters
| Value | Type | Mandatory | Description |
| ---------- | ---------- |:-----------: |:-----------:|
|`data`|String[]|True|Contains base64 encoded string of SyncP packets.|
|`URL`|String|False|If blank, the SyncP data shall be forwarded to the app. If not blank, the SyncP data shall be forwarded to the provided URL.|
|`Timeout`|Integer|False|If blank, the SyncP data shall be forwarded to the app. If not blank, the SyncP data shall be forwarded with the provided timeout in seconds.|