# Uconnect Global Vehicle to Cloud API's

#### Version 2.7.4

##### Most Recent Official Release

#### Table of Contents

## Introduction

The FCA Uconnect Global API’s define a standard data communication protocol for the Telematics Unit in the vehicle to interface with the cloud based Service Delivery Platform (SDP). The in-vehicle unit consists of either a Telematics Box Module (TBM) or Head Unit (HU), while the SDP can be hosted in any one of many cloud based infrastructures including Amazon Web Services (AWS).

The primary objective of this API is to create interoperability between the FCA regions including APAC, EMEA, LATAM, and NAFTA which with proper adoption will result in efficiency improvements and cost reductions as platforms become more global. Additionally, the API will improve the FCA Connected Vehicle Platform design for performance, scalability, flexibility, security, maintainability, and cost effectiveness.

The API is based on industry best-practices for the Internet of Things (IoT) including the use of the secure MQTT and HTTP communication protocols. The need to minimize costly wireless network traffic has also lead to the use of Protocol Buffers for efficiently formatting the data into messages between the client (TBM or HU) and the services (SDP).

Additional information about these standards and practices can be found at the addresses listed below

- All things MQTT at MQTT.ORG
- Eclipse Paho
- Eclipse M2M
- MQTT: the Smarter Plant (white paper)
- Google Protocol Bufffers

## Frequently Asked Questions (FAQ)

- Why use the FCA Global Uconnect V2C API?

  Currently every SDP provider has their own proprietary communication interface with the vehicle. Everyone is essentially sending very similar data and we have a good understanding of the required data elements. Rather than continually adapting the vehicle HU/TBM to interface with different SDP providers, this API provides a common interface which is intended to be leveraged on a global basis.

- What version of MQTT is required?

  The API reference implementation utilizes MQTT 3.1.1. However, the protocol message structures can be transferred over other messaging protocols as required.

- Where Can I find Context Diagram for these API's?

  Here it is.

- Can I only use the AWS IoT MQTT Broker?

  No, Any compliant MQTT client library can be used. The reference implementation utilized AWS IoT for the availability, admin console, policy configuration, and management of device certificates for mutual authentication.

- What is Quality of Service?

  MQTT defines three levels of Quality of Service (QoS). The QoS defines how hard the broker/client will try to ensure that a message is received. Messages may be sent at any QoS level, and clients may attempt to subscribe to topics at any QoS level.

  - 0: The broker/client will deliver the message once, with no confirmation.
  - 1: The broker/client will deliver the message at least once, with confirmation required. This is the recommended QoS level.
  - 2: The broker/client will deliver the message exactly once by using a four step handshake.
- What MQTT Quality of Service (QoS) Level should be used?

  QoS Level 1 should be used for publishing a message at least once. The MessageId and CorrelationId can be used to implement de-duplication logic as required.

- What version of protocol buffers is required?

  The protocol buffer messaging structure utilizes OneOf which is defined in Proto Language Version 3 and supported in version 3. The Simulator client and service utilize Version 3.3.0 of the compiler or better.

  The protocol buffer messaging structure utilizes OneOf which is defined in Proto Language Version 3 and supported in version 3. This specification is based on Protobuf language Version 3 - the compiler is version 3.30 or better

- When should I update protocol buffer versions?

  Changing Protocol Buffer Versions comes with inherent risks and shall not be done in vehicle or at the server except with FCA approval and following our change and release control processes

  The protocol buffer messaging structure utilizes OneOf which is defined in Version 3 and supported in version 3. This specification is based on Protobuf language Version 3 - the compiler is version 3.30 or better

- Can the Protocol Buffer .proto definition files be modified?

  Modifying the protocol buffer .proto files shall only be done at new service versions and must be modified by FCA Interface Architecture and through the change and release control processes

  The protocol buffer messaging structure utilizes OneOf which is defined in Version 3 and supported in version 3. This specification is based on Protobuf language Version 3 - the compiler is version 3.30 or better

- Is compression of messages supported?

  Yes. At the discretion of the sender, messages may be compressed using the format described in RFC 1952 with the default DEFLATE compression method. Messages compressed in this way can reliably be distinguished from uncompressed messages by the magic number in the gzip message header. Receivers can assume compression if the first two bytes of a message are [0x1f,0x8b] because no valid protocol buffers wire format message can start with this particular sequence.

- What value do I use for the MQTT ClientId?

  The clientId shall be identified by Uconnect Security during the design phase of the solution. The recommended approach is to utilize the CN of the Public Certificate assigned to the TBM/HU device. Either through back-end feeds or during the initial CommCheck, the clientID should be associated with a specific VIN

- How Certificate Management Works?

  Before establishing an MQTT connection, a client must have a certificate for mutual authentication in accordance with security specification CS.00165

  The Global V2C API includes an interface to allow the TBM/HU to download a X.509 Public Certificate created from an out of band CSR process between the TBM/HU and Global PKI.

- How do I find the associated requirements documentation?

  The business requirements for the TBM/HU and SDP can be found in the System Function Specification (SFS) documents at the followin link: here

  The implementation requirements for the TBM/HU and SDP can be found in the CTS (Component Technical Specification) and CTDD (Component Technical Design Documents) documents at the followin link: here

- How do I handle Duplicate messages?

  Given we are not using MQTT QoS 1 there is the potential to receive a duplicate message. The HU/TBM client endpoint shall utilize the messageId to reject any duplicate messages. The SDP service endpoint shall utilize the clientId and messageId to reject any duplicate messages.

- Do we need to know if the message has been delivered or does it act as fire/forget?

  As MQTT defines Quality of Service1 (QoS1), if the Quality of Service is set to 1 then the broker/client will deliver the message atleast once and receiver sends an acknowledgment to the sender. and The message is deleted from the sender after it has received an acknowledgment from the receiver.

  An undelivered message may be removed after a specification defined timeout period, as would be the case with Remote Operations

- How are the various IDs used?

  The UconnectMessage contains several IDs for the messages, each is used to create traceability throughout the system. i.e determining duplicates can be done using any combination of MessageID and either SessionID or ServiceID.

  Messages and their IDs have the following structure

- Are there Any General KPI Requirements?

  Yes, listed below.

  Nbr | Type | KPI Requirement
  --- | --- | ---
  1 | Request/Response Message from Vehicle to Cloud | 5 sec
  2 | Request/Response Message from Cloud to Vehicle | 5 sec
  3 | Push Message from Vehicle to Cloud | <3 sec
  4 | Push Message from Cloud to Vehicle | <3 sec

- How do I log messages for Audit/KPI?

  For logging purposes, MQTT packet identifier can be used to find a sender's packets in a receivers's log files. Sender can append the Packet Identifier with the timestamp in the packet.

  If its KPI for Round trip , Message ID/CorrelationId with other information can be used for Logging.

- What do I need to execute the Simulator client examples?

  - A Java Integrated Development Environment (IDE) such as Eclipse or IntelliJ.
  - Download the Google Protocol Buffers compiler and ensure you can generate Java code for one of the provided .proto files.
  - Create a new Java project and import the generated Java source files into your project.
  - Download the dependent Java libraries and import them into your project:
    - Download the protocol buffers jar file here.
    - Download the Paho MQTT client jar file here.
    - Download the AWS IoT Java Client Library here.
  - Add one of the example client code classes to your project and verify your project builds successfully.
  - Create or acquire the credentials and endpoint details for the AWS IoT instance to utilze for testing the client.
- When should the SessionID field provided in the UconnectMessage be used?

  Establishing and passing a session id for every message is the best practice for the purposes of auditing and analytics, as well as correlating multi-point and multi-channel feature messages (i.e. Ecall)

- If a vehicle is offline - how long should messages be held, waiting to Publish

  For Hight Priority messages an SMS will be sent to wake the vehicle. For all messages with a prescribed KPI or performance target, the message time to live should be less than the performance target. This should be defined in a requirements document give by the specific feature team

## Global_Uconnect_Control.proto (Version 1.0)

###

    The common proto is utilized to wrap one or more messages in an extensible manner for delivery between the client
    and services.  This proto also includes common header elements necessary to implement required messaging patterns.
    UconnectMessage (1)KeepAliveMessage (2)UconnectAny (3)AckMessage (4)  Change Log

    	VersionDateNotes

    1.222018-09-20Added PhoneNumber update requests
    1.212018-09-06Added Added navAuth
    1.202018-08-04Added messages for PHEV and AutoSVL
     1.192018-06-04Added Privacy Mode Messages
    1.182018-06-04Added PCLogUploads, UpdateRSAPhoneNumbers, Moved CrankInhibit to RemoteInhibitRequest, added VehicleLocationUpdate
    1.172018-06-04Added TheftAlarmSuppression. Added CreatePin, ValidatePin, LegalDocuments for Activation
    1.162018-04-23Removed stolenVehicleControlRequest and Response Messages message
    1.162018-04-23Removed remoteOperationStatus message
    1.152018-04-19Removed cancelRequest message
    1.152018-03-12Added Error Codes table to the Ack Message documentation
    1.142018-03-12Merged Eco Coaching and Brand Pages to make Connected Pages
    1.132018-03-12Added Eco Coaching Message< and split Auth from VehicleAuth/td>
    1.122017-11-2Update to Proto3
      1.112017-10-09Add apiVersionId to track API version.
      1.102017-09-27Add isTransient and failureReasonCode to AckMessage.
      1.92017-09-20Moved Device,VehicleInfo,DRM to Separate proto file.
      1.82017-08-07Update Location type.
      1.72017-07-10Added DRM.
      1.62017-07-10Added additional fields to VehicleStatus.
      1.52017-06-30Device is added.
      1.42017-04-19VehicleInfo is added.
      1.32017-04-12OriginSource , duplicate fields are removed and added estimatedPositionError to location.
      1.22017-03-21Added Destination.
     1.12017-03-02Added correlationId, refactored extension mechanism.
    	1.02016-06-14Release of initial Proto

### UconnectMessage

The UconnectMessage is the top level protocol buffer message for this API and contains header elements that are common to all messages.

Use of correlationId/messageId The transport layer between the vehicle and services for the API is MQTT, which supports only the publish/subscribe messaging pattern. MQTT does not have any inherent mechanism for correlating sequences of messages, so the UconnectMessage includes messageId and correlationId attributes for this purpose. While a particular implemenation may make messageId a monotonically increasing unique sequence, it is not a requirement to do so and applications should not count on such behavior. Awareness of how an implementation generates messageId may be helpful for maintenance and debug, but properties such as uniqueness across sessions or application restarts should not be assumed.

Following diagrams are intended as an illustration of the concept of request/response correlation and should not be considered as any kind of suggested application architecture.

The following Diagram depicts how Client should implement Request/Response with messageId/correlationId.

The following Diagram depicts how SDP should implement Request/Response with messageId/correlationId.

Title | Description
New Request/Response Interaction | The SDP starts new Request Response interaction to a Topic.
Create Interaction Context | The SDP creates Message with required information
newMessageId = nextMessageID() | The SDP generates the messageId for the message by incrementing a sequence counter and assign it to newMessageID
Put(newMessageId,interactionContext) |
Create Message | The SDP creates message with interaction context.
message.messageID = newMessageID | Add the newly generated messageId to UconnectMessage.
Publish Message | The SDP publishes the message to MQTT broker topic.
Read Message | The TBM/HU reads the message from subscribed MQTT Broker topic.
Create Response | The TBM/HU creates response message with required information.
response.correlationID=message.messageID | The TBM/HU correlationId set to the messageId from the received Message.
Publish Response | The TBM/HU publishes response message to MQTT Broker topic.
Read Response | The SDP reads the response message from subscribed MQTT Broker topic.
interactionContext = get(response.correlationID) | The TBM/HU verifies the correlationId matches the messageId of the sent request and assigns received Response to a required message.
process Response | TBM/HU process response message .
delete(response.correlationID) | TBM/HU reads the message from MQTT Broker.

The following Diagram depicts how SDP initiate publish with no response.

Title | Description
New Publish Interaction | The SDP starts new Publish interaction to a Topic.
Create Message | The SDP creates Message with required information
message.messageID = 0 | The Message id is defaulted to 0 as there is no response and no correlation Id from TBM/HU.
Publish Message | The SDP Publish the message to required Topic through MQTT broker
Read Message | TBM/HU reads the message from MQTT Broker.

Field | Type | Label | Description
timestamp | int64 | optional | The milliseconds since (Jan 1, 1970 00:00:00 UTC) when the message is created. Should come from the system clock of the sender.
sessionId | bytes | optional | may contain any arbitrary sequence of bytes. Intended for implementations where parties to a session need to share a session identifier. Implementations that do so will be able to use sessionId and messageId to correlate logged messages for diagnostic/debug purposes.
messageId | int32 | optional | Assigned to each message by the creator, to allow receivers to reply with correlation. Single node clients can use a per application instance global variable that increments with every message, with a range of -2^31-2^31-1. Clients that are clustered should assign a range of messageIds to each node in the cluster, with the full range equally apportioned.
correlationId | int32 | optional | Must only be set from the messageId of a received message. If there is not a received message being responded to, do not set any value other than the default. Initiators of interactions should never set correlationId, it is for point to point request/response only.
messages | UconnectAny | repeated | A repeated set of UconnectAny messages supports embedding one or more feature specific messages into a single MQTT message.
apiVersionId | bytes | optional | The global api version to provide guidance to the backend for message routing in a multi-version environment.

### KeepAliveMessage

KeepAliveMessage provides a lightweight alternative to the base MQTT keep alive provided in the client library. The message will be used in the scenario where the client manages the keep alive instead of letting the MQTT client manage the keep alive. This is different from original MQTT Keep Alive, imperical testing showed the custom KeepAliveMessage resulted in smaller messages over the network. This is in place as an optional approach to using the default keepalive. KeepAliveMessage should be published on an established system level topic. We recommend /fcasdp/${iot:ClientId}/sys/

Field | Type | Label | Description
timestamp | int64 | optional | The milliseconds since (Jan 1, 1970 00:00:00 UTC) when the message is created. Should come from the system clock of the sender.

### AckMessage

Field | Type | Label | Description
response | AckMessage.ResponseEnum | optional | Success or Failure
isTransient | bool | optional | Indicates if the error is transient and to attempt a retry.
failureReasonCode | int32 | optional | App or System Supplied Reason Code for Failures - See Error Codes page in wiki for details

### AckMessage.ResponseEnum

Name | Number | Description
SUCCESS | 0 | Success
FAILURE | 1 | Failure

### UconnectAny

The UconnectAny message Uses OneOf, so only one message can appear per UconnectAny, the UconnectAny message is repeatable, so feature specific messages are decoupled from the top level message. It is a placeholder to allow a repeated set of extensions.

Field | Type | Label | Description
ackMessage | AckMessage | optional | Ack message definition
sqdfPublish | SQDFPublish | optional | Publish SQDF messages
sqdfResponse | SQDFResponse | optional | SQDF Message Publish Response
sqdfRequest | SQDFRequest | optional | SQDFMessage Request
vehicleConfigPublish | VehicleConfigPublish | optional | Publish a Vehicle configuration message
vehicleConfigRequest | VehicleConfigRequest | optional | Request a vehicle configuration
activationRequest | ActivationRequest | optional | Activation Request
activationResponse | ActivationResponse | optional | Response to Activation Request
initiateDiscrepancyCheck | InitiateDiscrepancyCheck | optional | Initiate a descrepency check
discrepancyCheck | DiscrepancyCheck | optional | Descripency Check message
applicationUpdateNotification | ApplicationUpdateNotification | optional | Application Update Notification
updateStatusNotification | UpdateStatusNotification | optional | Application update status
loginRequest | LoginRequest | optional | Login request
loginResponse | LoginResponse | optional | Response to Login request
logoutRequest | LogoutRequest | optional | Logout request
logoutResponse | LogoutResponse | optional | Response to Logout request
vehAuthRequest | VehAuthRequest | optional | First (Bootstrap) Vehicle Authorization Request
vehAuthResponse | VehAuthResponse | optional | First (Bootstrap) Vehicle Authorization Response
createTokenRequest | CreateTokenRequest | optional | Request to create an access token
createTokenResponse | CreateTokenResponse | optional | Access Token response
refreshTokenRequest | RefreshTokenRequest | optional | Refresh Token Request
refreshTokenResponse | RefreshTokenResponse | optional | Refresh Token Response, includes new token and refresh token
ecallDataUpload | ECallDataUpload | optional | Data upload for eCall
ecallStatusUpdate | ECallStatusUpdate | optional | ECall Status update
ecallVehDataRequest | ECallVehDataRequest | optional | vehicle data to publish in Ecall Data upload
ecallVehDataResponse | ECallVehDataResponse | optional | response to vehicle data upload (Ack)
firmwareUpdateNotification | FirmwareUpdateNotification | optional | Firmware update required notification
firmwareUpdateResponse | FirmwareUpdateResponse | optional | Response to firmware update required message (ack)
pcUpdateConfigRequest | PCUpdateConfigRequest | optional | Parental Controls Configuration Update Request
pcUpdateConfigResponse | PCUpdateConfigResponse | optional | Response to Parental Controls Configuration Update Request
pcAlertPublish | PCConfiguredAlertPublish | optional | Parental Controls Alert Publish
poiSearchRequest | POISearchRequest | optional | Point of Interest Search Request
poiSearchResponse | POISearchResponse | optional | Search Response
poiSearchDestinationRequest | POISearchDestinationRequest | optional | Point of Interest Destination Search
poiSearchDestinationResponse | POISearchDestinationResponse | optional | Destination Search Response
initiateProvisioningPush | InitiateProvisioningPush | optional | Inititiate a Provisioning Push
provisioningRequest | ProvisioningRequest | optional | Provisioning Request
provisioningResponse | ProvisioningResponse | optional | Response to Provisioning Request
provisioningPush | ProvisioningPush | optional | Provisioning Push
provisioningPushAck | ProvisioningPushAck | optional | Ack for Provision Push request
remoteOperationRequest | RemoteOperationRequest | optional | Remote Operations Request
remoteOperationResponse | RemoteOperationResponse | optional | Response for Remote Operations (ack)
rsaDataUpload | RSADataUpload | optional | RSA Data
bcallStatusUpdate | BCallStatusUpdate | optional | Bcall Status for RoadSideAssist
destinationPush | DestinationPush | optional | Send Destination to Vehicle Push
destinationPushResponse | DestinationPushResponse | optional | Response for Send Destination to Vehicle
signature | Signature | optional | Security Signature
stolenModeChangeRequest | StolenModeChangeRequest | optional | SVLA Mode Change
stolenModeChangeResponse | StolenModeChangeResponse | optional | Response for SVLA Mode Change Request
stolenVehicleInfoNotification | StolenVehicleInfoNotification | optional | SVLA Vehicle info notification
theftAlarmSupressionRequest | TheftAlarmSuppressionRequest | optional | A remote request to suppress the theft alarm notification
theftAlarmSupressionNotify | TheftAlarmSuppressionNotify | optional | Notification of status to the server when Notification is suppressed from the HMI
theftAlarmNotification | TheftAlarmNotification | optional | Theft Alarm Notification
theftAlarmNotificationResponse | TheftAlarmNotificationResponse | optional | Response to TAN
vehicleDataAcquisitionPublish | VehicleDataAcquisitionPublish | optional | Vehicle Data Acquisition (used in ADA)
vehicleDataAcquisitionPolicyPublish | VehicleDataAcquisitionPolicyPublish | optional | Policy Publish for ADA
vehicleLocationRequest | VehicleLocationRequest | optional | Vehicle Location Request
vehicleLocationResponse | VehicleLocationResponse | optional | Vehicle Location Response
vehicleMessagePublish | VehicleMessagePublish | optional | Publish Message to Vehicle
vehicleMessageAck | VehicleMessageAck | optional | Ack for Vehicle Message
vehicleMessageDispositionPublish | VehicleMessageDispositionPublish | optional | disposition for message published to vehicle
vehicleMessageDispositionAck | VehicleMessageDispositionAck | optional | Ack for disposition
dataPackageStatusRequest | DataPackageStatusRequest | optional | Data package status request
dataPackageStatusResponse | DataPackageStatusResponse | optional | Data package status response
wifiPackageDataStatus | WifiPackageDataStatus | optional | Wifi Package Data Status
uploadTrackData | UploadTrackData | optional | Track data upload for performance pages
initiateIVHDiscrepancyCheck | InitiateIVHDiscrepancyCheck | optional | Initiate IVH Discrepancy Check
ivhDiscrepancyCheck | IVHDiscrepancyCheck | optional | IVH Discrepancy Check
contentUpdateNotification | ContentUpdateNotification | optional | Content Update notification
contentUpdateStatusNotification | ContentUpdateStatusNotification | optional | Content update status notification
commcheckRequest | CommCheckRequest | optional | commcheck Message
initiateCommCheck | InitiateCommCheck | optional | Initiate a comm check from server
commCheckResponse | CommCheckResponse | optional | commcheck response message
uploadPagesData | UploadPagesData | optional | Upload Vehicle Data for Eco Coaching or Brand Pages
rsaVehicleDataRequest | RSAVehicleDataRequest | optional |
rsaVehicleDataResponse | RSAVehicleDataResponse | optional |
lastMilePush | LastMilePush | optional | Sends "Last Mile" current and target location data to the SDP
lastMileResponse | LastMileResponse | optional | Response from SDP to LastMilePush
vehiclePolicyUpdateRequest | VehiclePolicyUpdateRequest | optional | Requests an Updated Policy
createPin | CreatePin | optional | Creates a PIN for New Activation
validatePin | ValidatePin | optional | Validates a PIN for an Existing Account
legalDocuments | LegalDocuments | optional | Updates Agreement Status for Legal Documents like T&C and Privacy
remoteInhibitRequest | RemoteInhibitRequest | optional | Remote inhibit request for SVL and FTD
remoteInhibitResponse | RemoteInhibitResponse | optional | Remote Inhibit Response
crankAttemptedNotification | CrankAttemptedNotification | optional | Crank attempted while the vehicle is inhibited
vehicleLocationUpdate | VehicleLocationUpdate | optional | Periodic Update of the Vehicle Location
updateNumbers | UpdateEcallPhoneNumbers | optional | Update the list of numbers for the region. Requires a generic Ack returned
updateRsaNumbers | UpdateRSAPhoneNumbers | optional | Update List of numbers for the RSA
pcLogUploads | PCLogUploads | optional | Upload Logs for Parental Controls
privacyModeRequest | PrivacyModeRequest | optional | Turn on and off Privacy Mode
privacyModeResponse | PrivacyModeResponse | optional |
privacyModeNotification | PrivacyModeNotification | optional |
chargeNowRequest | ChargeNowRequest | optional | Request an override to the charge schedule for a PHEV
chargeNowResponse | ChargeNowResponse | optional | Response to ChargeNow Request
chargeDataPublish | ChargeDataPublish | optional | PHEV Vehicle Data Upload
updateChargeSchedules | UpdateChargeSchedule | optional | update the PHEV charge schedules
initiateStolenVehicleMode | InitiateStolenVehicleMode | optional | Informs the SDP that the vehicle has auto-started SVL Mode
chargeDataRequest | ChargeDataRequest | optional | Request a ChargeDataPublish from the vehicle
completeActivtationRequest | CompleteActivationRequest | optional | Return the Legal Documents for Activation
navAuthRequest | NavAuthRequest | optional |
navAuthResponse | NavAuthResponse | optional |
requestEcallPhoneNumbers | RequestEcallPhoneNumbers | optional |
requestRSAPhoneNumbers | RequestRSAPhoneNumbers | optional |
updateLegalDocs | UpdateLegalDocs | optional |
legalDocsPublish | LegalDocsPublish | optional |

### Where to Find the ProtoBuf File

Click here to download Protobuf.

## Global_Uconnect_Device.proto (Version 1.0)

###

    The Proto is to utilize the common Device Message.Device  Change Log

    	VersionDateNotes
      1.32018-04-02Change deviceType enumeration to have only HU and TBM | added headUnitType string
       1.22017-11-2Update to Proto3
    	1.12017-10-09Update Device to include attributes from TBM CTS
    	1.02017-09-20Release of initial Proto

### Device

Field | Type | Label | Description
deviceType | Device.DeviceType | optional | This identifies the type of the device.
deviceOS | Device.OperatingSystem | optional | Device Operating System
headUnitType | string | optional | Describes the HU type. Acceptable values include VP4R, VP2D and VP4C
manufacturerName | string | optional | Device Manufacturer Name
region | Device.ManufactureRegion | optional | Region the device was manufactured in.
screenSize | Device.DisplaySize | optional | Screen Size of the HU device
tbmSerialNum | string | optional | TBM Serial Number
tbmPartNum | string | optional | TBM Part Number
tbmHardwareVersion | string | optional | TBM Hardware Version
tbmSoftwareVersion | string | optional | TBM Software Version
simIccid | string | optional | ICCID for the SIM
simImsi | string | optional | MSI for the SIM
simMsisdn | string | optional | Number uniquely identifying a subscription in a mobile network.
nadImei | string | optional | IMIE Number for the NAD
nadHardwareVersion | string | optional | Modem Hardware Version
nadSoftwareVersion | string | optional | Modem Software Version
nadSerialNum | string | optional | Modem Serial Number
nadPartNum | string | optional | Model Part Number
wifiMac | string | optional | WiFi Mac Address
huSerialNum | string | optional | HU Serial Number
huPartNum | string | optional | HU Part Number
huHardwareVersion | string | optional | HU Hardware Version
huSoftwareVersion | string | optional | HU Software Version
isHUNavigationPresent | bool | optional |

### Device.OperatingSystem

Name | Number | Description
QNX | 0 | QNX Operating System
Android | 1 | Android Operating System for R1
CE | 2 | Windows CE Operating System

### Device.DisplaySize

Name | Number | Description
Five | 0 |
Seven | 1 |
Eight | 2 |
Ten | 3 |
Twelve | 4 |

### Device.ManufactureRegion

Name | Number | Description
NAFTA | 0 |
China | 1 |
APAC | 2 |
EMEA | 3 |
LATAM | 4 |

### Device.DeviceType

Name | Number | Description
ENUM | 0 |
TBM | 1 |
HU | 2 |

### Where to Find the ProtoBuf File

Click here to download Protobuf.

## Global_Uconnect_DRM.proto (Version 1.0)

###

###

    The common proto is utilized to use common DRM Message.

     DRM
     DRMSignature
     DRMRegistration
    Change Log

      VersionDateNotes

      1.42018-08-21Updated DRM to remove the issuer and signature fields per Feature Architect.
      1.42018-05-28Updated DRM to fix VP2R support and make it generic.
      1.32018-05-14Release of DRMSignature and updated DRM
      1.22017-11-02Added Content Type and Signature support
      1.12017-11-02Update to Proto3
      1.02017-09-20Release of initial Proto

    Signature Schema
    RSASSA-PKCS1-v1_5, see RFC8017 "PKCS #1: RSA Cryptography Specifications Version 2.2", section 8.2.Signature algorithm OID:pkcs-1 {
        iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs-1(1)
    }
    sha256WithRSAEncryption      OBJECT IDENTIFIER ::= { pkcs-1 11 }Applicable Key lenght 2048, 3072, 4096 or higher.RSASSA-PKCS1-V1_5-SIGN (K, M)      K        signer's RSA private key
          M        message to be signed, octet string UTF8(drm.properties)For UTF8 encoding see rfc3629, "UTF-8, a transformation format of ISO 10646"

### X509Certificates

Field | Type | Label | Description
certificate | string | repeated | PEM-encoded X.509 certificate chain

### DRMSignature

Field | Type | Label | Description
signatureType | DRMSignature.SignatureType | optional | This defines the type of Signature used to sign the drmFile buffer. Optional fields to be used only when the signature is not a JarSigned file.
signature | bytes | optional | signature = drm.signature
x509Certificates | X509Certificates | optional | X.509 Certificate chain, where the first certificate is the one that shall be used to verify the signature and the last one is root of the DRM subtree.

### DRMSignature.SignatureType

Name | Number | Description
RSA2048_SHA256_RSASSA_PKCS1_V1_5 | 0 | RSA 2048 signature with SHA256 digest and signature scheme RSASSA_PKCS1_V1_5
RSA3072_SHA256_RSASSA_PKCS1_V1_5 | 1 | RSA 3072 signature with SHA256 digest and signature scheme RSASSA_PKCS1_V1_5
RSA4096_SHA256_RSASSA_PKCS1_V1_5 | 2 | RSA 4096 signature with SHA256 digest and signature scheme RSASSA_PKCS1_V1_5

### DRM

Upload the DRM File using this message

Field | Type | Label | Description
contentType | DRM.ContentTypes | optional | Defines the type of DRM content type.
drmFile | bytes | optional | The content of the drmFile shall be serialized in the following way: drmFile = BASE64(UTF8(drm.properties)). This contain the base64 encoded DRM file contents to support sending a file for features and services. drmFile = BASE64(UTF8(drm.properties)) or drmFile = BASE64(drm.jar)
drmSignature | DRMSignature | optional | info to choose the right certificate from ecu certificate store

### DRM.ContentTypes

Name | Number | Description
GENERIC | 0 | File Contents intended for any generic ECU
JVM | 1 | File contents intended for JAVA based systems
APK | 2 | File contents intended for Android based systems

### DRMRegistration

Not currently used

Field | Type | Label | Description
registrationStatus | DRMRegistration.RegistrationStatusEnum | optional | This contains Uconnect Access registration status of the VIN the TU it is installed on.
operation | DRMRegistration.OperationEnum | optional | This indicates which stage of registration has been performed for VIN.
basicRegExpiryTimeStamp | int64 | optional | This indicates the expiration date of the user initiated basic registration date, displayed in millisecond values.
accountDN | string | optional | accountDN number of the TU being registered
expireTime | int64 | optional | The service being provisioned/activated is considered active from the time this message is received until the expire time, expressed in milliseconds elapsed since 1 January 1970 00:00:00 UTC.
fileLength | int32 | optional | file length in bytes
fileChecksum | int32 | optional | filechecksum information
expireTimeSpanBegin | int64 | optional | DRM expiration time start
expireTimeSpanEnd | int64 | optional | DRM expiration time end
emailId | string | optional | emailID if needed

### DRMRegistration.OperationEnum

Name | Number | Description
NOOP | 0 | Indicates there is no operation to be executed by the device.
RESET | 1 | Indicates the device shall be reset which involves disconnecting and re-connecting to the SDP.
RETURN_TO_NEW | 2 | Indicates the device shall be reset and cleared of user configuration data.

### DRMRegistration.RegistrationStatusEnum

Name | Number | Description
NOT_REGISTERED | 0 | The user has not registered this vehicle with a Uconnect Account.
BASIC_STAGE | 1 | When the user requested the registration email, but has not yet completed the registration process.
FULL_STAGE | 2 | User has completed registration, but did not have a wallet account setup.
COMPLETE_STAGE | 3 | Final stage where the user has a wallet configured to allow purchasing of services.

### Where to Find the ProtoBuf File

Click here to download Protobuf.

## Global_Uconnect_Ext_Activation.proto (Version 1.0)

###

###

###

     This API supports the In-Vehicle Activation process by submitting a request to the SDP when the vehicle is first activated by the customer.
      UconnectAny
        |
        |---- ActivationRequest activationRequest (120)
        |
        |---- CreatePin createPin (514)
        |---- ValidatePin ValidatePin (515)
         *     |---- CompleteActivationRequest CompleteActivationRequest (516)
        |---- ActivationResponse activationResponse (121)  Change Log

    	VersionDateNotes

    1.82018-09-25Added ACTIVATION_IN_PROGRESS to responseEnum and update diagram and added update TC&C
    1.72018-09-22Merged CompleteActivation with PIN Create and T&C
     1.62018-05-22Added Enumeration, Legal Docs Needed, Added CompleteActivationRequest, Added LegalDocument ID
    1.52018-05-22Updated Sequence Diagram and added additional requests for CreatePin, ValidatePin and LegalDocument Agreements
       1.42017-11-2Update to Proto3
     1.32017-09-27Update Response for error handling.
     1.22017-06-20Added mobileDevicePhoneNumber to Activation Request.
     1.12017-03-25Added Country and Language
    	1.02017-02-15Release of initial Proto
    	 List of MQTT Topics

    	FlowTypeTopic Name

      Cloud send to VehiclePublishfcasdp/${iot:ClientId}/UACT
    	 Cloud receive from VehicleSubscribefcasdp/UACT/#
    	 Vehicle send to Cloud Publishfcasdp/UACT/${iot:ClientId}
    	 Vehicle receive from Cloud Subscribefcasdp/${iot:ClientId}/#

    Data FlowThe following sequence diagram depicts the flow of messages between the Vehicle and the SDP:

### ActivationRequest

This message represents Activation request of vehicle for services and other configurations.

#### Activation Request Example Message:

`timestamp: 1488574019636 messageId: 1 messages { [com.fca.uconnect.global.activationRequest] { vehicleId: "123456" firstName: "abc" lastName: "xyz" emailAddress: "abc@fca.com" tcIndicator: AGREE } }`
Plan to extend this as we get more requirements.

Field | Type | Label | Description
vehicleId | string | optional | Unique ID for the Vehicle. This is either the VIN or an abstracted ID correalating to the VIN in back office
firstName | string | optional | First name of the person for whom services are to be activated.
lastName | string | optional | Last name of the person for whom services are to be activated.
emailAddress | string | optional | Email address of the person for whom services are to be activated.
language | string | optional | The values shall be formatted according to the ISO alpha-3/639.2 standard.
country | string | optional | The values shall be formatted according to the ISO Alpha-2 standard.
mobileDevicePhoneNumber | string | optional | An alternative to emailAddress for an out of band channel to communicate activation details to the user.

### CreatePin

Field | Type | Label | Description
pin | bytes | optional |
confirmPin | bytes | optional |

### ValidatePin

Field | Type | Label | Description
pin | bytes | optional |
accountValidation | ActivationRequest | optional |

### CompleteActivationRequest

Field | Type | Label | Description
createPin | CreatePin | optional |
pin | bytes | optional | Deprecated
activationRequestData | ActivationRequest | optional | resend Activation Request Info
legalDocuments | LegalDocuments | repeated |

### LegalDocuments

Field | Type | Label | Description
documentID | string | optional | Document Identification
tcIndicator | LegalDocuments.TCIndicatorEnum | optional | Affirmation by the Telematics Unit that the person for whom services are to be activated has accepted a Terms and Conditions document.
privacyAgreemeent | LegalDocuments.TCIndicatorEnum | optional | Affirmation of the Privacy agreement for EMEA Customers

### LegalDocuments.TCIndicatorEnum

Name | Number | Description
DISAGREE | 0 | User did not agree Terms and Conditions.
AGREE | 1 | User agreed Terms and Conditions.

### PinResponse

Field | Type | Label | Description
PinStatus | PinResponse.PinStatusEnum | optional | Used only with ValidatePin

### PinResponse.PinStatusEnum

Name | Number | Description
PIN_CREATED | 0 | A Pin was successfully created and a new account now exists - Deprecated
PIN_VALID | 1 | The Pin for the existing account was validated
PIN_INVALID | 2 | The supplied PIN was invalid
PIN_NOT_CREATED | 3 | Failed to create the new Pin and account - Deprecated
ACCOUNT_LOCKED | 4 | Too many failed attempts at Pin validation the use account is locked

### ActivationResponse

This message is in response to ActivationRequest.

#### Activation Response Example Message:

`timestamp: 1488740988983 messageId: 2 correlationId: 1 messages { [com.fca.uconnect.global.activationResponse] { responseEnum: ACTIVATED } }`

Field | Type | Label | Description
response | ActivationResponse.ResponseEnum | optional | Indicator of the status of the associated ActivationRequest. The correlationId in the containing UconnectMessage must be the same as the messageId of the ActivationRequest.
isTransient | bool | optional | Indicates a retry can be attempted.
failureReasonCode | int32 | optional | Specific Error Code

### ActivationResponse.ResponseEnum

Name | Number | Description
ACTIVATED | 0 | Activated successfully. Set Only After CompleteActivationRequest is sent
REGISTRATION_REQUIRED | 1 | Registration required for Activation - Please Create PIN with CompleteActivation
FAILURE | 2 | Failed due to system exception.
VALIDATE_PIN | 3 | Deprecated
SIGN_LEGAL | 4 | Deprecated
COMPLETE_ACTIVATION | 5 | An Account Exists, submit CompleteActivationRequest - No pin required
ACTIVATION_IN_PROGRESS | 6 | For China - RNR Requires completion. Provisioning will be completed after the RNR is done.

### UpdateLegalDocs

Field | Type | Label | Description

### UpdateLegalDocs.LegalDocsDetailType

Field | Type | Label | Description
documentID | string | optional |
documentVersion | string | optional |

### LegalDocsPublish

Field | Type | Label | Description
legalDocs | LegalDocs | repeated |

### LegalDocs

Field | Type | Label | Description
documentID | string | optional |
documentVersion | string | optional |
document | bytes | optional |

### Where to Find the ProtoBuf File

Click here to download Protobuf.

## Global_Uconnect_Ext_AOTA.proto (Version 1.0)

###

###

###

    This API is to notify the AOTA client of an update.  The AOTA client will manage downloading the update most likely through a different channel (https).
      UconnectAny
        |
        |---- InitiateDiscrepancyCheck initiateDiscrepancyCheck
        |
        |---- DiscrepancyCheck discrepancyCheck
        |
        |---- ApplicationUpdateNotification applicationUpdateNotification
        |
        |---- UpdateStatusNotification updateStatusNotification

      Change Log

    	VersionDateNotes

       1.42018-06-26Added status enumerations to separately identify Download and Install status
    1.32018-05-21Updated Sequence Diagram, minor documentation updates
       1.22017-11-2Update to Proto3
    	1.12017-09-27Update Notification response
    	1.02017-07-11Release of initial Proto
    	 List of MQTT Topics

    	FlowTypeTopic Name

      Cloud send to VehiclePublishfcasdp/${iot:ClientId}/AOTA
    	 Cloud receive from VehicleSubscribefcasdp/AOTA/#
    	 Vehicle send to Cloud Publishfcasdp/AOTA/${iot:ClientId}
    	 Vehicle receive from Cloud Subscribefcasdp/${iot:ClientId}/#

    Data FlowThe following sequence diagram depicts the flow of messages between the TBM/HU and the SDP:

### InitiateDiscrepancyCheck

This message is for SDP to request TBM/HU to initiate DescrepancyCheck for updates.

#### InitiateDescrepancyCheck Example Message:

`timestamp: 1490885867532 messageId: 11 messages { [com.fca.uconnect.global.initiateDescrepancyCheck] { } }`

Field | Type | Label | Description
parameters | InitiateDiscrepancyCheck.ParametersEntry | repeated |

### InitiateDiscrepancyCheck.ParametersEntry

Field | Type | Label | Description
key | string | optional |
value | string | optional |

### DiscrepancyCheck

This message is to check if there is an update available for Application.

Field | Type | Label | Description
drmFile | bytes | optional | This is the base64 encoded DRM File sent for the discrepancy check.
applicationInventory | ApplicationInventory | repeated |

### ApplicationInventory

Field | Type | Label | Description
appId | string | optional | Application identifier which is unique.
version | string | optional | Version of the Firmware that needs to be downloaded.
description | string | optional | Description to be displayed to the User

### ApplicationUpdateNotification

This message is to Push the Application to Client when there is an update available.

#### ApplicationUpdateNotification Example Message:

`timestamp: 1490885867532 messageId: 11 messages { [com.fca.uconnect.global.applicationUpdateNotification] { version: "2.0" description: "Update for ABC" expireDate: 360000 packageSize: 10000 url: "https://abc.com" checksum: "CE114E4501D2F4E2DCEA3E17B546F339" } }`

Field | Type | Label | Description
appId | string | optional | Application identifier which is unique.
version | string | optional | Version of the Firmware that needs to be downloaded.
description | string | optional | Description of the application
expireDate | int64 | optional | Time till when the Software is available for update.
packageSize | int32 | optional | Size of the Application.
url | string | optional | URL to download the App update.
checksum | string | optional | Checksum of the FW package is to ensure integrity of downloading.
token | string | optional | Token which will be sent to download server to download the App.

### UpdateStatusNotification

This message is to respond to SDP after Client installs Application Updates.

#### UpdateStatusNotification Example Message:

`timestamp: 1490885867676 messageId: 1 correlationId: 11 messages { [com.fca.uconnect.global.updateStatusNotification] { status: SUCCESS } }`

Field | Type | Label | Description
status | UpdateStatusNotification.StatusEnum | optional | Indicator for the status of the Software.
isTransient | bool | optional | Indicates a transient error and a retry can be attempted.
failureReasonCode | int32 | optional | Specific error code.
appId | string | optional | assigned ID for an application

### UpdateStatusNotification.StatusEnum

Name | Number | Description
SUCCESS_DOWNLOAD | 0 | Downloaded Successfully.
FAILURE_DOWNLOAD | 1 | Download failed from download server.
UPTODATE | 4 | This Software update is already installed.
SUCCESS_INSTALL | 5 | Installation Successful
FAILURE_INSTALL | 6 | Application installation failed.
SUCCESS_UNINSTALL | 7 | Application Uninstallation Successful
FAILURE_UNINSTALL | 8 | Application Uninstallation failed.

### Where to Find the ProtoBuf File

Click here to download Protobuf.

## Global_Uconnect_Ext_Auth.proto (Version 1.0)

###

###

###

    This API supports the client sending both User and Device identifier and credentials to the SDP.
     For Users the SDP replies with the login results.  Upon successful login, the SDP will push a provisioning message to the client with personal account settings associated with the provided user identity.
    The API is also to support a personal account.  The SDP must know the identity of the user prior to delivering personal account data to the vehicle. For vehicle authorization, commmonly referred to as Bootstrap, the vehicle will send an initial auth key consisting of hash of client generated challengekey and a nonce (a trust id to be identified in implementation)
    and will recieve in return a server challenge key and nonce. These will be used to generate a temporary session key, which when passed to the server will return a valid sessionid. Once received, the valid sessionId should be used in the Uconnect Message.SessionID filed for all future Uconnect Messages
    until it is refreshed.
     	UconnectAny
    		|
    		|---- LoginRequest loginRequest (100)
    		|
    		|---- LoginResponse loginResponse (101)
    		|
    		|---- LogoutRequest LogoutRequest (102)
    		|
    		|---- LogoutResponse logoutResponse (103)   Change Log

    	VersionDateNotes

    1.82018-05-30Added Token Request and Response for Navigation - NavAutheRequest and Response
    1.72018-05-30Added Token Request and Response for Eco Coaching
    1.62018-03-12Removing bootstrap
    		1.52017-12-11Adding  bootstrap
       1.32017-11-2Update to Proto3
     	1.22017-09-27Update to include responses
     	1.12017-03-22Session Id is Changed to Bytes
    	1.02017-02-14Release of initial Proto
    	 List of MQTT Topics

    	FlowTypeTopic Name

      Cloud send to VehiclePublishfcasdp/${iot:ClientId}/AUTH/
    	 Cloud receive from VehicleSubscribefcasdp/AUTH/#
    	 Vehicle send to Cloud Publishfcasdp/AUTH/${iot:ClientId}
    	 Vehicle receive from CloudSubscribefcasdp/${iot:ClientId}/AUTH

     Data FlowThe following sequence diagram shows the messages for implementing login/logout to support securely accessing the personal account information managed by the SDP:
    *

### NavAuthRequest

Field | Type | Label | Description
token | bytes | optional | Use for Token Refresh Requests
provider | NavAuthResponse.ProviderId | optional | ProviderID

### servicesList

Field | Type | Label | Description
serviceID | string | optional |

### NavAuthResponse

Field | Type | Label | Description
response | NavAuthResponse.ResponseEnum | optional |
sessionId | bytes | optional | Session ID for the current login
isTransient | bool | optional | Indicates a transient error and a retry can be attempted.
failureReasonCode | int32 | optional | Specific error code.
tokenFile | bytes | optional | Use for token, or for Tom Tom the XML including token and services
ServiceIDs | servicesList | repeated |
tokenExpiration | string | optional |
providerEnum | NavAuthResponse.ProviderId | optional |

### NavAuthResponse.ResponseEnum

Name | Number | Description
SUCCESS | 0 | Success
NOT_AUTHORIZED | 1 | NOT_AUTHORIZED
FAILURE | 2 | FAILURE

### NavAuthResponse.ProviderId

Name | Number | Description
TOMTOM | 0 |
TELENAV | 1 |

### ProfileTokenRequest

Field | Type | Label | Description
userName | string | optional | Username for Eco Coaching
Credential | bytes | optional | Credential for Eco Coaching, should be encrypted

### ProfileTokenResponse

Field | Type | Label | Description
response | ProfileTokenResponse.ResponseEnum | optional |
sessionId | bytes | optional | Session ID for the current login
isTransient | bool | optional | Indicates a transient error and a retry can be attempted.
failureReasonCode | int32 | optional | Specific error code.
profileToken | bytes | optional | Returned Profile Token

### ProfileTokenResponse.ResponseEnum

Name | Number | Description
SUCCESS | 0 | Success
NOT_AUTHORIZED | 1 | NOT_AUTHORIZED
FAILURE | 2 | FAILURE

### LoginRequest

Field | Type | Label | Description
access | LoginRequest.AccessLevelEnum | optional | Is this initial login or a pin authorized login.
identifier | string | optional | Login Id for current user.
credentials | string | optional | Password for current user
token | bytes | optional | For passing authorization tokens

### LoginRequest.AccessLevelEnum

Name | Number | Description
BASE | 0 | Base Enumeration
PIN_AUTHORIZED | 1 | Pin Authorized
TOKENAUTHORIZED | 2 | For Eco Coaching Profiles

### LoginResponse

This is for loginResponse.

#### Login Response Example Message:

``

timestamp: 1488868821160

messageId: 1

correlationId: 1

messages

{

[com.fca.uconnect.global.loginResponse]

{

response: SUCCESS

sessionId: "-\0274\302]\325\324 \354K"

}

}

Field | Type | Label | Description
response | LoginResponse.ResponseEnum | optional |
sessionId | bytes | optional | Session ID for the current login
isTransient | bool | optional | Indicates a transient error and a retry can be attempted.
failureReasonCode | int32 | optional | Specific error code.

### LoginResponse.ResponseEnum

Name | Number | Description
SUCCESS | 0 | Success
NOT_AUTHORIZED | 1 | NOT_AUTHORIZED
FAILURE | 2 | FAILURE

### LogoutRequest

The LogoutRequest has no data elements.

#### LogoutRequest Example Message:

``

timestamp: 1488869130664

messageId: 20

messages

{

[com.fca.uconnect.global.logoutRequest]

{

}

}

Field | Type | Label | Description

### LogoutResponse

This will be response to LogoutRequest.

#### LogoutResponse Example Message:

``

timestamp: 1488869130739

messageId: 22

correlationId: 20

messages

{

[com.fca.uconnect.global.logoutResponse]

{

response: SUCCESS

}

}

Field | Type | Label | Description
response | LogoutResponse.LogoutResponseEnum | optional | This is an enum which identifies whether logout is successful or has failed.
isTransient | bool | optional | Indicates a transient error and a retry can be attempted.
failureReasonCode | int32 | optional | Specific error code.

### LogoutResponse.LogoutResponseEnum

Name | Number | Description
SUCCESS | 0 | Success
FAILURE | 1 | Failure

### Where to Find the ProtoBuf File

Click here to download Protobuf.

## Global_Uconnect_Ext_CommCheck.proto (Version 1.0)

###

###

    The Proto is to utilize the common Authorization and Comm Check Messages, often referred to as bootstrap.UconnectAny
    	   |
    	   |---- CommCheckRequest
    	   |
    	   |---- CommCheckResponse
    	   |
    	      	   |
    	   |---- AckMessage  Change Log

    	VersionDateNotes

       1.12018-07-16Added DRM Hash for the opportunity to combine CommCheck and ProvisioningRequest
       1.02017-12-111st Drafted

    	FlowTypeTopic Name

    Cloud send to VehiclePublishfcasdp/${iot:ClientId}/CCHK
    Cloud receive from VehicleSubscribefcasdp/CCHK/#
    Vehicle send to Cloud Publishfcasdp/CCHK/${iot:ClientId}
    Vehicle receive from Cloud Subscribefcasdp/${iot:ClientId}/#
    Data Flow
    The following sequence diagram depicts the flow of messages between the Vehicle and the SDP: *

### CommCheckRequest

Field | Type | Label | Description
vehicleId | string | optional | VIN or other unique identifier for the vehicle this Telematics Unit is installed in.
device1 | Device | optional |
drmHash | bytes | optional | Hash of the DRM from the Signature
additionalModemParams | CommCheckRequest.AdditionalModemParamsEntry | repeated | This can be used as key value pair for additional Modem Identifiers. And should contain key value pairs for parameters identified in the TC Client Specification
reason | CommCheckRequest.ReasonEnum | optional |

### CommCheckRequest.ReasonEnum

Name | Number | Description
IGNITION_CYCLE_CHECK | 0 | IGNITION_CYCLE_CHECK
TBM_FLASH | 1 | TBM_FLASH
HU_FLASH | 2 | HU_FLASH
ON_DEMAND | 3 | ON_DEMAND
MISDN_MISMATCH | 4 | MISDN_MISMATCH
DISCREPENCY_CHECK | 5 | DISCREPENCY_CHECK
SOFTWARE_REFRESH | 6 | SOFTWARE_REFRESH
HU_SWAP | 7 | HU_SWAP
TBM_SWAP | 8 | TBM_SWAP
ENROLLMENT | 9 | ENROLLMEN

### CommCheckRequest.AdditionalModemParamsEntry

Field | Type | Label | Description
key | string | optional |
value | string | optional |

### CommCheckResponse

Field | Type | Label | Description
response | CommCheckResponse.ResponseEnum | optional |
isTransient | bool | optional | Indicates a transient error and a retry can be attempted.
failureReasonCode | int32 | optional | Specific error code.

### CommCheckResponse.ResponseEnum

Name | Number | Description
SUCCESS | 0 | Comm check successful
FAILURE | 1 | Comm check failed

### InitiateCommCheck

Field | Type | Label | Description
parameters | InitiateCommCheck.ParametersEntry | repeated | This can be used as key value pair for additional Modem Identifiers. And should contain key value pairs for parameters required to trigger the comm check

### InitiateCommCheck.ParametersEntry

Field | Type | Label | Description
key | string | optional |
value | string | optional |

### Where to Find the ProtoBuf File

Click here to download Protobuf.

## Global_Uconnect_Ext_ConnectedPages.proto (Version 1.0)

###

###

###

    *

    This API is to upload Data Gathered for Pages Coaching and Connected Brand Pages.
      UconnectAny
        |
        |---- UploadPagesData UploadPagesData (2000)  Change Log

    	VersionDateNotes

      1.3/td>2018-10-16Removed Eco Coaching
      1.22018-07-23Updated Sequence Diagram
      1.12018-05-18Added Token Elements Required for profile.
      1.02018-03-12Release of initial Proto
    	 List of MQTT Topics

    	FlowTypeTopic Name

      Cloud send to VehiclePublishfcasdp/${iot:ClientId}/PGS
    	 Cloud receive from VehicleSubscribefcasdp/PGS/#
    	 Vehicle send to Cloud Publishfcasdp/PGS/${iot:ClientId}
    	 Vehicle receive from Cloud Subscribefcasdp/${iot:ClientId}/#

    Data FlowThe following sequence diagram depicts the flow of messages between the TBM and the SDP:
    	SequenceTitleRoleMessageTopicDescription

    1.Publish message from vehicleTBMThe in-vehicle UploadPagesData event which triggers the client device to send an UploadPagesData Message to the SDP.
    2.Assign MessageIdTBMThe client generates the messageId for the message by incrementing a sequence counter.
    3.Send UploadPagesData MessageTBMUploadPagesData/PGS/${iot:ClientId}The client populates the UploadPagesData Message with the required elements and publishes to the PERFORMANCE topic.
    4.1Process MessageSDPThe SDP processes the message and generates an ACK Message with the status and assign correct correlationId.
    4.2.Assign correlationIDSDPAssign correct correlationId.
    5send AckMessageSDPAckMessage/PGS/${iot:ClientId}The SDP sends AckMessage to acknowledge that it received UploadPagesData Message.
    6Process AckMessageTBMThe client process AckMessage.

### UploadPagesData

Field | Type | Label | Description
userID | string | optional | Same as ID used for the Personal Login, used for routing only
webSite | string | optional | Targeted Web Address
tripID | string | optional | Trip ID for ECO or Off Road Trip data
dataTyped | UploadPagesData.dataUploadTypeEnum | optional | Data Type EcoTrip, BrandTrip, Trail, Status, Event
tripData | bytes | optional | Data being uploaded
profileToken | bytes | optional | Token obtained for Eco Coaching Profile

### UploadPagesData.dataUploadTypeEnum

Name | Number | Description
BASE | 0 | Required Default value
BRANDTRIP | 2 | Trip data for Brand/Offroad Pages
TRAIL | 3 | Performance Data for Trails Upload
STATUS | 4 | Status Data to be uploaded
EVENT | 5 | Event based data upload [i.e. Ingition Off/On]

### Where to Find the ProtoBuf File

Click here to download Protobuf.

## Global_Uconnect_Ext_ECall.proto (Version 1.0)

###

###

###

    This is to define Emergency Call.When ECall is triggered, Phone call will be dialed out to the call center.The operator may expect to see the vehicle related information when the phone call is connected. Client  gathers vehicle information and send it out.
    Before the phone call is connected, the user also has the chance to cancel the Ecall.
    	 UconnectAny
    	   |
    	   |---- ECallDataUpload ecallDataUpload (160)
    	   |
    	   |---- ECallStatusUpdate ecallStatusUpdate (161)
    	   |
    	   |---- ECallVehDataRequest ecallVehDataRequest (162)
    	   |
    	   |---- ECallVehDataResponse ecallVehDataResponse (163)  Change Log

    	VersionDateNotes

     * 2.12018-08-20Added RequestECallPhoneNumbers and crashDetected structure
    2.02018-06-19Added UpdateECallPhoneNumbers
    1.92017-05-12Sequence Diagram and Documentation Updates
     1.82017-11-2Update to Proto3
     1.72017-09-27Add response to return error code.
     1.62017-09-20Added ACK Message and additional Enum fields to EcallStatus.
     1.52017-07-07Call Status is added to EcallVehDataRequest.
     1.42017-06-30Added new fields like trigger mode,Device.
     1.32017-04-19Moved VehicleInfo to UconnectControl.
     1.22017-04-18Moved  key value for status of each door/window/hood/trunk.
     1.12017-04-12Removed isTestCall,fuelRemaining,TyrePressure,VIN & isPositionTrusted and added odometer,language,country and estimatedHeadingError .
    	1.02017-03-09Release of initial Proto.
    	 List of MQTT Topics

    	FlowTypeTopic Name

      Cloud send to VehiclePublishfcasdp/${iot:ClientId}/ECAL
    	 Cloud receive from VehicleSubscribefcasdp/ECAL/#
    	 Vehicle send to Cloud Publishfcasdp/ECAL/${iot:ClientId}
    	 Vehicle receive from Cloud Subscribefcasdp/${iot:ClientId}/#

    Data Flow
    The following sequence diagram depicts the flow of messages between the TBM and the SDP:
    	SequenceTitleRoleMessageTopicDescription

    1.ECALL EventTBMThe in-vehicle ECALL event which triggers the client device to send an ECALLDATA to the SDP.
    2.Assign MessageIdTBMThe client generates the messageId for the message by incrementing a sequence counter.
    3.Send ECallDataUpload MessageTBMECallDataUpload/ECAL/${iot:ClientId}The client populates the ECallDataUpload Message with the required elements and publishes to the ECAL topic.
    4.1Process MessageSDPThe SDP processes the message and waits for call through ECallStatusUpdate.
    4.2.Assign correlationIDSDPAssign correct correlationId.
    5send AckMessageSDPAckMessage/ECAL/${iot:ClientId}The SDP sends AckMessage to acknowledge that it received ECallDataUpload Message.
    6Process AckMessageTBMThe client process AckMessage.
    optstep 5 is opt means The interaction operator opt means that the combined fragment represents a choice of behavior where either the (sole) operand happens or nothing happens.
    7.Send ECallStatusUpdate messageTBMECallStatusUpdate/ECAL/${iot:ClientId}The client populates the ECallStatusUpdate Message with the required elements and publishes to the ECAL topic.
    8.1Process MessageSDPThe SDP processes the message.
    8.2.Assign correlationIDSDPAssign correct correlationId.
    9.send AckMessageSDPAckMessage/ECAL/${iot:ClientId}The SDP sends AckMessage to acknowledge that it received ECallStatusUpdate Message.
    10.Process AckMessageTBMThe client process AckMessage.
    11.ECall Data Query EventSDPThe SDP can continuously request client for Ecall Data through EcallVehDataRequest.
    loopstep 11 to 15 are in loop means the interaction operator loop means that the combined fragment represents a loop. The loop operand will be repeated a number of times. The loop construct represents a recursive application of the seq operator where
    															   the loop operand is sequenced after the result of earlier iterations.
    12.Send ECallVehDataRequest MessageSDPECallVehDataRequest${iot:ClientId}/ECALThe SDP publishes the ECALLVehDataRequest with NOT_TERMINATED enum and publishes to the ECAL topic for the client to receive.
    13.Process MessageTBMThe client receives the message .
    14.Send ECallVehDataResponse MessageTBMECallVehDataResponse${iot:ClientId}/ECALThe Client populates the ECallVehDataResponse message to the ECAL topic for the client to receive.
    15.Process MessageSDPThe SDP receives the message and verifies the data and proceed accordingly.
    16.Send ECallStatusUpdate messageSDPECallStatusUpdate${iot:ClientId}/ECALThe SDP populates the ECallStatusUpdate Message with the Call status as Terminated and publishes to the ECAL topic.
    17.Process MessageTBMThe Client processes the message and Acknowledges that Call is Terminated.
    18.Send ECallVehDataRequest MessageSDPECallVehDataRequest${iot:ClientId}/ECALThe SDP publishes the ECALLVehDataRequest with TERMINATED enum to mention that this is the last request for data after the call is terminated and publishes to the ECAL topic for the client to receive .
    19.Process MessageTBMThe client process the message .
    20.Send ECallVehDataResponse MessageTBMECallVehDataResponse${iot:ClientId}/ECALThe Client populates the ECallVehDataResponse message to the ECAL topic for the client to receive.
    21.Process MessageSDPThe SDP receives the message and verifies the data and proceed accordingly.

### ECallDataUpload

This message represents ECall DataUpload for emergencies and accidents.

#### ECallDataUpload Example Message:

`timestamp: 1489600238258 messageId: 1 messages { [com.fca.uconnect.global.ecallDataUpload] { vehicleId: "1234AXFGFGHGH4566" isPositionTrusted: true timeStamp: 1489600238256 vehicleLocation { longitude: 43.9999 latitude: -84.54636 } numberOfPassengers: 1 airBagStatus { driver: false driverKnee: false passenger: false passengerKnee: false leftSideCurtain: false leftSeat: false rightSeat: false } vehicleSpeed: 75.0 engineStatus: STOP } }`

Field | Type | Label | Description
vehicleInfo | VehicleInfo | optional | This message is to get the Vehicle Information.
vehicleData | VehicleData | optional | Get Vehicle Health Data
timeStamp | int64 | optional | The milliseconds since Jan 1, 1970 00:00:00 UTC when the message is created. Should come from the system clock of the sender.
numberOfPassengers | int32 | optional | This represents number of passengers present in the Veh.
airBagStatus | ECallDataUpload.AirBagStatus | optional | This represents whether airbags are deployed or not.
seatOccupied | ECallDataUpload.SeatState | optional | This represents which seats are occupied in the vehicle.
beltBuckled | ECallDataUpload.SeatState | optional | This represents which seat belts are buckled.
vehicleStatus | VehicleStatus | optional | Status of each door/window/hood/trunk.
triggerMode | ECallDataUpload.TriggerModeEnum | optional | Trigger mode of the data upload.
deviceDetails | Device | optional | Device Identification Details.
crashDetected | ECallDataUpload.CrashDetectedEnum | optional | Crash Detected CanImpactEven toggle bit
crashDetails | ECallDataUpload.CrashDetection | repeated |

### ECallDataUpload.TriggerModeEnum

Name | Number | Description
MANUAL | 0 |
AUTOMATIC | 1 |

### ECallDataUpload.CrashDetectedEnum

Name | Number | Description
NO | 0 |
YES | 1 |

### ECallDataUpload.AirBagStatus

Field | Type | Label | Description
isDriver | bool | optional | Identifies as the main Driver Airbag
isDriverKnee | bool | optional | Identifies as the Driver Knee Airbag
isPassenger | bool | optional | Identifies as the main Passenger Airbag
isPassengerKnee | bool | optional | Identifies as the Passenger Knee Airbag
isLeftSideCurtain | bool | optional | Identifies as the Left Side Curtain Airbag
isRightSideCurtain | bool | optional | Identifies as the Right Side Curtain Airbag
isLeftSeat | bool | optional | Identifies as the Left Seat Airbag
isRightSeat | bool | optional | Identifies as the Right Seat Airbag

### ECallDataUpload.SeatState

Field | Type | Label | Description
isFrontLeft | bool | optional | identifies whether Front Left Seat Occupied.
isFrontRight | bool | optional | identifies whether Front Right Seat Occupied.
isRearLeft | bool | optional | identifies whether Rear Left Seat Occupied.
isRearRight | bool | optional | identifies whether Rear Right Seat Occupied.
isRearMiddle | bool | optional | identifies whether Rear Middle Seat Occupied.
isTailLeft | bool | optional | identifies whether Tail Left Seat Occupied.
isTailRight | bool | optional | identifies whether Tail RightSeat Occupied.

### ECallDataUpload.CrashDetection

Field | Type | Label | Description
isFrontPreTension | bool | optional | Front Pretention Event .
isEarsRear | bool | optional | Rear EARs event.
isHighSevFront | bool | optional | High Severity Front Event.
isSideEvent | bool | optional | Side Impact Event.
isRearEvent | bool | optional | Rear Impact Event.
isLowSevFront | bool | optional | Low Severity Front Event.
isNonEarRoll | bool | optional | Non-Ears Roll-over Event.
isEarRoll | bool | optional | EARs roll-over event.
isLeftSideEvent | bool | optional | Left Side Event.
isSideEvent2 | bool | optional | Side Event[5]
isRightSideEvent | bool | optional | Right Side Event.
isPedestrianCrash | bool | optional | Pedestrian Crash Event.
isUknownType | bool | optional | General Event Indicator.

### ECallStatusUpdate

This message is to update the status of the call.

#### ECallStatusUpdate Example Message:

`timestamp: 1489600243281 messageId: 2 messages { [com.fca.uconnect.global.ecallStatusUpdate] { ecallStatusEnum: DIAL } }`

Field | Type | Label | Description
ecallStatusEnum | ECallStatusUpdate.ECallStatusEnum | optional |

### ECallStatusUpdate.ECallStatusEnum

Name | Number | Description
DIAL | 0 | Dialing
CANCELLED | 1 | This represents the call is cancelled.
TERMINATED | 2 | This represents the call is terminated.
DROPPED_CALL | 3 | This is sent when TBM detects dropped call without a terminate tone.
CALL_FAILED | 4 | This is sent when TBM fails to Establish CALL.

### ECallVehDataRequest

This message is to request Veh data from Client and it has no elements.

#### ECallVehDataRequest Example Message:

`timestamp: 1489600243281 messageId: 1 messages { [com.fca.uconnect.global.ecallVehDataRequest] { callStatus:TERMINATED } }`

Field | Type | Label | Description
callStatus | ECallVehDataRequest.CallStatusEnum | optional |

### ECallVehDataRequest.CallStatusEnum

Name | Number | Description
TERMINATED | 0 | Terminated
TERMINATED_OTHER | 1 | Terminated for Other Reasons.
NOT_TERMINATED | 2 | Call is not terminated ,send the data and stay on line.

### ECallVehDataResponse

This message sends Veh data to SDP when it requests for Veh data.

#### ECallVehDataRequest Example Message:

`timestamp: 1489600243281 messageId: 3 messages { [com.fca.uconnect.global.ecallVehDataResponse] { ecallDataUpload { vehicleId: "1234AXFGFGHGH4566" isPositionTrusted: true timeStamp: 1489600238256 vehicleLocation { longitude: 43.9999 latitude: -84.54636 } numberOfPassengers: 1 airBagStatus { driver: false driverKnee: false passenger: false passengerKnee: false leftSideCurtain: false leftSeat: false rightSeat: false } vehicleSpeed: 75.0 tyrePressure: 45.0 engineStatus: STOP } } } }`

Field | Type | Label | Description
eCallDataUpload | ECallDataUpload | optional |
response | ECallVehDataResponse.ResponseEnum | optional | Response (Success or Failure)
isTransient | bool | optional | Indicates a transient error and a retry can be attempted.
failureReasonCode | int32 | optional | Specific error code.

### ECallVehDataResponse.ResponseEnum

Name | Number | Description
SUCCESS | 0 |
FAILURE | 1 |

### UpdateEcallPhoneNumbers

Field | Type | Label | Description
phoneList | bytes | optional |
phoneListMessages | PhoneListMessage | repeated |

### PhoneListMessage

Field | Type | Label | Description
EnableCallType | bool | optional |
PrimaryPhoneNumber | string | optional | Primary Phone Number for the feature
SecondaryPhoneNumber | string | optional | Secondary Phone Number for the feature
callTypeEnum | PhoneListMessage.CallType | optional |

### PhoneListMessage.CallType

Name | Number | Description
SOS | 0 |
ASOS_IMPACT | 1 |

### RequestEcallPhoneNumbers

Field | Type | Label | Description
phoneListMessages | PhoneListMessage | repeated |

### Where to Find the ProtoBuf File

Click here to download Protobuf.

## Global_Uconnect_Ext_Eco_Coaching.proto (Version 1.0)

###

###

###

    *

    This API is to upload Data Gathered for Eco Coaching .
      UconnectAny
        |
        |---- UploadCoachingData UploadCoachingData   Change Log

    	VersionDateNotes
        1.02018-10-16Seperated from ConnectedPages
    	 List of MQTT Topics

    	FlowTypeTopic Name

      Cloud send to VehiclePublishfcasdp/${iot:ClientId}/ECO
    	 Cloud receive from VehicleSubscribefcasdp/ECO/#
    	 Vehicle send to Cloud Publishfcasdp/ECO/${iot:ClientId}
    	 Vehicle receive from Cloud Subscribefcasdp/${iot:ClientId}/ECO

    Data FlowThe following sequence diagram depicts the flow of messages between the TBM and the SDP:

### UploadCoachingData

Field | Type | Label | Description
userID | string | optional | Same as ID used for the Personal Login, used for routing only
webSite | string | optional | Targeted Web Address
tripID | string | optional | Trip ID for ECO
dataTyped | UploadCoachingData.dataUploadTypeEnum | optional | Data Type EcoTrip, BrandTrip, Trail, Status, Event
tripData | bytes | optional | Data being uploaded
profileToken | bytes | optional | Token obtained for Eco Coaching Profile

### UploadCoachingData.dataUploadTypeEnum

Name | Number | Description
BASE | 0 | Required Default value
ECOTRIP | 1 | Trip Data for Eco
STATUS | 4 | Status Data to be uploaded
EVENT | 5 | Event based data upload [i.e. Ingition Off/On]

### Where to Find the ProtoBuf File

Click here to download Protobuf.

## Global_Uconnect_Ext_FOTA.proto (Version 1.0)

###

###

###

    This API notify the FOTA client of an update.  The FOTA client will manage downloading the update most likely through a different channel (https).
      UconnectAny
        |
        |---- FirmwareUpdateNotification firmwareUpdateNotification (400)
        |
        |---- FirmwareUpdateResponse firmwareUpdateResponse (401)  Change Log

    	VersionDateNotes

       1.22017-11-2Update to Proto3
    	1.12017-09-27Update response
    	1.02017-03-29Release of initial Proto
    	 List of MQTT Topics

    	FlowTypeTopic Name

      Cloud send to VehiclePublishfcasdp/${iot:ClientId}/FOTA
    	 Cloud receive from VehicleSubscribefcasdp/FOTA/#
    	 Vehicle send to Cloud Publishfcasdp/FOTA/${iot:ClientId}
    	 Vehicle receive from Cloud Subscribefcasdp/${iot:ClientId}/#

    Data FlowThe following sequence diagram depicts the flow of messages between the TBM/HU and the SDP:
    	SequenceTitleRoleMessageTopicDescription

     1.Firmware Update EventSDPThe FirmwareUpdate event which triggers the SDP device to send an FirmwareUpdate Notification to Client.
    1.2.Assign MessageIdSDPThe SDP generates the messageId for the message by incrementing a sequence counter.
    2.Send FirmwareUpdateNotification MessageSDPFirmwareUpdateNotification${iot:ClientId}/FOTAThe SDP populates the FirmwareUpdateNotification Message with the required elements and publishes to the FOTA topic.
    3.1.Process MessageTBM/HUThe Client process the message,verify the update and download it from URL and respond and generates an FirmwareUpdateResponse Message with the status .
    3.2.Assign correlationIDTBM/HUAssign correct correlationId.
    4.Send FirmwareUpdateResponse MessageTBM/HUFirmwareUpdateResponse/FOTA/${iot:ClientId}The Client publishes the response message to the FOTA topic for the SDP to receive.
    5.1Process MessageSDPThe SDP receives the message and verifies if correlationId is correct.
    5.2Assign CorrelationIDTBM/HUAssign correct correlationId.
    6.1send AckMessageSDPAckMessage/FOTA/${iot:ClientId}The SDP sends AckMessage to acknowledge that it received FirmwareUpdateResponse.
    6.2Process AckMessageTBM/HUThe client process AckMessage.

### FirmwareUpdateNotification

This message is to Push the Firmware to Client when there is an update available.

#### FirmwareUpdateNotification Example Message:

`timestamp: 1490885867532 messageId: 11 messages { [com.fca.uconnect.global.firmwareUpdateNotification] { firmwareDescriptor { firmwareVersion: "2.0" ecuAddress: 956488 description: "Update for ABC" expireDate: 360000 packageSize: 10000 url: "https://abc.com" checksum: "CE114E4501D2F4E2DCEA3E17B546F339" } fotaTaskId: "AXCSEA1234" } }`

Field | Type | Label | Description
firmwareDescriptor | FirmwareUpdateNotification.FirmwareDescriptor | repeated | Firmware Descriptor
fotaTaskId | string | optional | FOTA Task ID

### FirmwareUpdateNotification.FirmwareDescriptor

Field | Type | Label | Description
firmwareVersion | string | optional | Version of the Firmware that needs to be download.
ecuAddress | int32 | optional | Diagnostic ECU ID.
description | string | optional | Description of the firmware update - This field is mandatory for Red Bend Clients
token | string | optional | Token which will be sent to download server to download the Firmware.
expireDate | int64 | optional | Time till when the Software is available for update.
packageSize | int32 | optional | Size of the Firmware update.
url | string | optional | URL to download the firmware update.
checksum | string | optional | Checksum of the FW package is to ensure integrity of downloading.
firmwareType | FirmwareUpdateNotification.FirmwareDescriptor.FirmwareType | optional |

### FirmwareUpdateNotification.FirmwareDescriptor.FirmwareType

Name | Number | Description
MAPDB | 0 | Map update
HUHMI | 1 | Head Unit HMI
OS | 2 | Operating System Patch
HARDWARE_DRIVER | 3 | Hardware Driver
CALIBRATION | 4 | Calibration
CODING | 5 | Application Code

### FirmwareUpdateResponse

This message is to respond to SDP after Client installs Firmware Updates.

#### FirmwareUpdateResponse Example Message:

`timestamp: 1490885867676 messageId: 1 correlationId: 11 messages { [com.fca.uconnect.global.firmwareUpdateResponse] { responseEnum: SUCCESS } }`

Field | Type | Label | Description
response | FirmwareUpdateResponse.ResponseEnum | optional | Indicator for the status of the FirmwareUpdate.
isTransient | bool | optional | Indicates a transient error and a retry can be attempted.
failureReasonCode | int32 | optional | Specific error code.

### FirmwareUpdateResponse.ResponseEnum

Name | Number | Description
SUCCESS | 0 | Received the Notification.
DOWNLOAD_FAILED | 1 | Downaload Failed from Download server.
CHECKSUM_FAILED | 2 | CheckSum Failed while calculating.
DECRYPTION_FAILED | 3 | Decryption Failure
UPTODATE | 4 | This Firmware update is already installed.

### Where to Find the ProtoBuf File

Click here to download Protobuf.

## Global_Uconnect_Ext_IVH.proto (Version 1.0)

###

###

###

    IVH-In Vehicle Help,This API is to notify when new Help Content is available for download.  The IVH client will manage downloading the update most likely through a different channel (https).
      UconnectAny
        |
        |---- InitiateIVHDiscrepancyCheck
        |
        |---- IVHDiscrepancyCheck
        |
        |---- ContentUpdateNotification contentUpdateNotification
        |
        |---- ContentUpdateStatusNotification ContentUpdateStatusNotification

      Change Log

    	VersionDateNotes

       1.22017-11-2Update to Proto3
    	1.02017-10-25Release of initial Proto
    	 List of MQTT Topics

    	FlowTypeTopic Name

      Cloud send to VehiclePublishfcasdp/${iot:ClientId}/IVH
    	 Cloud receive from VehicleSubscribefcasdp/IVH/#
    	 Vehicle send to Cloud Publishfcasdp/IVH/${iot:ClientId}
    	 Vehicle receive from Cloud Subscribefcasdp/${iot:ClientId}/#

    Data FlowThe following sequence diagram depicts the flow of messages between the HU and the SDP:
    	SequenceTitleRoleMessageTopicDescription

    1.1Content Update EventSDPThe ContentUpdate event which triggers the SDP device to send an InitiateDescrepancyCheck message to Client.
    1.2Assign MessageIdSDPThe SDP generates the messageId for the message by incrementing a sequence counter.
    2.Send InitiateDescrepancyCheck MessageSDPInitiateDescrepancyCheck${iot:ClientId}/IVHThe SDP populates the InitiateDescrepancyCheck Message with the required elements and publishes to the IVH topic.
    3.1Process MessageHUThe Client process the message, generates an DescrepancyCheck Message with the DRM .
    3.2Assign correlationIDHUAssign correct correlationId.
    4.Send DescrepancyCheck MessageHUDescrepancyCheck${iot:ClientId}/IVHThe Client populates the DescrepancyCheck Message with the required elements and publishes to the IVH topic.
    5Process MessageHUThe Client process the message, generates an DescrepancyCheck Message with the DRM .
    6.Send ContentUpdateNotification MessageSDPContentUpdateNotification${iot:ClientId}/IVHThe SDP populates the ContentUpdateNotification Message with the required elements and publishes to the IVH topic.
    7.1.Process MessageHUThe Client process the message,verify the update and download it from URL and respond and generates an ContentUpdateStatusNotification Message with the status .
    7.2.Assign correlationIDHUAssign correct correlationId.
    8.Send ContentUpdateStatusNotification MessageHUContentUpdateStatusNotification/IVH/${iot:ClientId}The Client publishes the response message to the IVH topic for the SDP to receive.
    9.1.Process MessageSDPThe SDP receives the message and verifies the correlationId matches the messageId of the sent request.
    9.2.Assign correlationIDHUAssign correct correlationId.
    10send AckMessageSDPAckMessage/IVH/${iot:ClientId}The SDP sends AckMessage to acknowledge that it received ContentUpdateStatusNotification.
    11Process AckMessageHUThe client process AckMessage.

### InitiateIVHDiscrepancyCheck

This message is for SDP to request HU to initiate DescrepancyCheck for updates.

#### InitiateIVHDescrepancyCheck Example Message:

`timestamp: 1490885867532 messageId: 11 messages { [com.fca.uconnect.global.initiateDescrepancyCheck] { } }`

Field | Type | Label | Description
parameters | InitiateIVHDiscrepancyCheck.ParametersEntry | repeated |

### InitiateIVHDiscrepancyCheck.ParametersEntry

Field | Type | Label | Description
key | string | optional |
value | string | optional |

### IVHDiscrepancyCheck

This message is to check if there is an update available for Content.

Field | Type | Label | Description
drm | DRM | optional | DRM file upload for discrepancy Check

### ContentUpdateNotification

This message is to Push the Help Content to Client when there is an update available.

#### ContentUpdateNotification Example Message:

`timestamp: 1490885867532 messageId: 11 messages { [com.fca.uconnect.global.contentUpdateNotification] { version: "2.0" description: "Update for ABC" expireDate: 360000 packageSize: 10000 url: "https://abc.com" checksum: "CE114E4501D2F4E2DCEA3E17B546F339" } }`

Field | Type | Label | Description
contentId | string | optional | Content identifier which is unique.
version | string | optional | Version of the Firmware that needs to be downloaded.
description | string | optional | Description to be displayed to the User
expireDate | int64 | optional | Time till when the Software is available for update.
packageSize | int32 | optional | Size of the Content.
url | string | optional | URL to download the Content update.
checksum | string | optional | Checksum of the FW package is to ensure integrity of downloading.
token | string | optional | Token which will be sent to download server to download the Content.

### ContentUpdateStatusNotification

This message is to respond to SDP after Client installs Content Updates.

#### ContentUpdateStatusNotification Example Message:

`timestamp: 1490885867676 messageId: 1 correlationId: 11 messages { [com.fca.uconnect.global.ContentUpdateStatusNotification] { status: SUCCESS } }`

Field | Type | Label | Description
status | ContentUpdateStatusNotification.StatusEnum | optional | Indicator for the status of the FirmwareUpdate.
isTransient | bool | optional | Indicates a transient error and a retry can be attempted.
failureReasonCode | int32 | optional | Specific error code.
appId | string | optional | Application ID

### ContentUpdateStatusNotification.StatusEnum

Name | Number | Description
SUCCESS | 0 | Updated Successfully.
FAILURE | 1 | Download Failed from Download server.
UPTODATE | 4 | This Firmware update is already installed.

### Where to Find the ProtoBuf File

Click here to download Protobuf.

## Global_Uconnect_Ext_LastMile.proto (Version 1.0)

###

###

###

    This API is to push destinations from the vehicle for Last Mile Navigation, the TBM shall send the current location and target destination's data to the SDP when the TBM is connected.
    SDP will forward the destination to consumer channel(s)

    	 UconnectAny
    	   |
    	   |---- LastMilePush lastMilePush
    	   |
    	   |---- LastMileResponse LastMileResponse (241)  Change Log

    	VersionDateNotes

       1.12018-05-15Added ServiceRequestID
       1.02018-05-15Release of initial proto
    	 List of MQTT Topics

    	FlowTypeTopic Name

      Cloud send to VehiclePublishfcasdp/${iot:ClientId}/LMN
    	 Cloud receive from VehicleSubscribefcasdp/LMN/#
    	 Vehicle send to Cloud Publishfcasdp/LMN/${iot:ClientId}
    	 Vehicle receive from Cloud Subscribefcasdp/${iot:ClientId}/#

    Data Flow
    The following sequence diagram depicts the flow of messages between the HU and the SDP:
    	SeqTitleRoleMessageTopicDescription

    1.Last Mile EventHUThe HU triggers Last Mile Navigation event which triggers LastMilePush to the SDP
    2.Assign MessageIdHUThe HU generates the messageId for the message by incrementing a sequence counter.
    3.Send LastMilePush MessageSDPLastMilePush${iot:ClientId}/SDTCThe HU populates the LastMilePush Message with the required elements and publishes to the SDP.
    4.Process MessageSDPThe HU processes the message and generates an LastMilePushResponse Message with the status and the correlationId set to the messageId from the received LastMilePush Message.
    5.Send DestinationPushResponse MessageSDPLastMilePushResponse/SDTC/${iot:ClientId}The TBM publishes the response message to the HU
    6.Process MessageHUThe HU receives the message and verifies the correlationId matches the messageId of the sent request.

### LastMilePush

This message represents list of Destinations that User Can push to the Vehicle.

#### DestinationPush Example Message:

`timestamp: 1490014360254 messageId: 11 messages { [com.fca.uconnect.global.destinationPush] { targeLocation { destinationLocation { longitude: -83.671875 latitude: 42.4802 } poi { name: "ABCD Restaurant" category: "Restaurant" id: 123 phoneNumber: "123 456 7890" description: "favorite" url: "www.abcrestaurant.com" } address { houseNbr: "1000" streetName: "Chrystler Drive" cityName: "Auburn Hills" provinceName: "Michigan" countryName: "USA" zipCode: 48326 } timestamp: 1490014360251

} currentLocation { longitude: -83.671875 latitude: 42.4802 } } }

`

Field | Type | Label | Description
targetDestination | Destination | optional | Final POI Destination information
currentLocation | Location | optional | Current Location as of Last Mile Push request
LMNRequestID | bytes | optional | Service Request ID Assigned by HU for Trace-ability

### LastMileResponse

Field | Type | Label | Description
response | LastMileResponse.ResponseEnum | optional |
LMNRequestID | bytes | optional | Assigned by the HU and used for traceability.
isTransient | bool | optional | Indicates if the error is transient and to attempt a retry.
failureReasonCode | int32 | optional | provide detailed error reason code.

### LastMileResponse.ResponseEnum

Name | Number | Description
SUCCESS | 0 | Message Delivered Successful
ERROR | 1 | Generic Error for Other App and System Level Errors

### Where to Find the ProtoBuf File

Click here to download Protobuf.

## Global_Uconnect_Ext_PC.proto (Version 1.0)

###

###

###

    This API enables the SDP to configure the TBM for Parental Control data collection and notification.
    The feature supports notifying the vehicle owner with alerts for geofencing, curfew, speed, valet, and similar events.

    	 UconnectAny
    	   |
    	   |---- PCUpdateConfigRequest
    	   |
    	   |---- PCUpdateConfigResponse
    	   |
    	   |---- PCConfiguredAlertPublish
    	   |
    	   |---- PCNotificationPublish
        |
    	   |---- AckMessage  Change Log

    	VersionDateNotes

    1.102018-09-20>
    1.92018-09-20>
    1.82018-08-30>
     1.72018-08-21>Added a ConfigActionEnum to various alerts, added timestamp to logged events and utcoffset
     1.62018-06-20Added LogAlert to Conig
    1.52018-06-20Update ConfigTypeVehicle, Added Logs Configuration and Uploads, added name to PC Config
     1.42017-11-2Update to Proto3
     1.32017-09-27Update configuration response.
     1.22017-09-15Added ACKMessage RadiusUnitsEnum.
     1.12017-04-19Added RadiusUnitsEnum.
    	1.02017-03-19Release of initial Proto.
    	 List of MQTT Topics

    	FlowTypeTopic Name

      Cloud send to VehiclePublishfcasp/${iot:ClientId}/PC
    	 Cloud receive from VehicleSubscribefcasp/PC/#
    	 Vehicle send to Cloud Publishfcasp/PC/${iot:ClientId}
    	 Vehicle receive from Cloud Subscribefcasp/${iot:ClientId}/#

    Data Flow
    The following sequence diagram depicts the flow of messages between the TBM and the SDP for regions that use PCConfiguredAlertPublish:
    	SeqTitleRoleMessageTopicDescription

    1.PC Provisioned Active EventSDPPC Provisioned active for Provisioning Push .
    parThe interaction operator par defines potentially parallel execution of behaviors of the operands of the combined fragment. Different operands can be interleaved in any way as long as the ordering imposed by each operand is preserved.
    asyncThe async means send message and proceed immediately without waiting for return value.
    2.1PCRequest EventSDPThe SDP PC Request event which triggers to send an PCUpdateConfigRequest to the Client.
    2.2Assign MessageIdSDPThe SDP generates the messageId for the message by incrementing a sequence counter.
    2.3Send PCUpdateConfigRequest MessageSDPPCUpdateConfigRequest${iot:ClientId}/PCThe SDP populates the PCUpdateConfigRequest Message with the required elements and publishes to the PC topic.
    2.4Process MessageTBMThe Client processes the message and generates an PCUpdateConfigResponse Message with the status and the correlationId set to the messageId from the received PCUpdateConfigRequest Message.
    2.5Assign CorrelationIDTBMThe correlationId set to the messageId from the received PCUpdateConfigRequest Message.
    2.6Send PCUpdateConfigResponse MessageTBMPCUpdateConfigResponse/PC/${iot:ClientId}The Client publishes the response message to the PC topic for the SDP to receive.
    2.7Process ResponseSDPThe SDP receives the message and verifies the correlationId matches the messageId of the sent request.
    3.1Trigger EventTBMOnce the PC is Configured after the appropriate out of band approval steps, the Client will build a new PCConfiguredAlertPublish Message with the required elements.
    3.2Send PCConfiguredAlertPublish MessageTBMPCConfiguredAlertPublish/PC/${iot:ClientId}The Client publishes the PCConfiguredAlertPublish message to the PC topic for the SDP to receive.
    3.3Process ConfiguredAlertSDPThe SDP receives the message and process configured Alert.
    4.1Send PCLogUploads MessageTBMPCLogUploads/PC/${iot:ClientId}The Client publishes the configured and required logs via this message
    4.2Process LogsSDPThe SDP receives the message and process the logs.
     4.3Process LogsSDPAck Message returned.

### PCUpdateConfigRequest

This message represents PCUpdateConfigRequest which triggers from SDP.

#### PCUpdateConfigRequest Example Message:

`timestamp: 1490711212633 messageId: 11 messages { [com.fca.uconnect.global.pcUpdateConfigRequest] { configTypeVehicle { speedAlerts { beginTime: 1000 endTime: 10000 activeDaysOfWeek: 1 activeDaysOfWeek: 2 thresholdAbovePostedSpeed: 60 thresholdPostedSpeedAbsent: 80 thresholdAbsolute: 70 } updateSpeedAlertConfig: true } } }`

Field | Type | Label | Description
config | ConfigTypeVehicle | optional |

### ConfigTypeVehicle

Field | Type | Label | Description
logAlerts | ConfigTypeVehicle.LogAlerts | optional | Configure Log Alerts
curfewAlerts | ConfigTypeVehicle.CurfewAlertConfig | repeated | 0 to 5 ranges
speedAlerts | ConfigTypeVehicle.SpeedAlertConfig | repeated | 0 to 5 ranges
valetAlert | ConfigTypeVehicle.ValetAlertConfig | optional | 0 or 1 configurations
geoFenceAlerts | ConfigTypeVehicle.GeoFenceAlertConfig | repeated | If exactly one GeoFenceAlert is sent, begin and end time may both be set to zero to indicate the boundary is always active

### ConfigTypeVehicle.BreachTypeEnum

Name | Number | Description
DEFAULT | 0 |
OUT_OF_BOUNDRY | 1 |
IN_BOUNDARY | 2 |
BOTH | 3 |

### ConfigTypeVehicle.UnitOfMeasure

Name | Number | Description
KILOMETERS | 0 |
MILES | 1 |

### ConfigTypeVehicle.GeoFenceType

Name | Number | Description
Polygon | 0 |
Radius | 1 |

### ConfigTypeVehicle.ConfigActionEnum

Name | Number | Description
DEFAULTACTION | 0 |
ADD | 1 |
DELETE | 2 |
UPDATE | 3 |

### ConfigTypeVehicle.LogAlerts

Field | Type | Label | Description
TripLog | bool | optional |
DriveStyle | bool | optional |
SpeedViolationReport | bool | optional |

### ConfigTypeVehicle.CurfewAlertConfig

Field | Type | Label | Description
name | string | optional | Display text name for the configuration
identifier | string | optional | the identifier of the config that was triggered will be put in the generated alert
beginTime | int32 | optional | seconds after midnight
endTime | int32 | optional | seconds after midnight
activeDaysOfWeek | int32 | repeated | 0 == Sunday, 1 == Monday ...
recurringAlert | bool | optional | should happen only once or recurring.
configAction | ConfigTypeVehicle.ConfigActionEnum | optional |

### ConfigTypeVehicle.SpeedAlertConfig

Field | Type | Label | Description
name | string | optional | Display text name for the configuration
identifier | string | optional | the identifier of the config that was triggered will be put in the generated alert
beginTime | int32 | optional | seconds after midnight
endTime | int32 | optional | seconds after midnight
activeDaysOfWeek | int32 | repeated | 0 == Sunday, 1 == Monday ...
thresholdAbovePostedSpeed | int32 | optional | if posted speed is available from Nav, alert if speed > thresholdAbovePostedSpeed + posted
thresholdPostedSpeedAbsent | int32 | optional | if nav present but posted speed currently not valid alert if speed > thresholdPostedSpeedAbsent
thresholdAbsolute | int32 | optional | alert if speed > thresholdAbsolute, unless nav is present and posted speed is available and speed <= thresholdAbovePostedSpeed + posted
recurringAlert | bool | optional | should happen only once or recurring.
configAction | ConfigTypeVehicle.ConfigActionEnum | optional |
unitOfMeasure | ConfigTypeVehicle.UnitOfMeasure | optional |

### ConfigTypeVehicle.ValetAlertConfig

Field | Type | Label | Description
isEnabled | bool | optional | Enable or disable this alert
identifier | string | optional | the identifier of the config that was triggered will be put in the generated alert
Activate | bool | optional | 0 deactivates and 1 activates
alertRadius | float | optional | Radius Units (i.e 1.2)
configAction | ConfigTypeVehicle.ConfigActionEnum | optional |
radiusUnitsEnum | ConfigTypeVehicle.UnitOfMeasure | optional | This represents whether alertRadius is in miles or kilometers.

### ConfigTypeVehicle.GeoFenceAlertConfig

Field | Type | Label | Description
name | string | optional | Display text name for the configuration
identifier | string | optional | the identifier of the config that was triggered will be put in the generated alert
beginTime | int32 | optional | seconds after midnight.
endTime | int32 | optional | seconds after midnight
geoFenceTypeEnum | ConfigTypeVehicle.GeoFenceType | optional |
activeDaysOfWeek | int32 | repeated | 0 == Sunday, 1 == Monday ...
boundaryPoints | Location | repeated |
radiusCenter | Location | optional | Center Location for Radius Fence
Radius | float | optional | Radius for Radius Fence
radiusUnitsEnum | ConfigTypeVehicle.UnitOfMeasure | optional | This represents whether alertRadius is in miles or kilometers.
recurringAlert | bool | optional | should happen only once or recurring.
breachType | ConfigTypeVehicle.BreachTypeEnum | optional |
configAction | ConfigTypeVehicle.ConfigActionEnum | optional |

### PCUpdateConfigResponse

This message is response to PCUpdateConfigRequest .

#### PCUpdateConfigResponse Example Message:

`timestamp: 1490712208347 messageId: 1 messages { [com.fca.uconnect.global.pcUpdateConfigResponse] { responseEnum: SUCCESS } }`

Field | Type | Label | Description
response | PCUpdateConfigResponse.ResponseEnum | optional | Depricated
isTransient | bool | optional | Depricated
failureReasonCode | int32 | optional | Depricated.
configResponse | PCUpdateConfigResponse.ConfigResponseType | repeated |

### PCUpdateConfigResponse.ResponseEnum

Name | Number | Description
SUCCESS | 0 | Config successful
FAILURE | 1 | Config failed
CONFIG_TYPE_NOT_ALLOWED | 3 | Config type not supported in this region
FAILURE_PRIVACY_ON | 4 | Privacy Mode On

### PCUpdateConfigResponse.ConfigResponseType

Field | Type | Label | Description
configurationResponse | PCUpdateConfigResponse.ResponseEnum | optional |
name | string | optional |
idenitfier | string | optional |
failureReasonCode | int32 | optional |
isTransient | bool | optional |

### PCConfiguredAlertPublish

This message is to notify SDP for Parental Controlconfigured Alert.

Field | Type | Label | Description
curfewAlertConfig | ConfigTypeVehicle.CurfewAlertConfig | optional | the configuration that triggered this alert
speedAlertConfig | ConfigTypeVehicle.SpeedAlertConfig | optional | the configuration that triggered this alert
valetAlertConfig | ConfigTypeVehicle.ValetAlertConfig | optional | the configuration that triggered this alert
geoFenceAlertConfig | ConfigTypeVehicle.GeoFenceAlertConfig | optional | the configuration that triggered this alert
eventLocation | Location | optional | location of the vehicle when the event was triggered
eventTimestampUTC | int64 | optional | UTC time the event was triggered
eventTimeUTCOffset | int32 | optional | offset in seconds of the vehicle time zone from UTC
vehicleSpeed | int32 | optional | speed in km/h when the event was triggered
postedSpeed | int32 | optional | posted speed value from NAV system
postedSpeedValid | bool | optional | if false, postedSpeed was not available and/or did not participate in the trigger

### PCLogUploads

Field | Type | Label | Description
tripLog | TripLog | optional |
driveStyleLog | DrivingStyleLog | optional |
speedAlertsLog | SpeedAlertsLog | optional |

### TripLog

Field | Type | Label | Description
tripID | string | optional |
IgnitionOnTimeStamp | int64 | optional | Time of IgnitionOn
startLocation | Location | optional | Location at IgntionOn
IgnitionOffTimeStamp | int64 | optional | Time of Igntion Off
eventTimeUTCOffset | int32 | optional | offset in seconds of the vehicle time zone from UTC
endLocation | Location | optional | Location at Ignition Off

### DrivingStyleLog

Field | Type | Label | Description
tripID | string | optional |
harshAcceleration | Acceleration | repeated |
harshBraking | Braking | repeated |
suddenCornering | Cornering | repeated |
seatBeltNotFastened | SeatBelt | repeated |

### SpeedAlertsLog

Field | Type | Label | Description
tripID | string | optional |
ViolationTotals | int32 | optional | Total number of speed alert threshold violations this trip
ThresholdAbovePostedSpeedTotal | int32 | optional | Total number of Speed above Posted Speed Threshold Violations
thresholdPostedSpeedAbsent | int32 | optional | Total number of Speed above Posted Speed Absent Threshold Violations
thresholdAbsolute | int32 | optional |

### Acceleration

Field | Type | Label | Description
eventTimeUTCOffset | int32 | optional | offset in seconds of the vehicle time zone from UTC
violationTimestamp | int64 | optional |
HARSH_ACCELERATION | bool | optional | Harsh Acceleration threshold reached

### Braking

Field | Type | Label | Description
eventTimeUTCOffset | int32 | optional | offset in seconds of the vehicle time zone from UTC
violationTimestamp | int64 | optional |
HARSH_BREAKING | bool | optional | Harsh Breaking threshold reached

### Cornering

Field | Type | Label | Description
eventTimeUTCOffset | int32 | optional | offset in seconds of the vehicle time zone from UTC
violationTimestamp | int64 | optional |
SUDDEN_CORNERING | bool | optional | Harsh Breaking threshold reached

### SeatBelt

Field | Type | Label | Description
eventTimeUTCOffset | int32 | optional |
violationTimestamp | int64 | optional |
SEATBELT_NOT_FASTENED | bool | optional | Harsh Breaking threshold reached

### Where to Find the ProtoBuf File

Click here to download Protobuf.

## Global_Uconnect_Ext_PerformancePages.proto (Version 1.0)

###

###

###

    This API is to upload Track Data.
      UconnectAny
        |
        |---- UploadTrackData uploadTrackData (2000)  Change Log

    	VersionDateNotes

       1.12017-11-2Update to Proto3
    	1.02017-10-24Release of initial Proto
    	 List of MQTT Topics

    	FlowTypeTopic Name

      Cloud send to VehiclePublishfcasdp/${iot:ClientId}/PERF
    	 Cloud receive from VehicleSubscribefcasdp/PERF/#
    	 Vehicle send to Cloud Publishfcasdp/PERF/${iot:ClientId}
    	 Vehicle receive from Cloud Subscribefcasdp/${iot:ClientId}/#

    Data FlowThe following sequence diagram depicts the flow of messages between the TBM and the SDP:
    	SequenceTitleRoleMessageTopicDescription

    1.UploadTrackData EventTBMThe in-vehicle UploadTrackData event which triggers the client device to send an UploadTrackData Message to the SDP.
    2.Assign MessageIdTBMThe client generates the messageId for the message by incrementing a sequence counter.
    3.Send UploadTrackData MessageTBMUploadTrackData/PERF/${iot:ClientId}The client populates the UploadTrackData Message with the required elements and publishes to the PERFORMANCE topic.
    4.1Process MessageSDPThe SDP processes the message and generates an ACK Message with the status and assign correct correlationId.
    4.2.Assign correlationIDSDPAssign correct correlationId.
    5send AckMessageSDPAckMessage/PERF/${iot:ClientId}The SDP sends AckMessage to acknowledge that it received UploadTrackData Message.
    6Process AckMessageTBMThe client process AckMessage.

### UploadTrackData

This message is to upload the track Data.

#### UploadTrackData Example Message:

`timestamp: 1508946513018 messageId: 1 messages { [com.fca.uconnect.global.uploadTrackData] { vehicleId: "VIN" website: "WEBSITE" timers { type: REACTION_TIME values { timer: BRAKE_DISTANCE_FEET units: FEET value: 1.0 } } } }`

Field | Type | Label | Description
vehicleId | string | optional | Provide vehicle identifier when the session on the secure channel cannot be used to identify the client.
vehicleLine | string | optional | Provide the vehicle line.
timestamp | int64 | optional | Event Timestamp
website | string | optional | Website
timers | UploadTrackData.Timers | repeated | The set of timers for current, previous, and best.

### UploadTrackData.Timers

Field | Type | Label | Description
type | UploadTrackData.Timers.TimerTypeEnum | optional | Indicates the current, previous, or best times.
values | UploadTrackData.Timers.TimerValue | repeated | The recorded values for the various performance metrics.

### UploadTrackData.Timers.TimerTypeEnum

Name | Number | Description
REACTION_TIME | 0 | Current reaction times.
REACTION_TIME_LAST | 1 | Previous reaction times.
REACTION_TIME_BEST | 2 | The best recorded reation times.

### UploadTrackData.Timers.TimerEnum

Name | Number | Description
DISTANCE_TO_60FT | 0 | Timer.
DISTANCE_TO_330FT | 1 | Timer.
DISTANCE_TO_1000FT | 2 | Timer.
SPEED_0_TO_60MPH | 3 | Timer.
SPEED_0_TO_100MPH | 4 | Timer.
V_8_ET | 5 | Timer.
V_8_SPEED | 6 | Speed.
V_4_ET | 7 | Timer.
V_4_SPEED | 8 | Speed.
BRAKE_DISTANCE_FEET | 9 | Distance.
BRAKE_FROM_SPEED_MPH | 10 | Speed.
DISTANCE_TO_20M | 11 | Timer.
DISTANCE_TO_100M | 12 | Timer.
DISTANCE_TO_300M | 13 | Timer.
SPEED_0_TO_100KMPH | 14 | Timer.
SPEED_0_TO_160KMPH | 15 | Timer.
ET_200 | 16 | Timer.
SPEED_200 | 17 | Speed.
ET_400 | 18 | Timer.
SPEED_400 | 19 | Speed.
BRAKE_DISTANCE_METER | 20 | Distance.
BRAKE_FROM_SPEED_KMPH | 21 | Speed.

### UploadTrackData.Timers.UnitsEnum

Name | Number | Description
SECONDS | 0 | Time in Seconds.
MPH | 1 | Miles Per Hour.
FEET | 2 | Distance in Feet.
KMPH | 3 | Kilometers Per Hour.
METERS | 4 | Distance in Meters.

### UploadTrackData.Timers.TimerValue

Field | Type | Label | Description
timer | UploadTrackData.Timers.TimerEnum | optional | Indicates the specific timer.
units | UploadTrackData.Timers.UnitsEnum | optional | Units of the value.
value | float | optional | Recorded value.

### Where to Find the ProtoBuf File

Click here to download Protobuf.

## Global_Uconnect_Ext_PHEV.proto (Version 1.0)

###

###

###

    The  proto is to for PHEV(Plug in Hybrid Electric Vehicles).

    UconnectAny
    	   |
    	   |---- ChargeDataRequest chargeDataRequest
        |
    	   |---- ChargeDataPublish chargeDataPublish

     Change Log

    	VersionDateNotes

       1.52018-10-19Added ChargeScheduleEnable
       1.42017-11-2Added Response Enumerations to the ChargeDataPublish
       1.32017-11-2Added ChargeDataRequest and ChargeDataPublish, added BatteryVoltage to ChargeData
       1.22017-11-2Update to Proto3
     1.12017-06-15Added CommandMark and DatacollectionTimestamp
    	1.02017-06-15Release of initial Proto

     List of MQTT Topics

    	FlowTypeTopic Name

      Cloud send to VehiclePublishfcasdp/${iot:ClientId}/PHEV
    	 Cloud receive from VehicleSubscribefcasdp/PHEV/#
    	 Vehicle send to Cloud Publishfcasdp/PHEV/${iot:ClientId}
    	 Vehicle receive from Cloud Subscribefcasdp/${iot:ClientId}/#

     Data Flow
    The following sequence diagram depicts the flow of messages between the TBM and the SDP:

### ChargeNowRequest

#### PHEVData Example Message:

`timestamp: 1497889690516 messageId: 1 messages { [com.fca.uconnect.global.phevData] { data: "\000\000\000\000\000\000\000\000\000\000\000\000\000" commandMark: VEHICLE_LOGIN dataCollectionTimestamp: 1497889690516 } }`

Field | Type | Label | Description
chargeCommand | ChargeNowRequest.ChargeCommandEnum | optional |

### ChargeNowRequest.ChargeCommandEnum

Name | Number | Description
START_CHARGE | 0 |
STOP_CHARGE | 1 |

### ChargeNowResponse

Field | Type | Label | Description
response | ChargeNowResponse.ResponseEnum | optional |
isTransient | bool | optional | Indicates a transient error and a retry can be attempted.
failureReasonCode | int32 | optional | Specific error code.

### ChargeNowResponse.ResponseEnum

Name | Number | Description
SUCCESS | 0 | Success
UNPLUGGED_FAILURE | 1 | Vehicle Is Not Plugged in
FAILURE | 2 | General FAILURE

### ChargeDataRequest

bytes serviceRequestID = 1;

Field | Type | Label | Description

### ChargeDataPublish

Field | Type | Label | Description
BatteryLevel | float | optional | High voltage battery level in percent
eventTrigger | ChargeDataPublish.PublishEventEnum | optional |
plugStatus | ChargeDataPublish.PlugStatus | optional |
rangeEstimates | ChargeDataPublish.Range | optional |
chargeStatus | ChargeDataPublish.ChargeStatusEnum | optional | actual reported value of the ChargeSysStat can signal
chargeSchedules | ChargeSchedule | repeated | Only required once charge now and charge scheduling are implemented
response | ChargeDataPublish.ResponseEnum | optional |

### ChargeDataPublish.ResponseEnum

Name | Number | Description
SUCCESS | 0 | Success
UNPLUGGED_FAILURE | 1 | Vehicle Is Not Plugged in
FAILURE | 2 | General FAILURE
VEHICLE_DATA_NOT_AVAILABLE | 3 |

### ChargeDataPublish.ChargeStatusEnum

Name | Number | Description
NOT_CHARGING | 0 |
CHARGING | 1 |
CHARGE_INTERRUPT | 2 |
CHARGE_FAULT | 3 |
CHARGE_COMPLETE | 4 |
SNA | 5 |

### ChargeDataPublish.PublishEventEnum

Name | Number | Description
IGNITION_ON | 0 |
IGNITION_OFF | 1 |
PLUGGED_IN | 2 |
UNPLUGGED | 3 |
CHARGE_START | 4 |
CHARGE_COMPLETED | 5 |
CHARGE_INTERRUPTED | 6 |
CHARGE_FAULTED | 7 |
ON_DEMAND | 8 |
CHARGE_SCHEDULE | 9 |

### ChargeDataPublish.VoltageEnum

Name | Number | Description
DEFAULT | 0 |
LEVEL_1 | 1 |
LEVEL_2 | 2 |

### ChargeDataPublish.Range

Field | Type | Label | Description
estimatedRange | int32 | optional | This is the estimated electric Range
totalRange | int32 | optional | TotalRange is the Hybrid Range including fuel

### ChargeDataPublish.PlugStatus

Field | Type | Label | Description
isPluggedIn | bool | optional |
chargeLevel | ChargeDataPublish.ChargeLevel | optional |

### ChargeDataPublish.ChargeLevel

Field | Type | Label | Description
chargeLevel | ChargeDataPublish.VoltageEnum | optional |
EstimatedTimeToCharge_LEV1 | string | optional |
EstimatedTimeToCharge_LEV2 | string | optional |

### UpdateChargeSchedule

Field | Type | Label | Description
updatedChargeSchedules | ChargeSchedule | repeated |

### ChargeSchedule

Field | Type | Label | Description
enableChargeSchedule | ChargeSchedule.EnableChargeScheduleType | optional |
scheduleType | ChargeSchedule.ScheduleTypeEnum | optional |
chargeUntilFull | bool | optional |
scheduleStartTime | int32 | optional | Expressed as 00:00:00 to 23:00:00
scheduleEndTime | int32 | optional | Expressed as 00:00:00 to 23:00:00

### ChargeSchedule.ScheduleTypeEnum

Name | Number | Description
WEEKDAY | 0 |
WEEKEND | 1 |

### ChargeSchedule.EnableChargeScheduleType

Name | Number | Description
DEFAULT | 0 |
ENABLE_SCHEDULE | 1 |
DISABLE_SCHEDULE | 2 |

### Where to Find the ProtoBuf File

Click here to download Protobuf.

## Global_Uconnect_Ext_POISearch.proto (Version 1.0)

###

###

###

    This API supports the POI Search Requests.
      UconnectAny
        |
        |---- POISearchRequest
        |
        |---- POISearchResponse
        |
        |---- POISearchDestinationRequest
        |
        |---- POISearchDestinationResponse
      Change Log

    	VersionDateNotes

       1.22017-11-2Update to Proto3
    	1.02017-10-12Release of initial Proto
    	 List of MQTT Topics

    	FlowTypeTopic Name

      Cloud send to VehiclePublishfcasdp/${iot:ClientId}/POIS
    	 Cloud receive from VehicleSubscribefcasdp/POIS/#
    	 Vehicle send to Cloud Publishfcasdp/POIS/${iot:ClientId}
    	 Vehicle receive from Cloud Subscribefcasdp/${iot:ClientId}/#

    Data FlowThe following sequence diagram depicts the flow of messages between the HU and the SDP:
    	SequenceTitleRoleMessageTopicDescription

    1.POISearch EventHUThe in-vehicle activation event which triggers the client device to send an Activation Request to the SDP.
    2.Assign MessageIdHUThe client generates the messageId for the message by incrementing a sequence counter.
    3.Send POISearchRequest MessageHUPOISearchRequest/POIS/${iot:ClientId}The client populates the ActivationRequest Message with the required elements and publishes to the activation topic.
    4.Process MessageSDPThe SDP processes the message and generates an ActivationResponse Message with the status and assign correct correlationId.
    5.Send ActiviationResponse MessageSDPActivationResponse${iot:ClientId}/POISThe service publishes the response message to the activation topic for the client to receive.
    6.Process MessageHUThe client receives the message and verifies the correlationId is correct.
    7.Provisioning EventSDPOnce the activation is accepted after the appropriate out of band approval steps, the SDP will build a new ProvisioningPush Message with the required initial client configuration. Assign correct correlationId.
    8.Send ProvisioningPush MessageSDPProvisioningPush${iot:ClientId}/PRVIThe service publishes the push message to the activation topic for the client to receive.
    9.Process MessageHUThe client receives the message and verifies the correlationId is correct.
    10.Send ProvisioningPushAck MessageHUProvisioningPushAck/PRVI/${iot:ClientId}The client acknowledges the ProvisioningPush Message with the ProvisioningPushAck Message publishes to the Provisioning topic.
    11.Process MessageSDPThe SDP processes the message .

### POISearchRequest

This message represents POISearchRequest.

#### POISearchRequest Example Message:

`timestamp: 1488574019636 messageId: 1 messages { [com.fca.uconnect.global.POISearchRequest] { poi { name: "2.0" category: "" id: 1 phoneNumber: "12345" description: "DESC" url: "https://abc.com" } } }`

Field | Type | Label | Description
poi | PointOfInterest | optional |

### POISearchResponse

This message is in response to POISearchRequest.

#### POISearchResponse Example Message:

`timestamp: 1488740988983 messageId: 2 correlationId: 1 messages { [com.fca.uconnect.global.poiSearchResponse] { [ poiList{ name: "2.0" category: "" id: 1 phoneNumber: "12345" description: "DESC" url: "https://abc.com"

}] } }

`

Field | Type | Label | Description
poiList | PointOfInterest | repeated | list of points of interest

### POISearchDestinationRequest

This message represents POISearchDestinationRequest.

#### POISearchDestinationRequest Example Message:

`timestamp: 1488574019636 messageId: 1 messages { [com.fca.uconnect.global.poiSearchDestinationRequest] { destinationPOI { name: "2.0" category: "" id: 1 phoneNumber: "12345" description: "DESC" url: "https://abc.com" } } }`

Field | Type | Label | Description
destinationPOI | PointOfInterest | optional | Point of Interest request data

### POISearchDestinationResponse

This message is in response to POISearchDestinationRequest.

#### POISearchDestinationResponse Example Message:

`timestamp: 1488740988983 messageId: 2 correlationId: 1 messages { [com.fca.uconnect.global.poiSearchDestinationResponse] { destination { routePreference: Fast destinationPOI { name: "2.0" category: "" id: 1 phoneNumber: "12345" description: "DESC" url: "https://abc.com" } } } }`

Field | Type | Label | Description
destination | Destination | optional | destination message element

### Where to Find the ProtoBuf File

Click here to download Protobuf.

## Global_Uconnect_Ext_PrivacyMode.proto (Version 1.0)

###

###

###

    This API supports the Privacy Mode.
      UconnectAny
        |
        |---- PrivacyModeRequest PrivacyModeRequest ()
        |----  PrivacyModeResponse  PrivacyModeResponse ()
    	   |  Change Log

    	VersionDateNotes

     1.02018-06-18Release of initial Proto
    	 List of MQTT Topics

    	FlowTypeTopic Name

      Cloud send to VehiclePublishfcasdp/${iot:ClientId}/PM/
    	 Cloud receive from VehicleSubscribefcasdp/PM/#
    	 Vehicle send to Cloud Publishfcasdp/PM/${iot:ClientId}
    	 Vehicle receive from Cloud Subscribefcasdp/${iot:ClientId}/#

    Data FlowThe following sequence diagram depicts the flow of messages between the TBM and the SDP:

### PrivacyModeRequest

This message represents PrivacyModeRequest of vehicle for Privacy Mode settings.

#### PrivacyModeRequest Example Message:

``

timestamp: 1489632211020

messageId: 1

messages

{

[com.fca.uconnect.global.PrivacyModeRequest]

{

action: SUBSCRIBE

serviceRequestId:"-\0274\302]\325\324 \354K"

PrivacyModeRequest

{

command: ENTER

}

}

}

Field | Type | Label | Description
serviceRequestId | bytes | optional | ServiceRequestId assigned by the SDP
privacyMode | PrivacyModeRequest.PrivacyModeEnum | optional | Turn on or off the inhibit of the vehicle start

### PrivacyModeRequest.PrivacyModeEnum

Name | Number | Description
ENTER | 0 |
EXIT | 1 |

### PrivacyModeResponse

Field | Type | Label | Description
response | PrivacyModeResponse.ResponseEnum | optional |
serviceRequestId | bytes | optional | service request id assigned by SDP
isTransient | bool | optional | Indicates a transient error and a retry can be attempted.
failureReasonCode | int32 | optional | Specific error code.

### PrivacyModeResponse.ResponseEnum

Name | Number | Description
SUCCESS | 0 | Success
FAILED | 1 | FAILED

### PrivacyModeNotification

Field | Type | Label | Description
PrivacyModeStatus | PrivacyModeNotification.PrivacyModeStatusEnum | optional |

### PrivacyModeNotification.PrivacyModeStatusEnum

Name | Number | Description
ACTIVE | 0 |
NOT_ACTIVE | 1 |

### Where to Find the ProtoBuf File

Click here to download Protobuf.

## Global_Uconnect_Ext_Provision.proto (Version 1.0)

###

###

###

    The Provisioning API supports the client requesting or the SDP pushing the vehicle provisioning information to the client.
    The interface includes the read-only configuration data consumed by the client.  The Vehicle Data Sync interface supports the data elements which can be
    modified in the vehicle and synchronized with the cloud.
    UconnectAny
      |---- InitiateProvisioningPush  (1010)
      |
      |---- ProvisioningRequest  (1011)
      |
      |---- ProvisioningResponse  (1012)
      |
      |---- ProvisioningPush  (1013)
            |---- ServiceSubscriptionInfo  (1020)
            |      |
            |      |---- ServiceDescription
      |     |
      |     |---- DRM
      |     |
      |     |---- BIMDPSK  (1022)
      |
      |---- ProvisioningPushAck (1014)

      Change Log

    	VersionDateNotes

      1.172018-05-25Add DRM Hash Field
      1.162017-11-2Removed unused messages, keeping only byte message
       1.152017-11-2Update to Proto3
     1.142017-09-27Update ProvisioningResponse and ProvisioningPushAck.
     1.132017-09-20Added ReasonEnum to Provisioning Request, added Services back to ProvisioningPush .
     1.122017-08-11Added ProvisioningPushAck Message.
     1.112017-08-07modified BIMDPSK structure.
     1.102017-06-30moved drmFile to COMMON.Drm.
     1.92017-06-30added drmFile to ProvisioningPush.Drm.
     1.82017-06-30Moved msisdn,imei,imei,iccid,tbmSerialNum,tbmFirmwareVersion,huSerialNum,huFirmwareVersion to Common Proto.
     1.72017-06-20Added fields for Signature correlation Message to ProvisioningPush.
     1.62017-06-16Added msisdn,imei,imei,iccid,tbmSerialNum,tbmFirmwareVersion,huSerialNum,huFirmwareVersion to ProvisioningRequest,added operationEnum & RegistrationStatusEnum to ProvisioningPush.
     1.52017-04-18Added InitiateProvisioningPush Message and ConnectedVehicle service type
     1.42017-04-18Added keyvalue Pair in Provisioning Request for modemId,TBM&HU Serial Number Firmware Version and other Ids.
     1.32017-04-03Added Status to ServiceSubscriptionInfo
     1.22017-03-31Added Key-value element to ServiceSubscriptionInfo
     1.12017-03-03Signature extracted to Global_Uconnect_Ext_Signature.proto
    	1.02017-02-14Release of initial Proto

    List of MQTT Topics

    	FlowTypeTopic Name

      Cloud send to VehiclePublishfcasdp/${iot:ClientId}/PRVI
    	 Cloud receive from VehicleSubscribefcasdp/PRVI/#
    	 Vehicle send to Cloud Publishfcasdp/PRVI/${iot:ClientId}
    	 Vehicle receive from Cloud Subscribefcasdp/${iot:ClientId}/#

    Data FlowThe following sequence diagram depicts the flow of messages between the TBM/HU and the SDP:
    	SequenceTitleRoleMessageTopicDescription

    1.Send InitiateProvisioningPush MessageSDPInitiateProvisioningPush${iot:ClientId}/PRVIThe in-vehicle Provisioning event which triggers the client device to send a ProvisioningRequest to the SDP.
    2.ProvisioningEventTBM/HUThe in-vehicle Provisioning event which triggers the client device to send a ProvisioningRequest to the SDP.
    3.Assign MessageIdTBM/HUThe client generates the messageId for the message by incrementing a sequence counter.
    4.Send ProvisioningRequest MessageTBM/HUProvisioningRequest/PRVI/${iot:ClientId}The client populates the ProvisioningRequest Message with the  elements and publishes to the Provisioning topic.
    5.Process MessageSDPThe SDP processes the message and generates a ProvisioningResponse Message with the status and the correlationId set to the messageId from the received ProvisioningRequest Message.
    6.Send ProvisioningResponse MessageSDPProvisioningResponse${iot:ClientId}/PRVIThe service publishes the response message to the Provisioning topic for the client to receive.
    7.Process MessageTBM/HUThe client receives the message and verifies the correlationId matches the messageId of the sent request.
    8.Send ProvisioningPush MessageSDPProvisioningPush${iot:ClientId}/PRVIOnce the Provisioning is accepted after the appropriate out of band approval steps, the SDP will build a new ProvisioningPush Message with the  initial client configuration.  The correlationId set to the messageId from the received ProvisioningRequest Message.The service publishes the ProvisioningPush message to the Provisioning topic for the client to receive.
    9.Process MessageTBM/HUThe client receives the message and verifies the correlationId matches the messageId of the initially sent request.
    10.Send ProvisioningPushAc0k MessageTBM/HUProvisioningPushAck/PRVI/${iot:ClientId}The client acknowledges the ProvisioningPush Message with the ProvisioningPushAck Message publishes to the Provisioning topic.
    11.Process MessageSDPThe SDP processes the message .

### InitiateProvisioningPush

This message is to initiate a New Registration from SDP.

#### InitiateProvisioningPush Example Message:

`timestamp: 1488743306361 messageId: 2 messages { [com.fca.uconnect.global.initiateProvisioningPush] {

} }

`

Field | Type | Label | Description
parameters | InitiateProvisioningPush.ParametersEntry | repeated |

### InitiateProvisioningPush.ParametersEntry

Field | Type | Label | Description
key | string | optional |
value | string | optional |

### ProvisioningRequest

Field | Type | Label | Description
vehicleId | string | optional | VIN or other unique identifier for the vehicle this Telematics Unit is installed in.
DrmHash | bytes | optional |
additionalModemParams | ProvisioningRequest.AdditionalModemParamsEntry | repeated | This can be used as key value pair for additional Modem Identifiers.
reason | ProvisioningRequest.ReasonEnum | optional |

### ProvisioningRequest.ReasonEnum

Name | Number | Description
IGNITION_CYCLE_CHECK | 0 | IGNITION_CYCLE_CHECK
TBM_FLASH | 1 | TBM_FLASH
HU_FLASH | 2 | HU_FLASH
ON_DEMAND | 3 | ON_DEMAND
MISDN_MISMATCH | 4 | MISDN_MISMATCH
DISCREPENCY_CHECK | 5 | DISCREPENCY_CHECK
SOFTWARE_REFRESH | 6 | SOFTWARE_REFRESH
HU_SWAP | 7 | HU_SWAP
TBM_SWAP | 8 | TBM_SWAP
ENROLLMENT | 9 | ENROLLMENT
RETURN_TO_NEW | 10 |

### ProvisioningRequest.AdditionalModemParamsEntry

Field | Type | Label | Description
key | string | optional |
value | string | optional |

### ProvisioningResponse

This message is sent as response to ProvisionRequest.

#### ProvisioningResponse Example Message:

`timestamp: 1488746450628 messageId: 101 correlationId: 301 messages { provisioningResponse { responseEnum: SUCCESS } }`

Field | Type | Label | Description
responseEnum | ProvisioningResponse.ResponseEnum | optional | Success or Failure Response
isTransient | bool | optional | Indicates a transient error and a retry can be attempted.
failureReasonCode | int32 | optional | Specific error code.

### ProvisioningResponse.ResponseEnum

Name | Number | Description
SUCCESS | 0 | Response successful for provisioning.
FAILURE | 1 | Response failure for provisioning.

### ProvisioningPush

This is for asynchronously pushing the provisioning with services and/or BIMDPSKInfo.

#### ProvisioningPush Example Message:

`timestamp: 1488828296489 messageId: 102 correlationId: 301 messages { provisioningPush { drm { drmFile:"fgnbooe8y73nfmlsi0iufnjej876reef==" } } }`

Field | Type | Label | Description
serviceSubscription | ServiceSubscriptionInfo | optional | Added Params to support APAC
drm | DRM | optional | DRM content to support provisioning applications.
timestamp | int64 | optional | Added for signature correlation to message
messageId | int32 | optional | Added for signature correlation to message
signatureId | int32 | optional | Added for signature correlation to message
bimdPSK | BIMDPSKInfo | optional | Provides TLS-PSK Tokens for secure connection with Mobile Devices.

### ProvisioningPushAck

This message is to acknowledge ProvisioningPush message .

#### ProvisioningPushAck Example Message:

`timestamp: 1488828296500 messageId: 302 correlationId: 102 messages { provisioningPushAck { response:SUCCESS } }`

Field | Type | Label | Description
response | ProvisioningPushAck.ProvisioningPushResponseEnum | optional | Success or Failure Response
isTransient | bool | optional | Indicates a transient error and a retry can be attempted.
failureReasonCode | int32 | optional | Specific error code.

### ProvisioningPushAck.ProvisioningPushResponseEnum

Name | Number | Description
SUCCESS | 0 |
FAILURE | 1 |

### ServiceDescription

** * This Message represents the Service name and expiration time that Service is going to expire */

Field | Type | Label | Description
serviceType | ServiceDescription.ServiceTypeEnum | optional | The type of service being provisioned/activated
expireTime | int64 | optional | The service being provisioned/activated is considered active from the time this message is received until the expire time, expressed in milliseconds elapsed since 1 January 1970 00:00:00 UTC.
additionalParameters | ServiceDescription.AdditionalParametersEntry | repeated | This is for Configuration Parameters as a key-value pair like Call Center number,Server URL.
status | ServiceDescription.Status | optional | This is to define whether service is Active/InActive.
version | int32 | optional | Service version number
contentId | int32 | optional | Content ID
appIdentifier | string | optional | Application ID
appLauncherMask | int32 | optional | App Launcher Mask (auto start, manual)
installerType | string | optional | Installer type
accountDN | string | optional | Account DN
fileLength | int32 | optional | fileLength
fileChecksum | int32 | optional | Checksum data
featureMask | string | optional | Feature Mask
expireTimeSpanBegin | int64 | optional | DRM expiration Time Begin
expireTimeSpanEnd | int64 | optional | DRM Time Span End
emailId | string | optional | Email ID

### ServiceDescription.ServiceTypeEnum

Name | Number | Description
WIFIHOTSPOT | 0 | Wifi service.
ECALL | 1 | Emergency Call service.
ROADSIDEASSIST | 2 | Road side assistance service.
THEFTALARMNOTIFICATION | 3 | This service notifies when Theft alarm is enabled.
STOLENVEHICLEASSIST | 4 | This is for stolen vehicle assistance.
SENDDESTINATIONTOCAR | 5 | This is for sending destination location to car.
VEHICLEFINDER | 6 | This service finds vehicle location.
REMOTEDOORCONTROL | 7 | This service enables Remote Door Lock/Unlock opertions.
REMOTEENGINESTART | 8 | This service enables Remote Start/Stop opertions.
REMOTEHORNANDFLASH | 9 | This service enables Remote Horn and lights opertions.
RADIOPRESETS | 10 | This Service enables Radio Presets.
MUSICFAVORITES | 11 | This service enables to favorite Songs/bands/Teams.
TEMPERATURE | 12 | This service enables Temperature settings.
HEATEDCOOLEDSEATS | 13 | This service enables Heating or cooling Seats.
HEATEDSTEERINGWHEEL | 14 | This service enables Heating Steering Wheel.
CONNECTEDVEHICLE | 15 | Connected Vehicle Service
SQDF | 16 | This service enables SQDF
FTM | 17 | This service enables Fleet Telematics
EVDATACHN | 18 | This service represents PHEV Data.

### ServiceDescription.Status

Name | Number | Description
INACTIVE | 0 | Service is not active.
ACTIVE | 1 | Service is active.

### ServiceDescription.AdditionalParametersEntry

Field | Type | Label | Description
key | string | optional |
value | string | optional |

### ServiceSubscriptionInfo

This Message represents the list of Services that User can or may subscribed to.

This message may be sent with an ProvisioningResponse or can be asynchronously at any time from the SDP.

#### ServiceSubscriptionInfo Example Message:

`timestamp: 1488746451561 messageId: 4 messages { [com.fca.uconnect.global.serviceSubscriptionInfo] { services { serviceType: ECALL expireTime: 1234567890 } services { serviceType: REMOTEENGINESTART expireTime: 1234567890 } } }`

Field | Type | Label | Description
services | ServiceDescription | repeated | The services enumerated in this message are enable from the time of receipt. All other services not explicitly listed are disabled immediately if possible, and upon the next ignition on cycle under all circumstances.

### BIMDPSKInfo

This is for Authentication

Field | Type | Label | Description
deviceKeys | BIMDPSKInfo.BIMDPSK | repeated |

### BIMDPSKInfo.BIMDPSK

Field | Type | Label | Description
mobileDeviceId | string | optional | Device id for Mobile.
preSharedKey | bytes | optional | Repeated keys.

### Where to Find the ProtoBuf File

Click here to download Protobuf.

## Global_Uconnect_Ext_RemoteInhibits.proto (Version 1.0)

###

###

###

    This API supports the Remote Operations.
      UconnectAny
        |
        |---- RemoteInhibitRequest remoteInhibitRequest ()
        |----  RemoteInhibitResponse  remoteInhibitResponse ()
    	   |  Change Log

    	VersionDateNotes

     1.22018-08-15Changed CrankAttempted boolean to isCrankAttempted
    1.02018-06-18Release of initial Proto
    	 List of MQTT Topics

    	FlowTypeTopic Name

      Cloud send to VehiclePublishfcasdp/${iot:ClientId}/RI/${AppID}
    	 Cloud receive from VehicleSubscribefcasdp/RI/${AppID}/#
    	 Vehicle send to Cloud Publishfcasdp/RI/${AppID}/${iot:ClientId}
    	 Vehicle receive from Cloud Subscribefcasdp/${iot:ClientId}#/

    Data FlowThe following sequence diagram depicts the flow of messages between the TBM and the SDP:
    	SequenceTitleRoleMessageTopicDescription

    1.Send RemoteInhibitRequest MessageSDPThe SDP request TBM for Remote Inhibit.
    2Process Message and assign correlation IDTBMThe message is processed and the correlationID is assigned for the response
    3Send RemoteInhibitResponse MessageTBMThe TBM sends a success or failure message back to the SDP.
    4Inhibit EventTBMThe TBM monitors for the specific remote inhibit on the CAN and when it is applied an event is triggered
    5CrankAttemptedNotificationTBMThe client sends a message to the SDP notifying that engine start was attempted while inhibited
    6.Process MessageSDPThe Service receives the message and verifies the correlationId matches the messageId of the sent request.
    9.send AckMessageSDPAckMessage/RO/${iot:ClientId}The SDP sends AckMessage to acknowledge that it received CrankAttemptedNotification
    10.Process AckMessageTBMThe client process AckMessage.

### RemoteInhibitRequest

This message represents RemoteOperationRequest of vehicle for Remote Operations.

#### RemoteOperationRequest Example Message:

`timestamp: 1489632211020 messageId: 1 messages { [com.fca.uconnect.global.remoteInhibitRequest] { action: SUBSCRIBE serviceRequestId:"-\0274\302]\325\324 \354K" remoteInhibitRequest { command: CRANK_INHIBIT

} } }

`

Field | Type | Label | Description
serviceRequestId | bytes | optional | ServiceRequestId assigned by the SDP
crankInhibit | RemoteInhibitRequest.CrankInhibitEnum | optional | Turn on or off the inhibit of the vehicle start
engineSlow | RemoteInhibitRequest.EngineSlowEnum | optional |

### RemoteInhibitRequest.CrankInhibitEnum

Name | Number | Description
END_INHIBIT | 0 |
INHIBIT | 1 |

### RemoteInhibitRequest.EngineSlowEnum

Name | Number | Description
EXIT_SLOW | 0 |
SLOW | 1 |

### RemoteInhibitResponse

Field | Type | Label | Description
response | RemoteInhibitResponse.ResponseEnum | optional |
serviceRequestId | bytes | optional | service request id assigned by SDP
isTransient | bool | optional | Indicates a transient error and a retry can be attempted.
failureReasonCode | int32 | optional | Specific error code.

### RemoteInhibitResponse.ResponseEnum

Name | Number | Description
SUCCESS | 0 | Success
FAILED | 1 | FAILED

### CrankAttemptedNotification

Field | Type | Label | Description
isCrankAttempted | bool | optional |
location | Location | optional |

### Where to Find the ProtoBuf File

Click here to download Protobuf.

## Global_Uconnect_Ext_RemoteOp.proto (Version 1.0)

###

###

###

    TThis API supports the Remote Operations
      UconnectAny
        |
        |---- RemoteOperationRequest remoteOperationRequest (320)
    			|
    			|---- RemoteHornAndLightsRequest remoteHornAndLightsRequest
    			|
    			|---- RemoteEngineRequest remoteEngineRequest
    			|
    			|---- RemoteDoorRequest remoteDoorRequest
    			|
    			|---- RemoteClimateRequest remoteClimateRequest
    			|
    			|---- RemoteWindowRequest remoteWindowRequest
    			|
    	  |
    	  |----  RemoteOperationResponse  remoteOperationResponse (321)
    	  |
    	  |----  RemoteOperationStatus  remoteOperationStatus (324)
      Change Log

    	VersionDateNotes

     1.12018-06-18Removed Inhibits
     1.02018-06-18Release of initial Proto
    	 List of MQTT Topics
    The ${AppTopic} defines which app is being addressed i.e. SVL or FTD

    	FlowTypeTopic Name

      Cloud send to VehiclePublishfcasdp/${iot:ClientId}/RO
    	 Cloud receive from VehicleSubscribefcasdp/RO
    	 Vehicle send to Cloud Publishfcasdp/RO/${iot:ClientId}
    	 Vehicle receive from Cloud Subscribefcasdp/${iot:ClientId}/#

    Data FlowThe following sequence diagram depicts the flow of messages between the TBM and the SDP:
    	SequenceTitleRoleMessageTopicDescription

    1.RemoteOperations EventSDPThe SDP request TBM for Remote Operation Event.
    2.1Assign MessageIdSDPThe Service generates the messageId for the message by incrementing a sequence counter.
    2.2Assign ServiceIdSDPThe SDP generates ServiceId for the message with Random UUID for Sending Remote Operation Messages.
    3.Send RemoteOperationRequest MessageSDPRemoteOperationRequest/RO/${iot:ClientId}The Service populates the RemoteOperationRequest Message with the  elements and publishes to the RO topic.
    4.Process MessageTBMThe Client processes the message and generates an RemoteOperationResponse Message with the status and the correlationId set to the messageId from the received RemoteOperationRequest Message.
    5.Send RemoteOperationResponse MessageTBMRemoteOperationResponse${iot:ClientId}/ROThe Client publishes the response message to the RO topic for the Service to receive.
    6.Process MessageSDPThe Service receives the message and verifies the correlationId matches the messageId of the sent request.
    7_1Send RemoteOperationResponse [Success] MessageTBMRemoteOperationStatus${iot:ClientId}/ROThe Client publishes the Status message to the RO topic for the Service to receive.
    7_2Send RemoteOperationResponse [Failure MessageTBMRemoteOperationStatus${iot:ClientId}/ROThe Client publishes the Status message to the RO topic for the Service to receive.
    8.Assign correlationIDSDPAssign correct correlationId.
    9.send AckMessageSDPAckMessage/RO/${iot:ClientId}The SDP sends AckMessage to acknowledge that it received RemoteOperationStatus Message.
    10.Process AckMessageTBMThe client process AckMessage.

### RemoteOperationRequest

This message represents RemoteOperationRequest of vehicle for Remote Operations.

#### RemoteOperationRequest Example Message:

`timestamp: 1489632211020 messageId: 1 messages { [com.fca.uconnect.global.remoteOperationRequest] { action: SUBSCRIBE serviceRequestId:"-\0274\302]\325\324 \354K" remoteDoorRequest { command: UNLOCK_DRIVER

} } }

`

Field | Type | Label | Description
action | RemoteOperationRequest.ActionEnum | optional | This is not being used and is intended for future when subsequent state updates are implemented.
serviceRequestId | bytes | optional | ServiceRequestId assigned by the SDP
remoteHornAndLightsRequest | RemoteHornAndLightsRequest | optional | Remote Horns and Light Request
remoteEngineRequest | RemoteEngineRequest | optional | Remote Engine Request
remoteDoorRequest | RemoteDoorRequest | optional | Remote Door Request
remoteClimateRequest | RemoteClimateRequest | optional | Remote Client Request - Not used in this release
remoteWindowRequest | RemoteWindowRequest | optional | Remote Window Request - Not used in this release

### RemoteOperationRequest.ActionEnum

Name | Number | Description
NO_ACTION | 0 | No Action
SUBSCRIBE | 1 | Subscribe

### RemoteHornAndLightsRequest

This message represents RemoteHornAndLights Operation of the vehicle .

#### RemoteHornAndLightsRequest Example Message:

`timestamp: 1489632211020 messageId: 1 messages { [com.fca.uconnect.global.remoteOperationRequest] { action: SUBSCRIBE remoteDoorRequest { command: UNLOCK_DRIVER duration: 0 } } }`

Field | Type | Label | Description
command | RemoteHornAndLightsRequest.CommandEnum | optional | command element
duration | int32 | optional | duration of execution - not used in this release

### RemoteHornAndLightsRequest.CommandEnum

Name | Number | Description
HORN_AND_LIGHTS | 0 | Activate Horns and Lights

### RemoteEngineRequest

Field | Type | Label | Description
command | RemoteEngineRequest.CommandEnum | optional | command element
duration | int32 | optional | duration of execution

### RemoteEngineRequest.CommandEnum

Name | Number | Description
START | 0 | Execute a Remote Start
STOP | 1 | End a Remote Start

### RemoteDoorRequest

Field | Type | Label | Description
command | RemoteDoorRequest.CommandEnum | optional |

### RemoteDoorRequest.CommandEnum

Name | Number | Description
LOCK_ALL_DOORS | 0 | Lock All Doors
UNLOCK_DRIVER_DOOR | 1 | Unlock Driver Door Only
UNLOCK_ALL_DOORS | 2 | Unlock All Doors
OPEN_LIFTGATE | 3 | Open Lift Gate for Power Lift Gate Models
OPEN_HOOD | 4 | Open Hood - Not used this release
UNLOCK_TRUNK | 5 | Unlock/Unlatch trunk. Unlock Liftgate on Power models
CLOSE_LIFTGATE | 6 | Closes the liftgate - can only be used where feasible for particular model

### RemoteWindowRequest

Field | Type | Label | Description
command | RemoteWindowRequest.CommandEnum | optional | command element

### RemoteWindowRequest.CommandEnum

Name | Number | Description
OPEN | 0 | Open Window
PARTIAL | 1 | Partially Open Window
CLOSE | 2 | Close Window

### RemoteClimateRequest

Field | Type | Label | Description
command | RemoteClimateRequest.CommandEnum | optional |
interiorTemperature | int32 | optional | interior Temperature
fanSpeed | int32 | optional | speed of the fan values between 0 to 100
termperatureUOM | RemoteClimateRequest.TemperatureEnum | optional | This identifies whether temperature measured in Celsius or Fahrenit degrees.
targetTemp | int32 | optional | Target temperature for pre-trip climate
timeoutAfterTemp | int32 | optional | Period that the pre-trip should remain on after temp is reached
preTripTimeout | int32 | optional | Total time the pre-trip climate shall remain on

### RemoteClimateRequest.CommandEnum

Name | Number | Description
ON | 0 | On
OFF | 1 | Off

### RemoteClimateRequest.TemperatureEnum

Name | Number | Description
Celsius | 0 | Celsius
Fahrenheit | 1 | Fahrenheit

### RemoteOperationResponse

This message represents Response to Remote Operation of the vehicle .

#### RemoteOperationResponse Example Message:

`timestamp: 1489633266061 messageId: 1 correlationId: 1 messages { [com.fca.uconnect.global.remoteOperationResponse] { response: SUCCESS serviceRequestId: "-\0274\302]\325\324 \354K" } }`

Field | Type | Label | Description
response | RemoteOperationResponse.ResponseEnum | optional |
serviceRequestId | bytes | optional | service request id assigned by SDP
isTransient | bool | optional | Indicates a transient error and a retry can be attempted.
failureReasonCode | int32 | optional | Specific error code.
vehicleStatus | VehicleStatus | optional | Status of each door/window/hood/trunk. Not used in current planned release.

### RemoteOperationResponse.ResponseEnum

Name | Number | Description
SUCCESS | 0 | Success
SUCCESS_CONTINUE | 1 | Success Continue
SUCCESS_NOCONTINUE | 2 | Success NoContinue
NOT_AUTHORIZED | 3 | NOT AUTHORIZED
FAILED | 4 | FAILED
FAILED_IGNITION_ON | 5 | FAILED IGNITION
FAILED_NOCANACK | 6 | FAILED NO CAN ACK
FAILED_VEHCONDITION | 7 | FAILED VEHICLE CONDITION
STARTFAILED_DOORS_NOTLOCKED | 8 | STARTFAILED DOORS NOT LOCKED
STARTFAILED_DOORS_OPEN | 9 | DOORS OPEN
STARTFAILED_HOODTRUNK_OPEN | 10 | HOOD OR TRUNK OPEN
STARTFAILED_ALARM_ACTIVE | 11 | ALARM ACTIVE
STARTFAILED_FUELLOW | 12 | FUEL LOW
STARTFAILED_GASPEDAL | 13 | GAS PEDAL
STARTFAILED_PRNDL | 14 | GEAR ENGAGED
STARTFAILED_WINDOWSUNOPEN | 15 | WINDOWS NOT OPEN
STARTFAILED_MAXATTEMPTS_MET | 16 | MAX ATTEMPTS EXCEEDED
STARTFAILED_VEHPOWERMODE | 17 | VEHICLE POWER MODE
STARTFAILED_BATTERYLOW | 18 | BATTERY LOW
STOPFAILED_ENG_ALREADYOFF | 19 | ENGINE OFF
DOORS_FAILED_DOOR_OPEN | 20 | DOOR OPEN
FLASHLIGHTS_FAILED_IGNITIONON | 21 | FLASH FAILED IGNITION ON
FLASHLIGHTS_FAILED_DOOROPEN | 22 | FLASH FAILED DOOR OPEN
FLASHLIGHTS_FAILED_EXPIRED | 23 | FLASH FAILED EXPIRED
DOORUNLOCK_RELOCKED_FAILED | 24 | RELOCK FAILED
DOORUNLOCK_RELOCKED | 25 | RELOCKED
NOTIFY_CONTINUE | 26 | NOTIFY AND CONTINUE
NOTIFY_NOCONTINUE | 27 | NOTIFY AND DO NOT CONTINUE
FAILED_ACTIVE_THEFT_ALARM | 28 | ACTIVE THEFT ALARM
NOT_FOUND | 35 | Not Currently Planned for Use
REQUESTED | 29 | Not Currently Planned for Use
DELIVERED | 30 | Not Currently Planned for Use
IN_PROGRESS | 31 | Not Currently Planned for Use
COMPLETE | 32 | Not Currently Planned for Use
COMPLETE_TIMEOUT | 34 | Status monitor timed out
SPEEDLOCKOUT | 36 | Speed lockout for horns,lights and doors

### Where to Find the ProtoBuf File

Click here to download Protobuf.

## Global_Uconnect_Ext_RoadSideAssist.proto (Version 1.0)

###

###

###

    This API is to define Road Side Assistance.When Bluetooth is triggered, Phone call will be dialed out to the call center.The operator may expect to see the vehicle related information when the phone call is connected. Client  gathers vehicle information and send it out.

    	 UconnectAny
    	   |
    	   |---- RSADataUpload rsaDataUpload (180)
    	   |
    	   |----BCallStatusUpdate bcallStatusUpdate (181)
    	   |
    	   |---- VehDataRequest vehDataRequest (182)  Change Log

    	VersionDateNotes

    1.92018-10-20Added Call Center Type for UpdatePhone Numbers (used only by back end)
    1.82018-09-20Added RequestPhoneNumbers changed ASOS to ASOS_NON_IMPACT
    1.72018-05-08Added Specific CallOuts for ASOS and SOS
     1.62018-05-08Added UpdateRSAPhoneNumbers
     1.62018-05-08Added VehicleDataRequest operation per assembla ticket 441
       1.52018-04-20Added callCenterNumber to the RSADataUpload message per Assembla ticket 252
       1.42017-11-2Update to Proto3
     1.32017-09-20Added ACK Message and additional Enum fields to BcallStatus.
     1.22017-04-19Added BcallStatusUpdate message.
     1.12017-04-18Added extra fields for language,stateofCharge,odometer,cruiserange,nextServiceIntervalinDays,distanceRemainingForNextService and odometerUnits.
    	1.02017-03-15Release of initial Proto.
    	 List of MQTT Topics

    	FlowTypeTopic Name

      Cloud send to VehiclePublishfcasdp/${iot:ClientId}/RSA
    	 Cloud receive from VehicleSubscribefcasdp/RSA/#
    	 Vehicle send to Cloud Publishfcasdp/RSA/${iot:ClientId}
    	 Vehicle receive from Cloud Subscribefcasdp/${iot:ClientId}/#

    Data Flow
    The following sequence diagram depicts the flow of messages between the TBM and the SDP:
    	SequenceTitleRoleMessageTopicDescription

    1.RoadSideAssist EventTBMThe in-vehicle RoadSideAssist event which triggers the client device to send an RSA Data to the SDP.
    2.Assign MessageIdTBMThe client generates the messageId for the message by incrementing a sequence counter.
    3.Send RSADataUpload MessageTBMRSADataUpload/RSA/${iot:ClientId}The client populates the RSADataUpload Message with the required elements and publishes to the RSA topic.
    4Process MessageSDPThe SDP processes the message and proceed accordingly.
    5.Assign correlationIDSDPAssign correct correlationId.
    6.send AckMessageSDPAckMessage${iot:ClientId}/RSAThe SDP sends AckMessage to acknowledge that it received RSADataUpload Message.
    7.Process AckMessageTBMThe client process AckMessage.
    8_1Cancel Eventstep 7 to 13 are in opt means The interaction operator opt means that the combined fragment represents a sending VehDataRequestmessage may happen or nothing happens.
    8_2Send BCallStatusUpdate messageTBMBCallStatusUpdate/RSA/${iot:ClientId}The client populates the BCallStatusUpdate Message with the required elements and publishes to the RSA topic.
    8_3TimeOut Waiting for CancelSDPThe vehicle times out waiting for cancel.
    8_4Send BCallStatusUpdate messageTBMBCallStatusUpdate/RSA/${iot:ClientId}The client populates the BCallStatusUpdate Message with the required elements and publishes to the RSA topic.
    8_5Send BCallStatusUpdate messageSDPBCallStatusUpdate/RSA/${iot:ClientId}The SDP populates the BCallStatusUpdate Message with the required elements and publishes to the RSA topic.
    8_6Fail BCallStatusUpdate messageTBM/SDPBCallStatusUpdate/RSA/${iot:ClientId}The BCallStatusUpdate Message with the required elements is published to the RSA topic, it fails to be processed.
    9. Process MessageSDPThe SDP processes the message and generates an RSADataUpload Message  and the correlationId set to the messageId from the received VehDataRequest Message.
    10.send AckMessageTBM/SDPAckMessage${iot:ClientId}/RSAThe TBM or SDP sends AckMessage to acknowledge that it received RSADataUpload Message.
    0_1BCall Data Query EventSDPThe SDP can continuously request client for BCall Data through VehDataRequest.
    10_2Send VehDataRequest MessageSDPVehDataRequest${iot:ClientId}/RSAThe SDP publishes the response message to the RSA topic for the client to receive.
    10_3.Process MessageTBMThe Client processes the message and generates an RSADataUpload Message  and the correlationId set to the messageId from the received VehDataRequest Message.
    10_4.Send RSADataUpload MessageTBMRSADataUpload/RSA/${iot:ClientId}The Client populates the RSADataUpload message to the RSA topic for the SDP to receive.
    10_5.Process MessageSDPThe SDP receives the message and verifies the data and proceed accordingly.

### RSADataUpload

Field | Type | Label | Description
callCenterNumber | string | optional | Phone number for the call center that the assist call was directed to.
calltype | RSADataUpload.CallType | optional | Enumeration for the type of call being made i.e. Brand, Uconnect, Roadside, Concierge
callTriggerEnum | RSADataUpload.CallTrigger | optional | Is an automatic non-impact call or manual
CallReasonEnum | RSADataUpload.CallReason | optional | Reason - only used in case of automatic call
device | Device | optional | device info This identifies the type of the device. / Device Manufacturer Name / TBM Serial Number / TBM Part Number / TBM Hardware Version / TBM Software Version / ICCID for the SIM / MSI for the SIM / Number uniquely identifying a subscription in a mobile network. / IMIE Number for the NAD / Modem Hardware Version / Modem Software Version / Modem Serial Number / Model Part Number / WiFi Mac Address / HU Serial Number / HU Part Number / HU Hardware Version / HU Software Version
vehicleInfo | VehicleInfo | optional |
tirePressure | TirePressure | optional | define Tire pressure for all the tires - not used
fuelRemaining | float | optional | Represents Fuel left. Not used
errorTellTale | RSADataUpload.ErrorTellTale | optional | Not Used
stateofCharge | double | optional |
daysRemainingForNextService | int32 | optional | The number of days remaining for next service. NOT USED
distanceRemainingForNextService | int32 | optional | The distance remaining for next service. NOT USED

### RSADataUpload.CallTrigger

Name | Number | Description
MANUAL | 0 |
AUTOMATIC | 1 |
ONDEMAND | 2 |

### RSADataUpload.CallReason

Name | Number | Description
DEFAULT | 0 |
ENGINEOILTEMP | 1 |
WATERINFUEL | 2 |
BRAKEINDICATOR | 3 |
BRAKEPADINDICATOR | 4 |
LOWBREAKFLUID | 5 |
BREAKPEDALFAULT | 6 |

### RSADataUpload.CallType

Name | Number | Description
BRAND | 0 |
ROADSIDE | 1 |
GUARDIAN | 2 |
UCONNECT | 3 |
CONCIERGE | 4 |
ASOS_NON_IMPACT | 5 |
SOS | 6 |
ASSIST1 | 7 |
ASSIST2 | 8 |
ASSIST3 | 9 |
ASSIST4 | 10 |
IVA | 11 |

### RSADataUpload.ErrorTellTale

This message is to define any error Tell Tale signs

Field | Type | Label | Description
isOilPressure | bool | optional | This is for Oil Tell-tale Sign.

### BCallStatusUpdate

This message is to update the status of the BCall.

#### BCallStatusUpdate Example Message:

``

timestamp: 1489600243281

messageId: 2

messages

{

[com.fca.uconnect.global.bcallStatusUpdate]

{

bcallStatusEnum: DIAL

}

}

Field | Type | Label | Description
bcallStatusEnum | BCallStatusUpdate.BCallStatusEnum | optional |

### BCallStatusUpdate.BCallStatusEnum

Name | Number | Description
DIAL | 0 |
CANCELLED | 1 |
TERMINATED | 2 | This represents the call is terminated.
DROPPED_CALL | 3 | This is sent when TBM detects dropped call without a terminate tone.
CALL_FAILED | 4 | This is sent when TBM fails to Establish CALL.

### RSAVehicleDataRequest

Field | Type | Label | Description
vehicleDataRequest | ECallVehDataRequest | optional | Requests the vehicle data

### RSAVehicleDataResponse

Field | Type | Label | Description
vehicleDataUpload | RSADataUpload | optional | Returns the requested vehicle data

### UpdateRSAPhoneNumbers

Field | Type | Label | Description
PhoneList | bytes | optional | Deprecated
raPhoneListMessages | RAPhoneListMessage | repeated | repreated structure providing details for each phone number that requires updating

### RAPhoneListMessage

Field | Type | Label | Description
EnableCallType | bool | optional |
PrimaryPhoneNumber | string | optional | Primary Phone Number for the feature
SecondaryPhoneNumber | string | optional | Secondary Phone Number for the feature
callCenter | RAPhoneListMessage.CallCenterType | optional | This field can be ignored by the vehicle and is used for backend uniform API design purposes only
callTypeEnum | RAPhoneListMessage.CallType | optional |

### RAPhoneListMessage.CallCenterType

Name | Number | Description
BRAND | 0 |
ROADSIDE | 1 |
GUARDIAN | 2 |
UCONNECT | 3 |
CONCIERGE | 4 |
IVA_CALL | 5 |

### RAPhoneListMessage.CallType

Name | Number | Description
Assist1 | 0 |
Assist2 | 1 |
Assist3 | 2 |
Assist4 | 3 |
IVA | 4 |
ASOS_NON_IMPACT | 5 |

### RequestRSAPhoneNumbers

Field | Type | Label | Description
raPhoneListMessages | RAPhoneListMessage | repeated | Sends the current vehicle phone list for comparison with SDP list for the vehicles current profile.

### Where to Find the ProtoBuf File

Click here to download Protobuf.

## Global_Uconnect_Ext_SendAndGo.proto (Version 1.0)

###

###

###

    This API is to push some destinations to the vehicle, the SDP shall send the destinations data to the TBM when the TBM is connected.
    TBM will save the destination.

    	 UconnectAny
    	   |
    	   |---- DestinationPush destinationPush (240)
    	   |
    	   |---- DestinationPushResponse destinationPushResponse (241)  Change Log

    	VersionDateNotes

     1.52018-06-01Added ServiceRequestID, removed Repeated from Destination field
    1.42018-05-29Added POI and Address per Assembla 455
       1.32017-11-2Update to Proto3
    	 1.22017-09-27Update DestinationPushResponse.
    	 1.12017-04-12Added DestinationPushResponse and removed MAPDBVariant.
    	 1.02017-03-19Release of initial Proto.
    	 List of MQTT Topics

    	FlowTypeTopic Name

      Cloud send to VehiclePublishfcasdp/${iot:ClientId}/SDTC
    	 Cloud receive from VehicleSubscribefcasdp/SDTC/#
    	 Vehicle send to Cloud Publishfcasdp/SDTC/${iot:ClientId}
    	 Vehicle receive from Cloud Subscribefcasdp/${iot:ClientId}/#

    Data Flow
    The following sequence diagram depicts the flow of messages between the HU and the SDP:
    	SeqTitleRoleMessageTopicDescription

    1.Send Destination to Vehicle EventSDPThe SDP triggers SendDestinationToCar event which triggers DestinationPush to the Client.
    2.Assign MessageIdSDPThe SDP generates the messageId for the message by incrementing a sequence counter.
    3.Send DestinationPush MessageSDPStolenModeChangeRequest${iot:ClientId}/SDTCThe SDP populates the DestinationPush Message with the required elements and publishes to the SendDestinationToCar topic.
    4.Process MessageHUThe HU processes the message and generates an DestinationPushResponse Message with the status and the correlationId set to the messageId from the received DestinationPush Message.
    5.Send DestinationPushResponse MessageHUDestinationPushResponse/SDTC/${iot:ClientId}The TBM publishes the response message to the SendDestinationToCar topic for the SDP to receive.
    6.Process MessageSDPThe SDP receives the message and verifies the correlationId matches the messageId of the sent request.

### DestinationPush

This message represents list of Destinations that User Can push to the Vehicle.

#### DestinationPush Example Message:

`timestamp: 1490014360254 messageId: 11 messages { [com.fca.uconnect.global.destinationPush] { isImmediateNavigation: false destinationList { destinationLocation { longitude: -83.671875 latitude: 42.4802 } poi { name: "ABCD Restaurant" category: "Restaurant" id: 123 phoneNumber: "123 456 7890" description: "favorite" url: "www.abcrestaurant.com" } address { houseNbr: "1000" streetName: "Chrystler Drive" cityName: "Auburn Hills" provinceName: "Michigan" countryName: "USA" zipCode: 48326 } timestamp: 1490014360251 routePreferenceEnum: FAST } } }`

Field | Type | Label | Description
destinationList | Destination | optional |
LocationID | bytes | optional | Service Request ID Added for Trace-ability. Assigned by the SDP. Recommended that Location requests assign the locationID from DB

### DestinationPushResponse

Field | Type | Label | Description
response | DestinationPushResponse.ResponseEnum | optional |
isTransient | bool | optional | Indicates if the error is transient and to attempt a retry.
failureReasonCode | int32 | optional | provide detailed errror reason code.
LocationID | bytes | optional | Assigned by the SDP. Recommended that Location requests assign the locationID from DB

### DestinationPushResponse.ResponseEnum

Name | Number | Description
SUCCESS | 0 |
INVALID_LOCATION | 1 |
INVALID_POI | 2 |
INVALID_ADDRESS | 3 |
INVALID_ROUTE_PREFERENCE | 4 |
ERROR | 5 | Generic Error Enumeration from Application Level or System Level Error

### Where to Find the ProtoBuf File

Click here to download Protobuf.

## Global_Uconnect_Ext_Signature.proto (Version 1.0)

###

    This is for validation and protection for all the messages that are stored in TU.
    Signature - NOT USED IN THIS RELEASE (1)  Change Log

    	VersionDateNotes

    1.42018-05-20Updates from Security Team added certificateChain
    1.32017-11-2Update to Proto3
     1.12017-07-10Added CertificateChain and unsignedData
    	1.02017-02-14Release of initial Proto

### Signature

A Signature message may follow any message in the UconnectMessage messages array. The purpose of the signature message is to allow validation and protection of messages that are stored on the TU for more than a single transient invocation of the client application. Signature messages may contain direct hash function values, or may be interpreted otherwise per mutual arrangement between the TU and the SDP applications.

#### Signature Example Message:

`timestamp: 1489208951716 messageId: 3 messages { [com.fca.uconnect.global.signature] { signatureId:11 signatureType: "RSA CERT" signatureValue: "put x509 cert here" } }`

Field | Type | Label | Description
signatureId | int32 | optional | The signatureId is used to correlate the message data with the signature. This can support multiple messages with separate signatures as required.
signatureType | string | optional | a well known identified that specifies the type of signature or hash. For example, SHA256.
signatureValue | bytes | optional | The signature value generated from by the Global PKI system for the associated message containing the matching signatureId.
unsignedData | bytes | optional | This is used as source data for signing.
certificateChain | bytes | repeated | This is used to return the whole chain of certificates used to sign the data

### Where to Find the ProtoBuf File

Click here to download Protobuf.

## Global_Uconnect_Ext_SQDF.proto (Version 1.0)

###

###

###

    This message is to define SQDF  UconnectAny
        |
        |------SQDFPublish
        |          |
        |          |---SQDFData
        |
        |------SQDFResponse
        |          |
        |          |---SQDFData
        |
        |------SQDFRequest SQDFData
        |
        |------GenericData
        |          |
        |          |---VehicleData
        |
        |------QuickScan
        |          |
        |          |---QuickScanECUData
        |
        |------DTCScan
        |          |
        |          |---DTCScanECUData
        |          |
        |          |--- VehicleData
        |
        |------Histogram
        |          |
        |          |---HistogramData
        |               |
        |               |---HistogramBin
        |
        |------DataLog
        |          |
        |          |--- DataLogData
        |               |
        |               |--- VehicleData
        |               |
        |               |--- Data
        |
        |------SGWData
         Change Log

    	VersionDateNotes

    1.162018-09-26Small change to vehicle subscription topic (SQDF instead of #)
    1.152018-09-18Added SRS_LAMP_STAT Added ResponseIDHex and CANFRAMEHEX to ECUData
    1.142018-08-18Change FAILED Enum in CommandStatus from 5 to 2. ServiceEnum Default changed to default1
    1.132018-06-18Replaced command Status with ServiceName and moved Enums in ServiceName to make a null default
    1.122018-06-18Added DTCScanEndTimeStamp
    1.112018-05-16UAdded new fields per assembla 448 and removed fields from DataLog per 449
    1.102018-05-10Added version to SQDFData per Assembla ticket 442 and added new descriptions per 406,407, 408, 409, 410
    1.92018-04-25Removed Afsts from VehicleData object per assmebla ticket 395
    1.82018-04-05Changes per assembla tickets 322, 323, 324
    1.72017-10-06Add EV elements to VehicleInfo.
     1.62017-08-07Updated Histogram and DataLog elements.
     1.52017-07-26Updated SQDF Data with SGWData and added additional fields.
     1.42017-07-24Moved SQDFParameters to VehSync,removed DTCTrigger
     1.32017-07-20Added DTCScanData Content Message
     1.22017-07-17Added Vehicle Data message ,HistogramData and added additional SQDF parameters
     1.12017-07-11Changed policy SubcriptionId to Bytes
    	1.02017-03-10Release of initial Proto.

    List of MQTT Topics

    	FlowTypeTopic Name

      Cloud send to VehiclePublishfcasdp/${iot:ClientId}/SQDF
    	 Cloud receive from VehicleSubscribefcasdp/SQDF/#
    	 Vehicle send to Cloud Publishfcasdp/SQDF/${iot:ClientId}
    	 Vehicle receive from Cloud Subscribefcasdp/${iot:ClientId}/SQDF

    Data FlowThe following sequence diagram depicts the flow of messages between the TBM and the SDP:

    	SequenceTitleRoleMessageTopicDescription
       1.22017-11-2Added Afsts, TXWarn1, TXwarn2,EngCoolTemp, and New Histor IDS for Outputspeed, TripCount, TripTime
     1.12017-11-2Update to Proto3
    1.0Send SQDFPublishTBMSQDFPublish/SQDF/${iot:ClientId}The SQDF Event publishes SQDFPublish Message.
    2.1Process MessageSDPThe SDP processes the message.
    2.2.Assign correlationIDSDPAssign correct correlationId.
    3.send AckMessageSDPAckMessage/SQDF/${iot:ClientId}The SDP sends AckMessage to acknowledge that it received SQDFPublish Message.
    4.Process AckMessageTBMThe client process AckMessage.
    5.PHEVEventSDPThe SQDFRequest Event  which triggers the SDP device to send a SQDFRequest to the TBM.
    6.Assign MessageIdSDPThe SDP generates the messageId for the message by incrementing a sequence counter.
    7.Send SQDFRequest MessageSDPPHEVData${iot:ClientId}/SQDFThe SDP populates the SQDFRequest Message with the required elements and publishes to the SQDF topic.
    8.Process MessageTBMThe TBM processes the message.
    9.Assign correlationIDTBMAssign correct correlationId.
    10.send SQDFResponseTBMAckMessage/SQDF/${iot:ClientId}The TBM sends SQDFResponse with SQDFData in it .
    11.Process ResponseSDPThe SDP process Response Message.

### SQDFPublish

Field | Type | Label | Description
data | SQDFData | optional |

### SQDFResponse

Field | Type | Label | Description
data | SQDFData | optional |
status | SQDFResponse.SQDFCommandStatus | optional |
failureReasonCode | int32 | optional |

### SQDFResponse.SQDFCommandStatus

Name | Number | Description
DEFAULT | 0 |
SUCCESS | 1 |
FAILED | 5 |

### SQDFRequest

Field | Type | Label | Description
serviceName | ServiceNameEnum | optional | Upload type trigger
command | SQDFRequest.SQDFCommand | repeated | For future use

### SQDFRequest.SQDFCommand

Name | Number | Description
DEFAULT | 0 |
SendData | 1 | GCD data
DoQuickScan | 2 | QuickScan dataset
DoDTCScan | 3 | DTCScan dataset
DoHistogram | 4 | Histogram dataset
DODATALOGCOMP | 5 | Datalog dataset
SGWLOGSCOMP | 6 | SGWLogs dataset

### VehicleData

This message is to define Key Vehicle Information which includes vehicleConfiguration parameters and parameters that are monitored continuously

This message is depricated as of version 2.5

Field | Type | Label | Description
ODO | int32 | optional | Odometer mileage; km
distanceToService | float | optional | Distance to Vehicel Service; Range 0 to 131071; based on distanceUnit field
brake_Pedal_Fault | VehicleData.LampStateEnum | optional | Brake Pedal Fault Indicator - use for brkSWNOFailSTat
oilLifeLeft | int32 | optional | Oil life left (OilLifeSts); %
IBS_SOC | float | optional | State of Charge from IBS system; %
travelingTimeAPlusHour | int32 | optional | Trip A hours travel time; hr
travelingTimeAPlusMinute | int32 | optional | Trip A minutes travel time; min
tirePressure | TirePressure | optional | Tire system values for pressure and inflation states
isMILOnRq | bool | optional | Engine MIL indicator status; Inactive = [0] Active = [1]
isGlowPlugs | bool | optional | Glow plug; Inactive = [0] Active = [1]
isLHTurnLightFault | bool | optional | Left hand turn light fault; Inactive = [0] Active = [1]
isRHTurnLightFault | bool | optional | Right hand turn light faul; Inactive = [0] Active = [1]
isFRTurnLightFault | bool | optional | Front right turn light fault; Inactive = [0] Active = [1]
isFLTurnLightFault | bool | optional | Front left turn light fault; Inactive = [0] Active = [1]
isRRTurnLightFault | bool | optional | Rear right turn light fault; Inactive = [0] Active = [1]
isRLTurnLightFault | bool | optional | Rear left turn light fault; Inactive = [0] Active = [1]
isPlateLmpFault | bool | optional | License plate lamp fault; Inactive = [0] Active = [1]
isDRLFault | bool | optional | Daytime running lamp fault; Inactive = [0] Active = [1]
isFuelLevelLow | bool | optional | Fuel level low; Inactive = [0] Active = [1]
isBatteryLampStsOn | VehicleData.LampStateEnum | optional | Battery reached critical state
isChrgSystemFail | VehicleData.ChargeSystemFailEnum | optional | Charging system Failure (battery indicator request)
isFuelCapOpen | bool | optional | Fuel Cap open; Inactive = [0] Active = [1]
isParkingFailSts | bool | optional | Parking System Failure; Inactive = [0] Active = [1]
isHillHolderFailSts | bool | optional | Hill Hold System Failure; Inactive = [0] Active = [1]
isEBDLAMPFailSts | VehicleData.LampStateEnum | optional | EBD Lamp Failure
isTPMIndLmpOnRq | VehicleData.LampStateEnum | optional | Tire pressure indication request
isBreakFluidLow | bool | optional | Brake fluid low level; Inactive = [0] Low = [1]
isWashFluidLow | bool | optional | Washer fluid low level; Inactive = [0] Low = [1]
isBSMServiceReqOn | bool | optional | BSM service warning request; Inactive = [0] Service Request = [1]
numStops | int32 | optional | Counts of number of stops per trip; Range 0 to 255
numHardBrakes | int32 | optional | Counts of total Hardbrake events; Range 0 to 255
maintenanceSts | VehicleData.MaintenanceStateEnum | optional | Maintenance reminder for an Oil Change
vrcUploadDayOfMonth | int32 | optional | Day setting for the calendar month to upload the monthly data set
vrcUploadTimeStamp | int64 | optional | Time setting for the calendar month to upload the monthly data set
engineRunTime | int32 | optional | Range 0 to 960, minutes
avgFuelEconomy | int32 | optional | Average Fuel Economy
batteryVoltage | float | optional | System voltage, Range 0 to 18, Init Value = 25.5, Unit = Volts
distanceUnit | VehicleData.DistanceUnitsEnum | optional | Distance (odometer) units; km = [0], miles = [1]
isRunFlatTireLow | bool | optional | Stop Lamp Fault; Inactive = [0] Active = [1]
gasRange | int32 | optional | Gas range or Distance to empty; Range 0 to 1022, Init Value 1023, Unit = km
tripAKMPL | int32 | optional | Trip A mileage; kmpl
tripAMPG | int32 | optional | Trip A mileage; mpg
tripBKMPL | int32 | optional | Trip B mileage; kmpl
tripBMPG | int32 | optional | Trip B mileage; mpg
tripATotalDistKM | int32 | optional | Trip A total distance traveled; km
tripATotalDistMiles | int32 | optional | Trip A total distance traveled; miles
tripBTotalDistKM | int32 | optional | Trip B total distance traveled; km
tripBTotalDistMiles | int32 | optional | Trip B total distance traveled; miles
vehicleSpeed | float | optional | Vehicle speed; km/h
ambientAvgTemperature | int32 | optional | Ambient temperature; °F
engineCoolantTemperature | int32 | optional | Engine coolant temperature; °C
dpfDEFWarning | int32 | optional | DEF indicator status; OFF =[0], ON =[1], Flash =[2], SNA =[3]
brakeLampIndicatorSts | VehicleData.LampStateEnum | optional | Brake indication lamp (red) on request
txTemp_Excess | string | optional | Transmission Warning System; None = [0], 1 to F = (WARN_x), TxTempWarn1
txTemp_Excess2 | string | optional | Transmission Warning System #2; None =[0], 1 to FF = (WARN_xx), TxTempWarn2
PFW | string | optional | Particulate filter warning status; PFW_Stat
IBS_I_BATT | sint32 | optional | Battery current from IBS; Range -32768 to 32766, 65535 = SNA, Amp
IBS_T_BATT | sint32 | optional | Battery temperature from IBS; Range -40 to 105, 255 = SNA, °C
IBS_V_BATT | float | optional | Battery voltage from IBS; Range 3 to 18, 16383 = SNA, V
etcLmpIndSts | VehicleData.LampStateEnum | optional | Electronic Traction Control Lamp Status
isEngineOilLampOn | bool | optional | Request oil level/oil pressure indicator lamp; Inactive =[0], Active =[0]
oilTempIndicatorRq | int32 | optional | OIL_TEMP_IND_RQ; OFF =[0], ON =[1], FLASH =[2], SNA =[3]
absLampSts | VehicleData.LampStateEnum | optional | ABS_IndLmp_On_Rq
srsIndLmpSts | VehicleData.LampStateEnum | optional |
oilPressure | int32 | optional | Oil Pressure; Range 0 to 1016, SNA=1020, kPaG
srsLmpSts | VehicleData.LampStateEnum | optional | Air Bag Warning Light Status
wtrFuelIndLmpSts | VehicleData.LampStateEnum | optional | Water in fuel lamp active
vcFuelCapacity | int32 | optional | Overall Fuel Capacity; Range 36 to 290, liters
isBSM_OPR_STAT | bool | optional | BSM operation status; 1= operational failure
avgFuelLvl | int32 | optional | Average Fuel level; Range 0 to 255, liters
epsWarnDispRq | VehicleData.StateEnum | optional | Electric power steering warning display request
escCntrlLmpSts | VehicleData.LampStateEnum | optional | ESC control lamp information(ESCControlLamp)
isPTS_FT_SRV | bool | optional | Front PTS sensor service request; Inactive = [0] Active = [1]
isPTS_RR_SRV | bool | optional | Rear PTS sensor service request; Inactive = [0] Active = [1]
isADS_SrvSys | bool | optional | ADS Service System (ADS_SrvSys); Inactive = [0] Active = [1]
isACCFaulted | bool | optional | ACC faulted; Inactive = [0] Active = [1]
isACCOnlyNA_DASMSSts | bool | optional | ACC only not available: vehicle system error; True = [1]
mapRequestCd | string | optional | Navigation Map Code
isNavigationActivated | bool | optional | Navigation Activated
isSPLmpFault | bool | optional | Stop Lamp Fault; Inactive = [0] Active = [1]
A_EV_Miles | float | optional | Trip A EV distance; Range 0 to 9999.9 16777215 = SNA, miles
A_EV_Kilometers | float | optional | Trip A EV distance; Range 0 to 16093.3 16777215 = SNA , km
A_Hybrid_Miles | float | optional | Trip A hybrid distance; Range 0 to 9999.9 16777215 = SNA, miles
A_Hybrid_Kilometers | float | optional | Trip A hybrid distance; Range 0 to 16093.3 16777215 = SNA , km
B_EV_Miles | float | optional | Trip B EV distance; Range 0 to 9999.9 16777215 = SNA, miles
B_EV_Kilometers | float | optional | Trip B EV distance; Range 0 to 9999.9 16777215 = SNA, km
B_Hybrid_Miles | float | optional | Trip B hybrid distance; Range 0 to 9999.9 16777215 = SNA, miles
B_Hybrid_Kilometers | float | optional | Trip B hybrid distance; Range 0 to 9999.9 16777215 = SNA, km
outputSpeed | float | optional | Output Speed; rpm
TripCounts | int32 | optional | Trip Counts; count
Triptime | int64 | optional | Trip Time; minutes
Afsts | int64 | optional | Fuel Type
srsIndLmpRq | VehicleData.LampStateEnum | optional | SRS indication lamp request
tCaseAWD_DrvMdRq | VehicleData.RequestState | optional | Transfer case all wheel drive request

### VehicleData.RequestState

Name | Number | Description
NSPD | 0 |
PSD | 1 |
NDEF | 2 |
R_SNA | 3 | Signal Not Available

### VehicleData.ChargeSystemFailEnum

Name | Number | Description
FALSE | 0 | Inactive
TRUE | 1 | Active
SNA | 2 | Signal not available

### VehicleData.StateEnum

Name | Number | Description
STATE_ZERO | 0 |
STATE_ONE | 1 |
STATE_TWO | 2 |
STATE_THREE | 3 |
STATE_SEVEN | 7 |

### VehicleData.MaintenanceStateEnum

Name | Number | Description
NONE | 0 | No Oil Change needed
SOON | 1 | Service Oil Change soon
NOW | 2 | Serivce Oil Change Now
SNA_STATE | 3 | Signal not available
RESET | 4 | Reset State

### VehicleData.DistanceUnitsEnum

Name | Number | Description
MILES | 0 |
KILOMETERS | 1 |

### VehicleData.LampStateEnum

Name | Number | Description
ZERO | 0 | OFF
ONE | 1 | Continuous On
TWO | 2 | Blinking
THREE | 3 | SNA, Signal not available

### SQDFData

Field | Type | Label | Description
version | string | optional | Application version "MAV.SUV.PAV" MAV - Main Version (1 byte decimal), SUV - Sub Version (1 byte decimal), PAV - Patch Version (1 byte decimal) example: 0.0.1"
vehicleId | string | optional | Vehicle Identification Number
eventId | string | optional | Event ID shall be a unique number for each upload. Part of the unique number can include the last 8 digits of the VIN. The Event ID shall include TBM2_<Region>_<Service Name>:<8 digit VIN>-<YYYYMMDDTIME>. Ex: "eventId": "TBM2_E_DTC:GH100127-20160925000002"
eventCreationTime | int64 | optional | This is Epoch time and must be converted by backend to SQDF required format
uploadVehicleLocation | Location | optional | Vehicle GPS Location during SQDF data upload
quickScanData | SQDFData.QuickScan | optional |
dtcScanData | SQDFData.DTCScan | optional |
histogram | SQDFData.Histogram | optional | Protobuf format to support uploading Histogram data.
datalog | SQDFData.DataLog | optional | Protobuf format to support uploading DataLog data.
genericData | SQDFData.GenericData | optional |
sgwData | SQDFData.SGWData | optional |
serviceName | ServiceNameEnum | optional | Service Name of the type of SQDF Data
histogramJsonData | bytes | optional | Support legacy approach for passing through Histogram data in JSON format.
histogramJsonDataString | string | optional | Support legacy approach for passing through Histogram data in JSON string.
datalogJsonData | bytes | optional | Support legacy approach for passing through DataLog data in JSON format.
datalogJsonDataString | string | optional | Support legacy approach for passing through DataLog data in JSON string.

### SQDFData.SGWData

Field | Type | Label | Description
ecuData | SQDFData.ECUData | optional |
monthlyPayload | int32 | optional |
uploadDayOfMonth | int32 | optional |
uploadTimestamp | int64 | optional |
gatewayLogs | bytes | optional |
gatewayLogsHex | string | optional | gateway logs in HEX string
idsLogs | bytes | optional |
idsLogsHex | string | optional | ids logs HEX string

### SQDFData.GenericData

A set of data values collected in response to a SQDFRequest with a command of SQDFCommand.SendData..

#### GenericData Example for SQDF.GenericData

``

timestamp: 1489075048380

messageId: 0

messages

{

[com.fca.uconnect.global.sQDFData] {

vehicleId:

}

}

Field | Type | Label | Description
vehicleData | VehicleData | optional | depricated
gcdVehicleData | SQDFData.GCDVehicleData | optional | GCD vehicle data

### SQDFData.ECUData

Field | Type | Label | Description
ecuId | string | optional |
type | SQDFData.ECUData.CanType | optional |
responseId | int32 | optional | depricated
responseIDHex | string | optional | response ID in Hex string
canFrame | bytes | optional | Depricated
canFrameHex | string | optional | CanFrame in Hex String

### SQDFData.ECUData.CanType

Name | Number | Description
DEFAULT | 0 |
CCAN | 1 |
BHCAN_OR_I_CAN | 2 |
C1_CAN | 3 |
C2_CAN | 4 |

### SQDFData.QuickScan

Field | Type | Label | Description
ODO | int32 | optional | deprecated.
ODOf | float | optional | Odometer as float value
scanVehicleLocation | Location | optional |
scanTimestamp | int64 | optional |
ecuData | SQDFData.ECUData | repeated |

### SQDFData.DTCScan

The data generated by a DTCScan.

#### GenericData Example for SQDF.GenericData policy

``

timestamp: 1489075048380

messageId: 0

messages

{

[com.fca.uconnect.global.sQDFData] {

vehicleId:

}

}

Field | Type | Label | Description
maskedDTCs | string | repeated | list of DTCs to not send - to squelch excessive traffic in the event of errors.
triggerDTCDetectionTimestamp | int64 | optional | time when dtc is detected
DTCScanEndTimestamp | int64 | optional |
triggers | SQDFData.DTCScan.DTCTrigger | repeated |
vehicleData | VehicleData | optional | depricated
dtcVehicleData | SQDFData.DTCVehicleData | optional |
dtcScanECUData | SQDFData.ECUData | repeated |
scanVehicleLocation | Location | optional |

### SQDFData.DTCScan.DTCTrigger

Field | Type | Label | Description
trigger | SQDFData.DTCScan.DTCTrigger.DTCTriggerType | optional |
name | string | optional |

### SQDFData.DTCScan.DTCTrigger.DTCTriggerType

Name | Number | Description
DEFAULT | 0 |
ECU | 1 |
LAMP | 2 |
ECU_SWAP | 3 |

### SQDFData.Histogram

### Histogram Ids

Id | Name

1 | EngTrq_Rq_ESC

2 | BATT_VOLT

3 | AvgFuelLvl

4 | EngRPM

5 | VEH_SPEED

6 | IGN_OFF_TIME_LNG

7 | INST_FUEL_ECO

8 | AMB_TEMP_AVG_F

9 | Gr

10 | TirePressFL

11 | TirePressFR

12 | TirePressRL

13 | TirePressRR

14 | TirePressRL2

15 | TirePressRR2

16 | EngCoolTemp

17 | DRV_SEATBELT

18 | PSG_SEATBELT

19 | E_Mode_Sts

20 | EngLoad

21 | IBS_V_BATT

22 | IBS_T_BATT

23 | EngineRunTime

24 | FL_HS_STAT

25 | FR_HS_STAT

26 | EngTrqStatic

27 | DAY_LGT_MD

28 | DriveStyleSts

29 | BoostPressureIndication

30 | RainSensorLvl

31 | PSG_AJAR

32 | DRV_AJAR

33 | R_R_AJAR

34 | L_R_AJAR

35 | TLG_AJAR

36 | CmdIgnSts

37 | AutoDfgStat

38 | FT_FOG_RQ

39 | AC_CLTCH_EGD

40 | MdsAct

41 | ActlAccelPdlPosn

42 | AccelPdlPosn

43 | VehPerfAccel_X

44 | VehPerfAccel_Y

45 | IBS_I_BATT

46 | FUEL_cons

47 | EngineStopTime

48 | SpStSwStat

49 | ESS_ENG_ST

50 | HardBrake

51 | MileBased

52 | SpStDispstat

53 | IBS_SOC

54 | HVBatSOC_HCP

55 | TCASE_STAT

56 | TCaseAWD_DrvMdRq

57 | SHFT_PROG

58 | CC_SetSpdDsplMPH

59 | CRUISE_EGD

100 | EngSpeedToEngineTorque_0to100rpm

101 | EngSpeedToEngineTorque_100to200rpm

102 | EngSpeedToEngineTorque_200to300rpm

103 | EngSpeedToEngineTorque_300to400rpm

104 | EngSpeedToEngineTorque_400to500rpm

105 | EngSpeedToEngineTorque_500to600rpm

106 | EngSpeedToEngineTorque_600to700rpm

107 | EngSpeedToEngineTorque_700to800rpm

108 | EngSpeedToEngineTorque_800to900rpm

109 | EngSpeedToEngineTorque_900to1000rpm

110 | EngSpeedToEngineTorque_1000to1100rpm

111 | EngSpeedToEngineTorque_1100to1200rpm

112 | EngSpeedToEngineTorque_1200to1300rpm

113 | EngSpeedToEngineTorque_1300to1400rpm

114 | EngSpeedToEngineTorque_1400to1500rpm

115 | EngSpeedToEngineTorque_1500to1600rpm

116 | EngSpeedToEngineTorque_1600to1700rpm

117 | EngSpeedToEngineTorque_1700to1800rpm

118 | EngSpeedToEngineTorque_1800to1900rpm

119 | EngSpeedToEngineTorque_1900to2000rpm

120 | EngSpeedToEngineTorque_2000to2100rpm

121 | EngSpeedToEngineTorque_2100to2200rpm

122 | EngSpeedToEngineTorque_2200to2300rpm

123 | EngSpeedToEngineTorque_2300to2400rpm

124 | EngSpeedToEngineTorque_2400to2500rpm

125 | EngSpeedToEngineTorque_2500to2600rpm

126 | EngSpeedToEngineTorque_2600to2700rpm

127 | EngSpeedToEngineTorque_2700to2800rpm

128 | EngSpeedToEngineTorque_2800to2900rpm

129 | EngSpeedToEngineTorque_2900to3000rpm

130 | EngSpeedToEngineTorque_3000to3100rpm

131 | EngSpeedToEngineTorque_3100to3200rpm

132 | EngSpeedToEngineTorque_3200to3300rpm

133 | EngSpeedToEngineTorque_3300to3400rpm

134 | EngSpeedToEngineTorque_3400to3500rpm

135 | EngSpeedToEngineTorque_3500to3600rpm

136 | EngSpeedToEngineTorque_3600to3700rpm

137 | EngSpeedToEngineTorque_3700to3800rpm

138 | EngSpeedToEngineTorque_3800to3900rpm

139 | EngSpeedToEngineTorque_3900to4000rpm

140 | EngSpeedToEngineTorque_4000to4100rpm

141 | EngSpeedToEngineTorque_4100to4200rpm

142 | EngSpeedToEngineTorque_4200to4300rpm

143 | EngSpeedToEngineTorque_4300to4400rpm

144 | EngSpeedToEngineTorque_4400to4500rpm

145 | EngSpeedToEngineTorque_4500to4600rpm

146 | EngSpeedToEngineTorque_4600to4700rpm

147 | EngSpeedToEngineTorque_4700to4800rpm

148 | EngSpeedToEngineTorque_4800to4900rpm

149 | EngSpeedToEngineTorque_4900to5000rpm

150 | EngSpeedToEngineTorque_5000to5100rpm

151 | EngSpeedToEngineTorque_5100to5200rpm

152 | EngSpeedToEngineTorque_5200to5300rpm

153 | EngSpeedToEngineTorque_5300to5400rpm

154 | EngSpeedToEngineTorque_5400to5500rpm

155 | EngSpeedToEngineTorque_5500to5600rpm

156 | EngSpeedToEngineTorque_5600to5700rpm

157 | EngSpeedToEngineTorque_5700to5800rpm

158 | EngSpeedToEngineTorque_5800to5900rpm

159 | EngSpeedToEngineTorque_5900to6000rpm

160 | EngSpeedToEngineTorque_6000to6100rpm

161 | EngSpeedToEngineTorque_6100to6200rpm

162 | EngSpeedToEngineTorque_6200to6300rpm

163 | EngSpeedToEngineTorque_6300to6400rpm

164 | EngSpeedToEngineTorque_6400to6500rpm

165 | EngSpeedToEngineTorque_6500to6600rpm

166 | EngSpeedToEngineTorque_6600to6700rpm

167 | EngSpeedToEngineTorque_6700to6800rpm

168 | EngSpeedToEngineTorque_6800to6900rpm

168 | EngSpeedToEngineTorque_6900to7000rpm

169 | EngSpeedToEngineTorque_7000toOrphanrpm

200 | MilesAtTransTorqueToGear_1

201 | MilesAtTransTorqueToGear_2

202 | MilesAtTransTorqueToGear_3

203 | MilesAtTransTorqueToGear_4

204 | MilesAtTransTorqueToGear_5

205 | MilesAtTransTorqueToGear_6

206 | MilesAtTransTorqueToGear_7

207 | MilesAtTransTorqueToGear_8

208 | MilesAtTransTorqueToGear_9

209 | MilesAtTransTorqueToGear_2ndPrime

210 | MilesAtTransTorqueToGear_R

211 | MilesAtTransTorqueToGear_R2

220 | MilesAtPedalPositionAndVehspd_0

221 | MilesAtPedalPositionAndVehspd_0-10

222 | MilesAtPedalPositionAndVehspd_10-20

223 | MilesAtPedalPositionAndVehspd_30-40

224 | MilesAtPedalPositionAndVehspd_40-50

225 | MilesAtPedalPositionAndVehspd_50-60

226 | MilesAtPedalPositionAndVehspd_60-70

227 | MilesAtPedalPositionAndVehspd_70-80

228 | MilesAtPedalPositionAndVehspd_80-90

229 | MilesAtPedalPositionAndVehspd_90-100

230 | MilesAtPedalPositionAndVehspd_100-110

231 | MilesAtPedalPositionAndVehspd_110-120

232 | MilesAtPedalPositionAndVehspd_120-130

233 | MilesAtPedalPositionAndVehspd_130-140

234 | MilesAtPedalPositionAndVehspd_140-150

235 | MilesAtPedalPositionAndVehspd_150-160

236 | MilesAtPedalPositionAndVehspd_160-170

237 | MilesAtPedalPositionAndVehspd_170-180

238 | MilesAtPedalPositionAndVehspd_180-190

240 | CountsSteeringAngle

260 | Miles_AtTransOilTemp-40to-35_vs_torque

261 | Miles_AtTransOilTemp-35to-30_vs_torque

262 | Miles_AtTransOilTemp-30to-25_vs_torque

263 | Miles_AtTransOilTemp-25to-20_vs_torque

264 | Miles_AtTransOilTemp-20to-15_vs_torque

265 | Miles_AtTransOilTemp-15to-10_vs_torque

266 | Miles_AtTransOilTemp-10to-5_vs_torque

267 | Miles_AtTransOilTemp-5to-0_vs_torque

268 | Miles_AtTransOilTemp0to5_vs_torque

269 | Miles_AtTransOilTemp5to10_vs_torque

270 | Miles_AtTransOilTemp10to15_vs_torque

271 | Miles_AtTransOilTemp15to20_vs_torque

272 | Miles_AtTransOilTemp20to25_vs_torque

273 | Miles_AtTransOilTemp25to30_vs_torque

274 | Miles_AtTransOilTemp30to35_vs_torque

274 | Miles_AtTransOilTemp35to40_vs_torque

275 | Miles_AtTransOilTemp40to45_vs_torque

276 | Miles_AtTransOilTemp45to50_vs_torque

277 | Miles_AtTransOilTemp50to55_vs_torque

278 | Miles_AtTransOilTemp55to60_vs_torque

279 | Miles_AtTransOilTemp60to65_vs_torque

280 | Miles_AtTransOilTemp65to70_vs_torque

281 | Miles_AtTransOilTemp70to75_vs_torque

282 | Miles_AtTransOilTemp75to80_vs_torque

283 | Miles_AtTransOilTemp80to85_vs_torque

284 | Miles_AtTransOilTemp85to90_vs_torque

285 | Miles_AtTransOilTemp90to95_vs_torque

286 | Miles_AtTransOilTemp95to100_vs_torque

287 | Miles_AtTransOilTemp100to105_vs_torque

288 | Miles_AtTransOilTemp105to110_vs_torque

289 | Miles_AtTransOilTemp110to115_vs_torque

290 | Miles_AtTransOilTemp115to120_vs_torque

291 | Miles_AtTransOilTemp120to125_vs_torque

292 | Miles_AtTransOilTemp125to130_vs_torque

293 | Miles_AtTransOilTemp130to135_vs_torque

294 | Miles_AtTransOilTemp135to140_vs_torque

295 | Miles_AtTransOilTemp140to145_vs_torque

296 | Miles_AtTransOilTemp145to150_vs_torque

297 | Miles_AtTransOilTemp150to155_vs_torque

298 | Miles_AtTransOilTemp155to160_vs_torque

299 | Miles_AtTransOilTemp160to165_vs_torque

300 | Miles_AtTransOilTemp165to170_vs_torque

301 | Miles_AtTransOilTemp170to175_vs_torque

302 | Miles_AtTransOilTemp175to180_vs_torque

303 | Miles_AtTransOilTemp180to185_vs_torque

304 | Miles_AtTransOilTemp185to190_vs_torque

305 | Miles_AtTransOilTemp190to195_vs_torque

306 | Miles_AtTransOilTemp195to200_vs_torque

307 | Miles_AtTransOilTemp200to205_vs_torque

320 | Time_AtTransOilTemp-40to-35_vs_torque

321 | Time_AtTransOilTemp-35to-30_vs_torque

322 | Time_AtTransOilTemp-30to-25_vs_torque

323 | Time_AtTransOilTemp-25to-20_vs_torque

324 | Time_AtTransOilTemp-20to-15_vs_torque

325 | Time_AtTransOilTemp-15to-10_vs_torque

326 | Time_AtTransOilTemp-10to-5_vs_torque

327 | Time_AtTransOilTemp-5to0_vs_torque

328 | Time_AtTransOilTemp0to5_vs_torque

329 | Time_AtTransOilTemp5to10_vs_torque

330 | Time_AtTransOilTemp10to15_vs_torque

331 | Time_AtTransOilTemp15to20_vs_torque

332 | Time_AtTransOilTemp20to25_vs_torque

333 | Time_AtTransOilTemp25to30_vs_torque

334 | Time_AtTransOilTemp30to35_vs_torque

335 | Time_AtTransOilTemp35to40_vs_torque

336 | Time_AtTransOilTemp40to45_vs_torque

337 | Time_AtTransOilTemp45to50_vs_torque

338 | Time_AtTransOilTemp50to55_vs_torque

339 | Time_AtTransOilTemp55to60_vs_torque

340 | Time_AtTransOilTemp60to65_vs_torque

341 | Time_AtTransOilTemp65to70_vs_torque

342 | Time_AtTransOilTemp70to75_vs_torque

343 | Time_AtTransOilTemp75to80_vs_torque

344 | Time_AtTransOilTemp80to85_vs_torque

345 | Time_AtTransOilTemp85to90_vs_torque

346 | Time_AtTransOilTemp90to95_vs_torque

347 | Time_AtTransOilTemp95to100_vs_torque

348 | Time_AtTransOilTemp100to105_vs_torque

349 | Time_AtTransOilTemp105to110_vs_torque

350 | Time_AtTransOilTemp110to115_vs_torque

351 | Time_AtTransOilTemp115to120_vs_torque

352 | Time_AtTransOilTemp120to125_vs_torque

353 | Time_AtTransOilTemp125to130_vs_torque

354 | Time_AtTransOilTemp130to135_vs_torque

355 | Time_AtTransOilTemp135to140_vs_torque

356 | Time_AtTransOilTemp140to145_vs_torque

357 | Time_AtTransOilTemp145to150_vs_torque

358 | Time_AtTransOilTemp150to155_vs_torque

359 | Time_AtTransOilTemp155to160_vs_torque

360 | Time_AtTransOilTemp160to165_vs_torque

361 | Time_AtTransOilTemp165to170_vs_torque

362 | Time_AtTransOilTemp170to175_vs_torque

363 | Time_AtTransOilTemp175to180_vs_torque

364 | Time_AtTransOilTemp180to185_vs_torque

365 | Time_AtTransOilTemp185to190_vs_torque

366 | Time_AtTransOilTemp190to195_vs_torque

367 | Time_AtTransOilTemp195to200_vs_torque

368 | Time_AtTransOilTemp200to205_vs_torque

380 | MilesAtT_case

400 | CountsSteeringAngle_T_casePosition_SH_IPG

401 | CountsSteeringAngle_T_casePosition_4LO

402 | CountsSteeringAngle_T_casePosition_4HI

403 | CountsSteeringAngle_T_casePosition_2WD

404 | CountsSteeringAngle_T_casePosition_N

405 | CountsSteeringAngle_T_casePosition_AUTO

406 | CountsSteeringAngle_T_casePosition_PT

407 | CountsSteeringAngle_T_casePosition_SNA

408 | Output_Speed

409 | TripCounts

410 | TripTime

411 | EngStartType

412 | DriverDoorSts

413 | TrunkLogicSts

Field | Type | Label | Description
version | string | optional | Version for Histogram configuration file
timestamp | int64 | optional | Sender clock's time when the request is processed.
histogramData | SQDFData.Histogram.HistogramData | repeated |

### SQDFData.Histogram.HistogramData

Field | Type | Label | Description
histogramId | int32 | optional | Contains the Id associated with the specific Histogram. See the table below:
histogramBins | SQDFData.Histogram.HistogramData.HistogramBin | repeated | Contains Histogram bins and its range defined in the cfg file like: [{"B1":"minus 100-minus 50"}, {"B2":"minus 50-minus20"}, {"B3":"minus 20-minus 10"}]

### SQDFData.Histogram.HistogramData.HistogramBin

Field | Type | Label | Description
binId | string | optional |
count | int32 | optional |

### SQDFData.DataLog

Field | Type | Label | Description
timestamp | int64 | optional |
version | string | optional |
dataLogData | SQDFData.DataLog.DataLogData | repeated |

### SQDFData.DataLog.DataLogData

Field | Type | Label | Description
timestamp | int64 | optional |
vehicleData | VehicleData | optional |
logData | SQDFData.DataLog.DataLogData.Data | optional | This includes additional data elements those are not in vehicleData, depricated
logDataV2 | SQDFData.DataLog.DataLogData.DataV2 | optional |

### SQDFData.DataLog.DataLogData.Data

Field | Type | Label | Description
batteryVoltage | float | optional |
engineRPM | float | optional |
vehicleSpeed | float | optional |
ignitionOffTimeLong | int32 | optional |
instantFuelEconomy | int32 | optional |
Gr | int32 | optional |
isMILOnRq | bool | optional |
ODO | int32 | optional |
avgFuelLvl | int32 | optional |
engineOilTemperature | int32 | optional |
engineCoolantTemperature | int32 | optional |
isDayLightMode | bool | optional |
isEModeSatus | bytes | optional |
driverDoorSatus | bytes | optional |
CmdIgnitionStatus | bytes | optional |
frontLeftHeatedSeatStatus | bytes | optional |
autoDfgStatus | bytes | optional |
FT_FOG_RQ | bytes | optional |
isACClutchEngaged | bool | optional |
vehPerfAccelX | float | optional |
VehPerfAccelY | float | optional |
frontRightHeatedSeatStatus | bytes | optional |
spStSwStat | bytes | optional |
essEngineStatus | bytes | optional |
ambientTemperatureAvg | int32 | optional | Temperature in F.
tirePressure | TirePressure | optional |
mzrModeAct | bytes | optional |
dpfDefWarningStatus | bytes | optional |
absLampStatus | VehicleData.LampStateEnum | optional |
brkIndLmpOnRqESC | bytes | optional |
isCheckFuelCap | bool | optional |
etcLmpIndSts | VehicleData.LampStateEnum | optional |
oilPressure | int32 | optional |
txTempExcess | bytes | optional | txTempWarn
txTemp_Excess2 | string | optional | TxTempWarn2
srsIndLmpSts | VehicleData.LampStateEnum | optional |
isBrakeFluidLow | bool | optional |
isEngineOilLampOn | bool | optional |
oilTempIndicatorRq | int32 | optional |
engineTrqRqEsc | int32 | optional |
engineLoad | int32 | optional |
IBS_T_BATT | sint32 | optional | Range -40 to 105, 255 = SNA
IBS_V_BATT | float | optional | Range 3 to 18, resolution 0.000977 16383 = SNA
IBS_SOC | float | optional |
batterySTCrit | bytes | optional |
BoostPressureIndication | int32 | optional |
rainSensorLevel | int32 | optional |
actlAcceleratorPedalPosition | int32 | optional |
acceleratorPedalPosition | int32 | optional |
IBS_I_BATT | sint32 | optional | Range -32768 to 32766, 65535 = SNA
fuelCons | int32 | optional |
engineTorqueStatic | int32 | optional |
brakeStatus | bytes | optional |
absBrakeEvent | bytes | optional |
spStDispstat | bytes | optional |
VC_AS_ERS | int32 | optional |
DrvRqShftROT | int32 | optional |
EPBHoldSts | bytes | optional |
Pad_Shft | int32 | optional |
TCaseAWD_DrvMdRq | int32 | optional |
TRNS_SPD_MC | int32 | optional |
Trns_EMCC_Achvd | int32 | optional |
outputSpdPolarity | bytes | optional |
outputSpeed | int32 | optional |
nTurb | int32 | optional |
KS | int32 | optional | Not used - Not Required.
K_STO_B | int32 | optional |
K_S_B | int32 | optional |
K_O_B | int32 | optional |
K_G_B | int32 | optional |
grTarget | int32 | optional |
gearSwitchActiveStatus | bytes | optional |
EngSt_Enbl_Rq_TCM | bytes | optional |
TX_TEMP | int32 | optional |
BrkPrss_TMC | int32 | optional |
PrplsnSysAtv | int32 | optional |
DriveReady | bytes | optional |
PRND_STAT | bytes | optional |
HVBatCntctrStat | bytes | optional |
chargingSystemStatus | bytes | optional |
chargingLevel | int32 | optional |
HVBatSOC_HCP | int32 | optional |
wheelRPMRearRight | int32 | optional |
wheelRPMRearLeft | int32 | optional |
wheelRPMFrontRight | int32 | optional |
wheelRPMFrontLeft | int32 | optional |
TCASE_STAT | bytes | optional |
SHFT_PROG | bytes | optional |
CC_SetSpdDsplMPH | int32 | optional |
ACCOnOff | bytes | optional |
CRUISE_EGD | int32 | optional |
TrnsTrqReqSlow_2 | int32 | optional |
ConsumptionUnit | bytes | optional |
PFW_Stat | bytes | optional |
Map_Eng | bytes | optional |
adblue_FL_LVL | int32 | optional |
SRS_LMP_STAT | VehicleData.LampStateEnum | optional |

### SQDFData.DataLog.DataLogData.DataV2

Field | Type | Label | Description
batteryVoltage | float | optional |
engineRPM | float | optional |
vehicleSpeed | float | optional |
ignitionOffTimeLong | int32 | optional |
instantFuelEconomy | float | optional |
Gr | int32 | optional |
isMILOnRq | int32 | optional |
ODO | float | optional |
avgFuelLvl | float | optional |
engineOilTemperature | int32 | optional |
engineCoolantTemperature | int32 | optional |
isDayLightMode | int32 | optional |
isEModeSatus | int32 | optional |
driverDoorSatus | int32 | optional |
CmdIgnitionStatus | int32 | optional |
frontLeftHeatedSeatStatus | int32 | optional |
autoDfgStatus | int32 | optional |
FT_FOG_RQ | int32 | optional |
isACClutchEngaged | int32 | optional |
vehPerfAccelX | float | optional |
VehPerfAccelY | float | optional |
frontRightHeatedSeatStatus | int32 | optional |
spStSwStat | int32 | optional |
essEngineStatus | int32 | optional |
ambientTemperatureAvg | int32 | optional | Temperature in F.
tirePressure | TirePressure | optional |
mzrModeAct | int32 | optional |
dpfDefWarningStatus | int32 | optional |
absLampStatus | int32 | optional |
brkIndLmpOnRqESC | int32 | optional |
isCheckFuelCap | int32 | optional |
etcLmpIndSts | int32 | optional |
oilPressure | int32 | optional |
txTempExcess | int32 | optional | txTempWarn
srsIndLmpSts | int32 | optional |
isBrakeFluidLow | int32 | optional |
isEngineOilLampOn | int32 | optional |
oilTempIndicatorRq | int32 | optional |
SRS_LMP_STAT | int32 | optional |
engineTrqRqEsc | float | optional |
engineLoad | float | optional |
IBS_T_BATT | sint32 | optional | Range -40 to 105, 255 = SNA
IBS_V_BATT | double | optional | Range 3 to 18, resolution 0.000977 16383 = SNA
IBS_SOC | int32 | optional |
batterySTCrit | int32 | optional |
BoostPressureIndication | float | optional |
rainSensorLevel | int32 | optional |
actlAcceleratorPedalPosition | float | optional |
acceleratorPedalPosition | float | optional |
IBS_I_BATT | sint32 | optional | Range -32768 to 32766, 65535 = SNA
fuelCons | float | optional |
engineTorqueStatic | float | optional |
brakeStatus | int32 | optional |
absBrakeEvent | int32 | optional |
spStDispstat | int32 | optional |
VC_AS_ERS | int32 | optional |
DrvRqShftROT | int32 | optional |
EPBHoldSts | int32 | optional |
Pad_Shft | int32 | optional |
TCaseAWD_DrvMdRq | int32 | optional |
TRNS_SPD_MC | int32 | optional |
Trns_EMCC_Achvd | int32 | optional |
outputSpdPolarity | float | optional |
outputSpeed | int32 | optional |
nTurb | int32 | optional |
KS | int32 | optional | Not used - Not Required.
K_STO_B | int32 | optional |
K_S_B | int32 | optional |
K_O_B | int32 | optional |
K_G_B | int32 | optional |
grTarget | int32 | optional |
gearSwitchActiveStatus | int32 | optional |
EngSt_Enbl_Rq_TCM | int32 | optional |
TX_TEMP | float | optional |
BrkPrss_TMC | int32 | optional |
PrplsnSysAtv | int32 | optional |
DriveReady | int32 | optional |
PRND_STAT | int32 | optional |
HVBatCntctrStat | int32 | optional |
chargingSystemStatus | int32 | optional |
chargingLevel | int32 | optional |
HVBatSOC_HCP | float | optional |
wheelRPMRearRight | float | optional |
wheelRPMRearLeft | float | optional |
wheelRPMFrontRight | float | optional |
wheelRPMFrontLeft | float | optional |
TCASE_STAT | int32 | optional |
adblue_FL_LVL | int32 | optional |
SHFT_PROG | int32 | optional |
CC_SetSpdDsplMPH | int32 | optional |
ACCOnOff | int32 | optional |
CRUISE_EGD | int32 | optional |
TrnsTrqReqSlow_2 | float | optional |
ConsumptionUnit | int32 | optional |
PFW_Stat | int32 | optional |
Map_Eng | float | optional |

### SQDFData.GCDVehicleData

Field | Type | Label | Description
ODO | float | optional | Odometer mileage; km
distanceToService | float | optional | Distance to Vehicel Service; Range 0 to 131071; based on distanceUnit field
oilLifeLeft | int32 | optional | Oil life left (OilLifeSts); %
IBS_SOC | int32 | optional | State of Charge from IBS system; %
travelingTimeAPlusHour | int32 | optional | Trip A hours travel time; hr
travelingTimeAPlusMinute | int32 | optional | Trip A minutes travel time; min
tirePressure | TirePressure | optional | Tire system values for pressure and inflation states
isMILOnRq | int32 | optional | Engine MIL indicator status;
isGlowPlugs | int32 | optional | Glow plug;
isLHTurnLightFault | int32 | optional | Left hand turn light fault;
isRHTurnLightFault | int32 | optional | Right hand turn light fault;
isFRTurnLightFault | int32 | optional | Front right turn light fault;
isFLTurnLightFault | int32 | optional | Front left turn light fault;
isRRTurnLightFault | int32 | optional | Rear right turn light fault;
isRLTurnLightFault | int32 | optional | Rear left turn light fault;
isPlateLmpFault | int32 | optional | License plate lamp fault;
isDRLFault | int32 | optional | Daytime running lamp fault;
isFuelLevelLow | int32 | optional | Fuel level low;
isBatteryLampStsOn | int32 | optional | Battery reached critical state
isChrgSystemFail | int32 | optional | Charging system Failure (battery indicator request)
isParkingFailSts | int32 | optional | Parking System Failure;
isHillHolderFailSts | int32 | optional | Hill Hold System Failure;
isEBDLAMPFailSts | int32 | optional | EBD Lamp Failure
isTPMIndLmpOnRq | int32 | optional | Tire pressure indication request
isBreakFluidLow | int32 | optional | Brake fluid low level;
isWashFluidLow | int32 | optional | Washer fluid low level;
isBSMServiceReqOn | int32 | optional | BSM service warning request;
numStops | int32 | optional | Counts of number of stops per trip; Range 0 to 255
numHardBrakes | int32 | optional | Counts of total Hardbrake events; Range 0 to 255
maintenanceSts | int32 | optional | Maintenance reminder for an Oil Change
vrcUploadDayOfMonth | int32 | optional | Day setting for the calendar month to upload the monthly data set
vrcUploadTimeStamp | int64 | optional | Time setting for the calendar month to upload the monthly data set
engineRunTime | int32 | optional | Range 0 to 960, minutes
avgFuelEconomy | float | optional | Average Fuel Economy
batteryVoltage | float | optional | System voltage, Range 0 to 18, Init Value = 25.5, Unit = Volts
distanceUnit | int32 | optional | Distance (odometer) units; km = [0], miles = [1]
isRunFlatTireLow | int32 | optional | Stop Lamp Fault; Inactive = [0] Active = [1]
gasRange | int32 | optional | Gas range or Distance to empty; Range 0 to 1022, Init Value 1023, Unit = km
tripAKMPL | float | optional | Trip A mileage; kmpl
tripAMPG | float | optional | Trip A mileage; mpg
tripBKMPL | float | optional | Trip B mileage; kmpl
tripBMPG | float | optional | Trip B mileage; mpg
tripATotalDistKM | float | optional | Trip A total distance traveled; km
tripATotalDistMiles | float | optional | Trip A total distance traveled; miles
tripBTotalDistKM | float | optional | Trip B total distance traveled; km
tripBTotalDistMiles | float | optional | Trip B total distance traveled; miles
ambientAvgTemperature | float | optional | Ambient temperature; °F
engineCoolantTemperature | int32 | optional | Engine coolant temperature; °C
vcFuelCapacity | int32 | optional | Overall Fuel Capacity; Range 36 to 290, liters
avgFuelLvl | float | optional | Average Fuel level; Range 0 to 255, liters
mapRequestCd | string | optional | Navigation Map Code
isNavigationActivated | int32 | optional | Navigation Activated
A_EV_Miles | float | optional | Trip A EV distance; Range 0 to 9999.9 16777215 = SNA, miles
A_EV_Kilometers | float | optional | Trip A EV distance; Range 0 to 16093.3 16777215 = SNA , km
A_Hybrid_Miles | float | optional | Trip A hybrid distance; Range 0 to 9999.9 16777215 = SNA, miles
A_Hybrid_Kilometers | float | optional | Trip A hybrid distance; Range 0 to 16093.3 16777215 = SNA , km
B_EV_Miles | float | optional | Trip B EV distance; Range 0 to 9999.9 16777215 = SNA, miles
B_EV_Kilometers | float | optional | Trip B EV distance; Range 0 to 9999.9 16777215 = SNA, km
B_Hybrid_Miles | float | optional | Trip B hybrid distance; Range 0 to 9999.9 16777215 = SNA, miles
B_Hybrid_Kilometers | float | optional | Trip B hybrid distance; Range 0 to 9999.9 16777215 = SNA, km
Afsts | int64 | optional | Fuel Type
isSPLmpFault | int32 | optional | Stop Lamp Fault;

### SQDFData.DTCVehicleData

Field | Type | Label | Description
ODO | float | optional | Odometer mileage; km
brake_Pedal_Fault | int32 | optional | Brake Pedal Fault Indicator - use for brkSWNOFailSTat
isMILOnRq | int32 | optional | Engine MIL indicator status;
isBatteryLampStsOn | int32 | optional | Battery reached critical state
isChrgSystemFail | int32 | optional | Charging system Failure (battery indicator request)
isFuelCapOpen | int32 | optional | Fuel Cap open;
isTPMIndLmpOnRq | int32 | optional | Tire pressure indication request
isBreakFluidLow | int32 | optional | Brake fluid low level;
isBSMServiceReqOn | int32 | optional | BSM service warning request;
vehicleSpeed | float | optional | Vehicle speed; km/h
dpfDEFWarning | int32 | optional | DEF indicator status;
brakeLampIndicatorSts | int32 | optional | Brake indication lamp (red) on request
txTemp_Excess | int32 | optional | Transmission Warning System; None = [0], 1 to F = (WARN_x), TxTempWarn1
txTemp_Excess2 | int32 | optional | Transmission Warning System #2; None =[0], 1 to FF = (WARN_xx), TxTempWarn2
PFW | int32 | optional | Particulate filter warning status; PFW_Stat
IBS_T_BATT | sint32 | optional | Battery temperature from IBS; Range -40 to 105, 255 = SNA, °C
IBS_V_BATT | double | optional | Battery voltage from IBS; Range 3 to 18, 16383 = SNA, V
etcLmpIndSts | int32 | optional | Electronic Traction Control Lamp Status
isEngineOilLampOn | int32 | optional | Request oil level/oil pressure indicator lamp;
oilTempIndicatorRq | int32 | optional | OIL_TEMP_IND_RQ;
absLampSts | int32 | optional | ABS_IndLmp_On_Rq
srsIndLmpSts | int32 | optional |
oilPressure | int32 | optional | Oil Pressure; Range 0 to 1016, SNA=1020, kPaG
wtrFuelIndLmpSts | int32 | optional | Water in fuel lamp active
isBSM_OPR_STAT | int32 | optional | BSM operation status; 1= operational failure
epsWarnDispRq | int32 | optional | Electric power steering warning display request
escCntrlLmpSts | int32 | optional | ESC control lamp information(ESCControlLamp)
isPTS_FT_SRV | int32 | optional | Front PTS sensor service request;
isPTS_RR_SRV | int32 | optional | Rear PTS sensor service request;
isADS_SrvSys | int32 | optional | ADS Service System (ADS_SrvSys);
isACCFaulted | int32 | optional | ACC faulted;
isACCOnlyNA_DASMSSts | int32 | optional | ACC only not available: vehicle system error;
srsIndLmpRq | int32 | optional | SRS indication lamp request

### Where to Find the ProtoBuf File

Click here to download Protobuf.

## Global_Uconnect_Ext_StolenVehAssist.proto (Version 1.0)

###

###

###

    This API is to assist the User in case of Vehicle is Stolen, and User  alerts the SDP (by means the call center)  then the SDP sends info to the client.
    When the vehicle is stolen, the SDP side can send out request to the User, asking the TBM to enter into the SVA mode.The SDP shall also send a cancel request asking the TBM to exit the SVA mode.
    The TBM shall respond with a message with related vehicle information required by the SVA service.

    	 UconnectAny
    	   |
    	   |---- StolenModeChangeRequest stolenModeChangeRequest (220)
    	   |
    	   |---- StolenModeChangeResponse stolenModeChangeResponse (221)
    	   |
    	   |---- StolenVehicleInfoNotification stolenVehicleInfoNotification (222)  Change Log

    	VersionDateNotes

       1.32018-06-20Added InitiateStolenVehicleMode
       1.22017-11-2Update to Proto3
     1.12017-04-19Moved VehicleInfo to Uconnect Common.
    	1.02017-03-17Release of initial Proto.
    	 List of MQTT Topics

    	FlowTypeTopic Name

      Cloud send to VehiclePublishfcasdp/${iot:ClientId}/SVAS
    	 Cloud receive from VehicleSubscribefcasdp/SVAS/#
    	 Vehicle send to Cloud Publishfcasdp/SVAS/${iot:ClientId}
    	 Vehicle receive from Cloud Subscribefcasdp/${iot:ClientId}/#

    Data Flow
    The following sequence diagram depicts the flow of messages between the TBM and the SDP:
    	SeqTitleRoleMessageTopicDescription

    1.Stolen Vehicle Assistance EventSDPThe SDP triggers StolenVehicleAssistance event which triggers StolenVehicleMode ChangeRequest to the Client.
    2.Assign MessageIdSDPThe SDP generates the messageId for the message by incrementing a sequence counter.
    3.Send StolenModeChangeRequest MessageSDPStolenModeChangeRequest${iot:ClientId}/SVASThe SDP populates the StolenModeChangeRequest Message with the required elements and publishes to the StolenVehicleAssistance topic.
    4.Process MessageTBMThe TBM processes the message and generates an StolenModeChangeResponse Message with the status and the correlationId set to the messageId from the received StolenModeChangeRequest Message.
    5.Send StolenModeChangeResponse MessageTBMStolenModeChangeResponse/SVAS/${iot:ClientId}The TBM publishes the StolenModeChangeResponse message to the StolenVehicleAssistance topic for the SDP to receive.
    6.Process MessageSDPThe SDP receives the message and verifies the correlationId matches the messageId of the sent request.
    optsteps 7 to 11 are opt means The interaction operator opt means that the combined fragment represents a choice of behavior where either the (sole) operand happens or nothing happens.
    loopstep 7 is in loop means the interaction operator loop means that the combined fragment represents a loop. The loop operand will be repeated a number of times. The loop construct represents a recursive application of the seq operator where
    															   the loop operand is sequenced after the result of earlier iterations.
    7.Send StolenVehicleInfoNotification MessageTBMStolenVehicleInfoNotification/SVAS/${iot:ClientId}The SDP receives the message and alert the User about Vehicle Location.
    8.1Process MessageSDPThe SDP processes the message and proceed accordingly.
    8.2.Assign correlationIDSDPAssign correct correlationId.
    8.3.send AckMessageSDPAckMessage${iot:ClientId}/SVASThe SDP sends AckMessage to acknowledge that it received StolenVehicleInfoNotification Message.
    8.4.Process AckMessageTBMThe client process AckMessage.

### StolenModeChangeRequest

This message represents StolenModeChangeRequest, When the Vehicle is stolen SDP can send a request to Client to enter into Stolen Vehicle Mode.

#### StolenModeChangeRequest Example Message:

`timestamp: 1489802160176 messageId: 11 messages { [com.fca.uconnect.global.stolenModeChangeRequest] { stolenModeCommand: ENTER

} }

`

Field | Type | Label | Description
stolenModeCommand | StolenModeChangeRequest.StolenModeCommand | optional | This identifies Whether Enter/Exit Vehicle into/from Stolen Mode.
stolenModeDuration | int32 | optional | This identifies How long Vehicle should be in StolenMode.
locationUpdateInterval | int32 | optional | This is the interval in milliseconds that TBM sends Notification to SDP.

### StolenModeChangeRequest.StolenModeCommand

Name | Number | Description
ENTER | 0 | Enter Into Vehicle Stolen Mode.
EXIT | 1 | Exit Into Vehicle Stolen Mode.

### StolenModeChangeResponse

This message is in response to StolenModeChangeRequest and Client send back related information required by SDP.

#### StolenModeChangeResponse Example Message:

`timestamp: 1489802373594 messageId: 1 correlationId: 11 messages { [com.fca.uconnect.global.stolenModeChangeResponse] { isStolenModeActive: true } }`

Field | Type | Label | Description
isStolenModeActive | bool | optional | This identifies whether Stolen Vehicle Assistance Mode active or not.

### StolenVehicleInfoNotification

When Vehicle's Stolen Vehicle Assistance mode is ON, The Client periodically send out the Vehicle Location information to the SDP.

#### StolenVehicleInfoNotification Example Message:

`timestamp: 1489802573608 messageId: 2 messages { [com.fca.uconnect.global.stolenVehicleInfoNotification] { vehicleLocation { longitude: -83.67168 latitude: 42.4804 } isIgnoreAccelerateActive: false isBlockIgnitionActive: false } }`

Field | Type | Label | Description
vehicleInfo | VehicleInfo | optional |
isStolenModeActive | bool | optional | This identifies whether Vehicle is in StolenMode.

### InitiateStolenVehicleMode

Field | Type | Label | Description
isStolenModeActive | bool | optional | This identifies whether Vehicle is in StolenMode and is used by the vehicle to notify an auto SVL

### Where to Find the ProtoBuf File

Click here to download Protobuf.

## Global_Uconnect_Ext_TheftAlarmNotify.proto (Version 1.0)

###

###

###

    This API is to notify the User in case of steal or tamper with car.When Theft alarm is detected Client sends Information to SDP to alert the User.

    	 UconnectAny
    	   |
    	   |---- TheftAlarmNotification theftAlarmNotification (210)
    	   |
    	   |---- TheftAlarmNotificationResponse theftAlarmNotificationResponse (211)
      Change Log

    	VersionDateNotes

     1.62018-07-23Updated Theft Alarm Sequence Diagram
    1.52018-05-20Added TheftAlarmSuppression per assembla ticket 222
    1.42018-04-30Added Battery and Gyro Alarm Causes per Assembla ticket 402
    1.32017-11-2Update to Proto3
     1.22017-08-11Added TheftAlarmNotificationResponse.
     1.12017-04-18Removed TheftAlarmNotificationResponse and moved vehicle status key value to common proto.
    	1.02017-03-16Release of initial Proto.
    	 List of MQTT Topics

    	FlowTypeTopic Name

      Cloud send to VehiclePublishfcasdp/${iot:ClientId}/TANF
    	 Cloud receive from VehicleSubscribefcasdp/TANF/#
    	 Vehicle send to Cloud Publishfcasdp/TANF/${iot:ClientId}
    	 Vehicle receive from Cloud Subscribefcasdp/${iot:ClientId}/#

    Data Flow
    The following sequence diagram depicts the flow of messages between the TBM and the SDP:
    	SequenceTitleRoleMessageTopicDescription

    1.TheftAlarm Notification EventTBMThe in-vehicle TheftAlartm Notification event which triggers the client device to send an TheftAlarm Notification to the SDP.
    2.Send TheftAlarmNotification MessageTBMTheftAlarmNotification/TANF/${iot:ClientId}The client populates the TheftAlarmNotification Message with the required elements and publishes to the TheftAlarmNotification topic.
    3.Process MessageSDPThe SDP processes the message and and generates an TheftAlarmNotificationResponse Message with the status and the correlationId set to the messageId from the received TheftAlarmNotification Message.
    4.Send TheftAlarmNotificationResponse MessageSDPTheftAlarmNotificationResponse${iot:ClientId}/TANFThe SDP publishes the response message to the TANF topic for the client to receive.
    5.Process MessageTBMThe client receives the message and verifies the correlationId matches the messageId of the sent request.
    Alt_1_1TheftAlarmSupressionNotifyTBMThe client Sends a TheftAlarmSuprresionNotify the indicate to the server that there has been a change of status.
    Alt_1_2AckMessageSDPThe server acknowledges receipt of the supression status.
    Alt_1_3Process messageTBMThe client receives the message and verifies the correlationId matches the messageId of the sent request.
    Alt_2_1TheftAlarmSupressionRequestSDPThe server Sends a TheftAlarmSuprresionRequest the request the theft alarm be suppressed for the specified period.
    Alt_1_2AckMessageTBMThe client acknowledges receipt of the supression request.
    Alt_1_3Process messageTBMThe client receives the message and verifies the correlationId matches the messageId of the sent request.

### TheftAlarmNotification

This message represents TheftAlarmNotification in case of any theft or Tamper with Vehicle.

#### TheftAlarmNotification Example Message:

`timestamp: 1489694193540 messageId: 1 messages { [com.fca.uconnect.global.theftAlarmNotification] { vehicleLocation { longitude: 43.9999 latitude: -84.54636 } alarmCause { isFLDoorBreached: true isVehiclePositionChanged: true } alarmStatusEnum: ACTIVE timeStamp: 1489694193538 } }`

Field | Type | Label | Description
vehicleLocation | Location | optional | Location of the Vehicle.
alarmCause | TheftAlarmNotification.AlarmCause | optional | This defines the Alarm cause.
alarmStatusEnum | TheftAlarmNotification.AlarmStatusEnum | optional | This defines whether Alarm is ACTIVE or INACTIVE.
timeStamp | int64 | optional | The milliseconds since (Jan 1, 1970 00:00:00 UTC) when the message is created. Should come from the system clock of the sender.
vehicleStatus | VehicleStatus | optional | Status of each door/window/hood/trunk

### TheftAlarmNotification.AlarmStatusEnum

Name | Number | Description
ACTIVE | 0 |
INACTIVE | 1 |

### TheftAlarmNotification.AlarmCause

Field | Type | Label | Description
isFLDoorBreached | bool | optional |
isFRDoorBreached | bool | optional |
isRLDoorBreached | bool | optional |
isRRDoorBreached | bool | optional |
isTrunkBreached | bool | optional |
isVehiclePositionChanged | bool | optional |
isGlassBreached | bool | optional |
isBatteryDisconnect | bool | optional |
isOverAccelerationThreshold | bool | optional | Required where applicable
isVehicleAlarmSystem | bool | optional | Required where applicable

### TheftAlarmNotificationResponse

Field | Type | Label | Description
response | TheftAlarmNotificationResponse.TheftAlarmResponseEnum | optional |

### TheftAlarmNotificationResponse.TheftAlarmResponseEnum

Name | Number | Description
SUCCESS | 0 |
FAILURE | 1 |

### TheftAlarmSuppressionRequest

Field | Type | Label | Description
suppressAlarm | bool | optional | Temporarily Suppress the Theft Alarm Notification
suppressDuration | TheftAlarmSuppressionRequest.DurationEnum | optional | Configured or selected duration of the suppression

### TheftAlarmSuppressionRequest.DurationEnum

Name | Number | Description
TWOHOURS | 0 |
FOURHRS | 1 |
TWELVEHRS | 2 |
TWENTYFOURHRS | 3 |
THREEDAYS | 4 |
SEVENDAYS | 5 |

### TheftAlarmSuppressionNotify

Field | Type | Label | Description
suppressionState | TheftAlarmSuppressionNotify.SupressionStateEnum | optional | Temporarily Suppress the Theft Alarm Notification
suppressDuration | int64 | optional | Configured or selected duration of the suppression

### TheftAlarmSuppressionNotify.SupressionStateEnum

Name | Number | Description
Not_Supressed | 0 | Alarm notification is active
Suppressed | 1 | Alarm notification suppressed

### Where to Find the ProtoBuf File

Click here to download Protobuf.

## Global_Uconnect_Ext_VehAuth.proto (Version 1.0)

###

###

###

     For vehicle authorization, commmonly referred to as Bootstrap, the vehicle will send an initial auth key consisting of hash of client generated challengekey and a nonce (a trust id to be identified in implementation)
    and will recieve in return a server challenge key and nonce. These will be used to generate a temporary session key, which when passed to the server will return a valid sessionid. Once received, the valid sessionId should be used in the Uconnect Message.SessionID filed for all future Uconnect Messages
    until it is refreshed.
     This is deprecated and not expected to be used by any current program
     	UconnectAny
    		|
    		|
    		|---- FirstVehAuthRequest firstVehAuthRequest (1720)
        	|
    		|---- FirstVehAuthResponse firstVehAuthResponse (1721)
    		|
    		|---- SecVehAuthRequest secVehAuthRequest (1722)
        	|
    		|---- SecVehAuthResponse secVehAuthResponse (1723)
    		|
    		|---- CreateTokenRequest createTokenRequest (1724)
        	|
    		|---- CreateTokenResponse createTokenResponse (1725)
    		|
    		|---- RefreshTokenRequest refreshTokenRequest (1724)
        	|
    		|---- RefreshTokenResponse refreshTokenResponse (1725)
       Change Log

    	VersionDateNotes

    		1.02017-12-11Moved From Auth
       	 List of MQTT Topics

    	FlowTypeTopic Name

      Cloud send to VehiclePublishfcasdp/${iot:ClientId}/
    	 Cloud receive from VehicleSubscribefcasdp/Auth/#
    	 Vehicle send to Cloud Publishfcasdp/Auth/${iot:ClientId}
    Cloud receive from VehicleSubscribefcasdp/Auth/#
    	 Vehicle send to Cloud Publishfcasdp/Auth/${iot:ClientId}
    	 Vehicle receive from Cloud Subscribefcasdp/${iot:ClientId}/#

     Data FlowThe following sequence diagram shows the messages for implementing Bootstrap to support mutual authentication between the client and the SDP:

    SequenceTitleRoleMessageTopicDescription

    100
    Generate Public Key
    TU

    110
    InitialCreate CSR
    TU

    120
    App CSR to TU Feed Data
    TU Manufacturer

    TU Manufacturer Sends TU Feed Data

    130
    CMM Receives TU Feed Data
    CMM

    The TU Feed is received at FCA and Propagated to other systems as needed

    140
    CSR and TU ID Sent to PKI
    CMM

    The PKI Certificate Generation Request is made

    150
    X.509 Certificate Returned
    PKI

    PKI Returns a Valid Certificate

    170/td>
    Request Authorization
    TU

    The TU Requests Authorization for 1st time

    180,190,200
    Download Certificate via HTTPS service
    TU
    certificateGet

    Download the client certificate

    210
    Store Certificate
    TU

    Stores the certificate for mutual authentication

    220,230
    Alternate Path: Feeds not propogated TU not known to the SDP
    SDP

    Rejects connections, unable to identify the TU and VIN relationship\n system will retry until success

    300
    Request MQTT Connection
    TU

    Open MQTT Connection and start TLS session.

    310,320
    Validate TU and TU Validate SDP
    SDP

    Mutual Auth

    330
    Connection Established
    TU

### VehAuthRequest

This is for SecondVehicleAuthorizationRequest.

#### FirstVehicleAuthorization Request Example Message:

`timestamp: 1488868820053 messageId: 1 messages { [com.fca.uconnect.global.FirstAuthorizationResponse] { “vin”: “AEEUDHS4857382038”, “tuProfile”: { “nadimei”: “323232323232”, “simMsisdn”: “12123123123”, “simIccid”: “12123123123”, “imsi”: “12123123123”, “tbmSerial”: “JK1212ASD233”, “tbmSoftwareVersion”: “17.03.03” }, “tempAuthKey”: “12ABc345”, “correlationId”: “12abCd1” } } }`

Field | Type | Label | Description
vin | string | optional | Vehicle Identification Number
device | Device | optional | requires the deviceType, IMIE, MSISDN,ICCID, IMSI, and TBM or HU Serial and Software Version
authToken | bytes | optional | Hash token of client challenge fields. Temporary Session Key (concatenated string of Client and Server Challenge Keys)
nonce | bytes | optional | Nonce for protecting against replay
type | VehAuthRequest.RequestTypeEnum | optional | Indicate the initial or second auth request.

### VehAuthRequest.RequestTypeEnum

Name | Number | Description
UNKNOWN | 0 |
INITIAL | 1 | Initial provisioning request for a temporary session.
SECOND | 2 | Secondary request to receive valid session token.

### VehAuthResponse

Field | Type | Label | Description
sessionToken | bytes | optional | Permanent Session Key provided by Server, should be used in MQTT Header for future operations
nonce | bytes | optional | CR or Correlation ID
type | VehAuthResponse.TokenTypeEnum | optional | Indicate the type of session token returned to the client.

### VehAuthResponse.TokenTypeEnum

Name | Number | Description
UNKNOWN | 0 |
TEMP | 1 | Initial temporary session token.
VALID | 2 | Valid session token.

### CreateTokenRequest

Field | Type | Label | Description
grant_type | string | optional | Type of challenge response, use "password" for basic auth
deviceId | string | optional | IMEI of TU Profile for the vehicle
permKey | string | optional | In case of TU communication bootstrap, it will be Permanent Session Key returned by the server

### CreateTokenResponse

Field | Type | Label | Description
accessToken | string | optional | Access Token
authorizationToken | string | optional | Authorization Token / Null on TU's
expiresIn | int32 | optional | The lifetime of the access token in seconds.
refreshToken | string | optional | Refresh token to be used to retrieve new tokens when they are expired
token_type | string | optional | use only bearer
accountDN | string | optional | Account DNm unique account name

### RefreshTokenRequest

Field | Type | Label | Description
grant_type | string | optional | Type of challenge response, use "refresh token" for basic auth
deviceId | string | optional | Correlation ID, unique to the TU
refreshToken | string | optional | Value of refresh token that was issued previously.

### RefreshTokenResponse

Field | Type | Label | Description
accessToken | string | optional | Access Token
authorizationToken | string | optional | Authorization Token
expiresIn | int32 | optional | time until the token(s) expire
refreshToken | string | optional | refresh Authorization Token
token_type | string | optional | use only bearer
accountDN | string | optional | Account DN
responseEnum | RefreshTokenResponse.ResponseEnum | optional | Success or Failure Response
isTransient | bool | optional | Indicates a transient error and a retry can be attempted.
failureReasonCode | int32 | optional | Specific error code. Error codes should include Invalid_Grant and Common Error Codes

### RefreshTokenResponse.ResponseEnum

Name | Number | Description
SUCCESS | 0 | Response successful for provisioning.
FAILURE | 1 | Response failure for provisioning.

### Where to Find the ProtoBuf File

Click here to download Protobuf.

## Global_Uconnect_Ext_VehDataAcquisition.proto (Version 1.0)

###

###

###

    The messages in Global_Uconnect_Ext_VehDataAcquisition.proto define a flexible mechanism for collecting data from vehicles.
    UconnectAny
        |
        |---- VehicleDataAcquisitionPublish 200
        |                    |
        |                    |---- DataSubscription
        |                    |                    |
        |                    |                    |---- DataSet
        |                    |                    |             |
        |                    |                    |             |---- DataRow
        |
        |---- VehicleDataAcquisitionPolicyPublish  250
        |                    |
        |                    |---- PolicySubscription
        |                    |                    |
        |                    |                    |---- DataSetSubscription
        |                    |                    |                    |
        |                    |                    |                    |---- FilterCriteria
        |                    |                    |                    |
        |                    |                    |                    |---- DataSetSignal
        |
        |---- VehiclePolicyUpdateRequest
      Change Log

    	VersionDateNotes

    1.112018-09-04Added Unit Of Measures to indicate signal engineering units.
    1.102018-08-27Added on change dataset.
    1.92018-08-02Added Capture Window and Histogram message types to the policy.
    1.82018-05-14Added ContentType Enum
    1.72018-05-02Added VehiclePolicyUpdateRequest per assembla ticket 429
    1.62018-05-02Removed ADA references other than topic
     1.52017-11-2Update to Proto3
     1.42017-08-15Added a vehicleId field to VehicleDataAcquisitionPublish type.
     1.32017-06-20Added fields for Signature correlation Message to VehicleDataAcquisitionPolicyPublish.
     1.22016-04-20Applicationid and policySubscriptionid is changed to bytes
     1.12016-03-05Added criteria filters.
    	1.02016-03-08Release of initial Proto.

     List of MQTT Topics

    	FlowTypeTopic Name

      Cloud send to VehiclePublishfcasdp/${iot:ClientId}/ADA
    	 Cloud receive from VehicleSubscribefcasdp/ADA/#
    	 Vehicle send to Cloud Publishfcasdp/ADA/${iot:ClientId}
    	 Vehicle receive from Cloud Subscribefcasdp/${iot:ClientId}/#

    Data FlowSequence Diagram with VehicleDataAcquisitionPolicyPublish publish and subsequent iteration of VehicleDataAcquisitionPublish :

    	SequenceTitleRoleMessageTopicDescription

    Alt_1_1 Data Application EventTBMThe application which triggers the SDP to send an VehicleDataAcquisitionPolicyPublish Request to the Client. For clients with on purpose apps, the policy is only used to create data structure between client and sdp
    Alt_1_2VehiclePolicyUpdateRequestTBMThe TBM Requests a check for new/updated policies
    Alt_1_2AckSDPThe SDP Returns an Ack message
    1.Send VehicleDataAcquisitionPolicyPublish MessageTBMVehicleDataAcquisitionPolicyPublish/ADA/${iot:ClientId}The SDP populates the VehicleDataAcquisitionPolicyPublish Message with the  elements and publishes to the ADA topic.
    2.Process MessageTBMThe TBM Receives the message and stores Policy to send Vehicle Data later..
    3-4Assign correlation ID and send AckTBMThe TBM assigns and correlation ID and returns the Ack
    5Process AckSDPThe SDP processes the Ack
    6-10Send VehicleDataAcquisitionPublish Message and process TBMVehicleDataAcquisitionPublish${iot:ClientId}/ADAThe service publishes the VehicleDataAcquisitionPublish  message with Vehicle Data to the ADA topic for the SDP to receive.

### VehicleDataAcquisitionPolicyPublish

Field | Type | Label | Description
version | int32 | optional | A version number is assigned every time there is a change in policy
policySubscription | VehicleDataAcquisitionPolicyPublish.PolicySubscription | repeated | This is a message that has details for Policy Subscriptions. Multiple subscriptions may be active at a given time, with different expiration dates.
timestamp | int64 | optional | Added for signature correlation to message
messageId | int32 | optional | Added for signature correlation to message
signatureId | int32 | optional | Added for signature correlation to message
rawPayload | bytes | optional | approach to support raw content in the Policy message.
rawContentType | string | optional | Content type of the raw content being uploaded

### VehicleDataAcquisitionPolicyPublish.SignalTypeEnum

Form in which collected data is to be collected. All signals must support at least RAW type.

Name | Number | Description
RAW | 0 |
ENGINEERING_UNITS | 1 |
ENCRYPTED | 2 |
DIFFERENCE_RAW | 3 | the first row for a given dataset in a message will have an absolute value, subsuquent rows will contain a differential value
DIFFERENCE_ENGINEERING_UNITS | 4 | the first row for a given dataset in a message will have an absolute value, subsuquent rows will contain a differential value
DIFFERENCE_ENCRYPTED | 5 | the first row for a given dataset in a message will have an absolute value, subsuquent rows will contain a differential value

### VehicleDataAcquisitionPolicyPublish.SignalValueUOMEnum

Define Unit Of Measures for Signal

Name | Number | Description
NA | 0 |
CENTIMETER | 1 |
METER | 2 |
KILOMETER | 3 |
INCH | 4 |
FOOT | 5 |
MILE | 6 |
MILLILITER | 7 |
LITER | 8 |
PINT | 9 |
QUART | 10 |
GALLON | 11 |
RADIAN | 12 |
DEGREE | 13 |
SECOND | 14 |
MINUTE | 15 |
HOUR | 16 |
DAY | 17 |
YEAR | 18 |
HERTZ | 19 |
RADIANS_PER_SECOND | 20 |
DEGREES_PER_SECOND | 21 |
DECIBEL | 22 |
METERS_PER_SECOND | 23 |
KILOMETERS_PER_HOUR | 24 |
FEET_PER_SECOND | 25 |
MILES_PER_HOUR | 26 |
GRAM | 27 |
KILOGRAM | 28 |
OUNCE | 29 |
POUND | 30 |
TON | 31 |
NEWTON | 32 |
NEWTON_METER | 33 |
FOOT_POUND | 34 |
JOULE | 35 |
WATT | 36 |
KILOWATT | 37 |
HORSEPOWER | 38 |
POUNDS_PER_SQUARE_INCH | 39 |
KELVIN | 40 |
CENTIGRADE | 41 |
FAHRENHEIT | 42 |
LUMEN | 43 |
AMPERE | 44 |
VOLT | 45 |
OHM | 46 |
KOHMS | 47 |
PERCENT | 48 |
BARS | 49 |
PSI_PER_BIT | 50 |
PULSE | 51 |
KILOMETERS_PER_LITER | 52 |
MILES_PER_GALLON | 53 |
LITRES_PER_HOUR | 54 |
METERS_PER_SECOND_SECOND | 55 |
MILLIARCSECONDS | 56 |
MILLIMETER | 57 |
FEET_PER_SECOND_SECOND | 58 |
REVOLUTION_PER_MINUTE | 59 |

### VehicleDataAcquisitionPolicyPublish.DifferenceTimeStampTypeEnum

How the row timestamps are to differentially encoded.

Name | Number | Description
NONE | 0 | each row will have an absolute timestamp
EXPLICIT_DIFFERENCES | 1 | the first row will have an absolute timestamp, subsequent rows will have a timestamp that represents the number of milliseconds since the prior row
FIXED_PERIOD_DIFFERENCES | 2 | the first row will have an absolute timestamp, subsequent rows shall be considered to have been collected at the exactly the periodic collection rate since the prior row

### VehicleDataAcquisitionPolicyPublish.FilterOperator

Stack machine operator for FilterCriteria evaluation. Operators pop the given number of values from the stack,

evaluate per their specification, and push one value back on the stack. If an operand is to be popped and the depth is zero,

or if the types of the popped values are incorrect for evaluation according to the rules of Java types, evaluation of criteria is

immediately stopped and no data will be captured in the current iteration.

Name | Number | Description
NOT | 0 | "!"
LESS | 1 | "<"
LESS_OR_EQUAL | 2 | "<="
EQUAL | 3 | "=="
GREATER_OR_EQUAL | 4 | ">
GREATER | 5 | ">
NOT_EQUAL | 6 | "!="
AND | 7 | "&&"
OR | 8 | "||"
ADD | 9 | "+"
SUBTRACT | 10 | "-"
MUTLIPLY | 11 | "*"
DIVIDE | 12 | "/"
MOD | 13 | "%"
LSHIFT | 14 | "<<"
RSHIFT | 15 | ">
BITAND | 16 | "&"
BITOR | 17 | "|"
BITNOT | 18 | "~"
BITXOR | 19 | "^"
NEGATE | 20 | "-"
NOT_NEGATE | 21 | "+"
VARIABLE_ASSIGN | 24 | "=" top of stack to variable
VARIABLE_REF | 25 | variable to top of stack
FUNCTION_CALL | 26 | call function, top of stack is number of arguments

### VehicleDataAcquisitionPolicyPublish.SignalIdTypeEnum

Indicate if the SignalId is to be used as a global unique identifier or as an index into the list of signals for the DataSetSubscription.

Name | Number | Description
INDEX_DATASETSIGNALS | 0 | Indicates that signalId values are to represent an index into the list of signals provided in the DataSetSubscription.
UNIQUE_SIGNAL_ID | 1 | Indicates the signalId values are global unique values used to identify the signals.

### VehicleDataAcquisitionPolicyPublish.QueuePolicy

Policy for how and when captured data is stored and sent to the SDP. The TU shall make a best effort to meet the specified targets,

given varying constraints on CPU, memory, storage and network capacity and availability.

Field | Type | Label | Description
flushRate | int32 | optional | data shall be flushed to persistent storage at this rate, in milliseconds.
uploadRate | int32 | optional | queued data shall be uploaded to the SDP at this rate, in milliseconds.
maxSize | int32 | optional | the total persisted storage shall not exceed this number of bytes. Once the limit is reached, data shall be flushed in as close to a LIFO manner as possible to accommodate newly queued data.

### VehicleDataAcquisitionPolicyPublish.DataSetSignal

A data set signal name identifies a particular data element to be collected by the TBM. Each referenced signal name will be polled at most once per interval, including use in filter criteria.

Some data set signal names are global, and are to

be supported in all regions. The following signals are globally :

- VIN - the VIN of the vehicle the TU is installed in. String.

- SWReleaseBranch - the version of the TU firmware. String.

- HUSerialNumber - the serial number of the TU. String.

- currentTimeMillis - the TU system clock, expressed in milliseconds elapsed since 1 January 1970 00:00:00 UTC. int64.

If a signal name is not mandatory and global, it should be prefixed with a namespace identifier. The current set of namespace identifiers is

- KONA
- geocode

The KONA namespace describes signals supported by the VP4 KONA api. The form is KONA.SignalName.ChannelName where SignalName and ChannelName are the KONA signal and channel names respectively.

The geocode namespace describes signals commonly available from commercial GPS hardware. The signals available in the geocode namespace are:

- geocode.Latitude - degrees latitude. double.

- geocode.Longitude - degrees longitude. double.

- geocode.Altitude - meters altitude. float.

- geocode.HorizontalAccuracy - horizontal position accuracy. float.

- geocode.VerticalAccuracy - vertical position accuracy. float.

- geocode.Course - course. float.

- geocode.Azimuth - azimuth. float.

- geocode.Speed - speed. float.

- geocode.LocationMethod - method used to determine location . int32.

- geocode.Timestamp - GPS timestamp in seconds. int64.

Field | Type | Label | Description
signalName | string | optional | The name of the signal to be collected
type | VehicleDataAcquisitionPolicyPublish.SignalTypeEnum | optional | The type of data to be collected for the signal
signalId | int32 | optional | Used as an additional identifier for onChangeDataSet signal definitions. The identifier can be either a global unique number or an index for the signal in the DataSet.
uom | VehicleDataAcquisitionPolicyPublish.SignalValueUOMEnum | optional | Identify the expected UOM in which the signal value will be provided.

### VehicleDataAcquisitionPolicyPublish.FilterCriteria

If filter criteria are present, a data row will be generated if

and only if the criteria evaluate to true.

The implementation is a simple stack machine; signal values and constants

are pushed, operators pop values and push booleans. The machine starts with

an empty stack and must end with exactly one boolean value on the stack.

State may be carried from one iteration to the next by the use of named regi

Field | Type | Label | Description
signalName | string | optional | push current value of this signal
doubleValue | double | optional | push constant double on stack
floatValue | float | optional | push constant float on stack
int32Value | int32 | optional | push constant signed 32 bit integer on stack
int64Value | int64 | optional | push constant signed 64 bit integer on stack
stringValue | string | optional | push constant on stack
operator | VehicleDataAcquisitionPolicyPublish.FilterOperator | optional | pop, eval, push result. See enum FilterOperator for details
branch | int32 | optional | skip next branch criteria
branch_if | int32 | optional | pop stack, if true skip next branch_if criteria

### VehicleDataAcquisitionPolicyPublish.EventTriggerCriteria

Field | Type | Label | Description
filterExpression | VehicleDataAcquisitionPolicyPublish.FilterCriteria | repeated | criteria to determine whether to trigger a collection window

### VehicleDataAcquisitionPolicyPublish.CaptureWindowPolicy

Field | Type | Label | Description
numPreTriggerSamples | int32 | optional | indicates the number of samples to buffer for the window prior to the trigger event.
numPostTriggerSamples | int32 | optional | indicates the number of samples to buffer for the window after the trigger event.
eventTriggerCriteria | VehicleDataAcquisitionPolicyPublish.EventTriggerCriteria | repeated | contains a list of trigger criteria. This essentially ORs multiple trigger criteria together.

### VehicleDataAcquisitionPolicyPublish.DataSetSubscription

Criteria for what data elements should be collected and at what rate, and how collected data should be queued and transmitted to the SDP.

Field | Type | Label | Description
period | int32 | optional | data collection period in ms
dataSetSignal | VehicleDataAcquisitionPolicyPublish.DataSetSignal | repeated | list of signals to be collected
dataSetId | int64 | optional | unique identifier for this data set, needed for the receiver to decode the list of signals
queuePolicy | VehicleDataAcquisitionPolicyPublish.QueuePolicy | optional | criteria to determine how data should be queued and sent
filterExpression | VehicleDataAcquisitionPolicyPublish.FilterCriteria | repeated | criteria to determine whether data should be sent or not sent
differentialTSEncodingType | VehicleDataAcquisitionPolicyPublish.DifferenceTimeStampTypeEnum | optional | how differential timestamps shall be encoded in multiple row datasets
captureWindowPolicy | VehicleDataAcquisitionPolicyPublish.CaptureWindowPolicy | optional | defines criteria for creating a capture window to record data pre and post event.
isOnChangeDataSet | bool | optional | Indicates if the included list of signals is to be monitored for changes at the period defined in this DataSet. If true, then the captureWindowPolicy shall be ignored. The OnChange and CaptureWindow policies are incompatible and should not be defined in the same DataSetSubscription.
signalIdType | VehicleDataAcquisitionPolicyPublish.SignalIdTypeEnum | optional | Indicate the use of the signalId value in the dataSetSignal list.

### VehicleDataAcquisitionPolicyPublish.PolicyApplication

Field | Type | Label | Description
applicationId | bytes | optional | contain any arbitrary sequence of bytes for this Application
applicationName | string | optional | Name of this application

### VehicleDataAcquisitionPolicyPublish.Histogram

Field | Type | Label | Description
histogramSignalName | string | optional | The name of the virtual signal which will return the accumulated histogram value for occurences where the filterCriteria evalulates to true.
histogramCCntSignalName | string | optional | The is a counter to track the number of concurrent samples where the histogram filterCriteria evaluates to true. Once the criteria evaluates to false, then the counter (histogramCCntSignalName) will reset to 0.
filterCriteria | VehicleDataAcquisitionPolicyPublish.EventTriggerCriteria | optional | The criteria to determine to accumulate the occurrence value for this histogram bucket.

### VehicleDataAcquisitionPolicyPublish.HistogramDataSet

Field | Type | Label | Description
histogram | VehicleDataAcquisitionPolicyPublish.Histogram | repeated | A list of Histograms for particular signals

### VehicleDataAcquisitionPolicyPublish.PolicySubscription

A PolicySubscription is a set of DataSetSubscription subscriptions and the time period for data collection.

A PolicySubscription with zero DataSetSubscriptions may be used to activate custom TU logic for a period of time.

Field | Type | Label | Description
policySubscriptionId | bytes | optional | contain any arbitrary sequence of bytes for this PolicySubscription
expirationDate | int64 | optional | contains expiration date for the current policy subscription, in milliseconds elapsed since 1 January 1970 00:00:00 UTC.
dataSetSubscription | VehicleDataAcquisitionPolicyPublish.DataSetSubscription | repeated | zero or more DataSetsSubscriptions to be collected.
application | VehicleDataAcquisitionPolicyPublish.PolicyApplication | optional | The application to which this policy applies. Applications may query their currently active PolicySubscriptions
histogramDataSet | VehicleDataAcquisitionPolicyPublish.HistogramDataSet | optional | contains the configuration for the histogram data set

### VehicleDataAcquisitionPublish

Field | Type | Label | Description
dataSubscription | VehicleDataAcquisitionPublish.DataSubscription | repeated | Multiple data set subscriptions may be collected concurrently in one PolicySubscription and sent in the same message
vehicleId | string | optional | Provide vehicle identifier when the session on the secure channel cannot be used to identify the client.
rawPayload | bytes | optional | approach to upload raw content in the VehicleDataAcquisitionPublish message.

### VehicleDataAcquisitionPublish.SignalValue

An actual data value collected. int32/sint32/sfixed32 all have the same range, as do int64/sint64/sfixed64. The sender should select as appropriate for the expected pattern of data.

Field | Type | Label | Description
bytesValue | bytes | optional | May contain an arbitrary sequence of bytes.
int32Value | int32 | optional | Uses variable-length encoding. Inefficient for encoding negative numbers â if your field is likely to have negative values, use sint32 instead.
int64Value | int64 | optional | Uses variable-length encoding. Inefficient for encoding negative numbers â if your field is likely to have negative values, use sint64 instead.
booleanValue | bool | optional | uses boolean variable, i.e. true or false.
floatValue | float | optional | IEE754 32bit float value.
doubleValue | double | optional | IEE754 double value.
stringValue | string | optional | Variable length string that contains UTF-8 encoded characters.
sint32Value | sint32 | optional | Efficient for negative as well as positive numbers. Size increases with absolute value
sint64Value | sint64 | optional | Efficient for negative as well as positive numbers. Size increases with absolute value
sfixed32Value | sfixed32 | optional | always 4 bytes, use if the field has a broad range of values
sfixed64Value | sfixed64 | optional | always 8 bytes, use if the field has a broad range of values

### VehicleDataAcquisitionPublish.DataRow

Each iteration of data collection for a DataSet will generate one data row. To fully decode and understand a data row the original DataSetSubscription list of signal names must be avaliable because the signal name is not present in this message.

Field | Type | Label | Description
timestamp | int64 | optional | Timestamp for when this data row was collected. Timestamps will typically increment per the DataSetSubscription's periodic rate, but many sources of timing jitter may affect this. If differental encoding is in use, timestamp may be sent as an absolute value in the first row, with subsequent rows having either a delta (DIFFERENTIAL_DELTA_TIME) or no timestamp value (DIFFERENATIAL_IMPLIED_PERIOD) at all.
signalValue | VehicleDataAcquisitionPublish.SignalValue | repeated | Contains information for signal value which can be any data type per SignalValue

### VehicleDataAcquisitionPublish.DataSet

Multiple iterations of data collection will be gathered on the TU, queued and sent as a DataSet

Data Set is combination of data setId and Data row.

Field | Type | Label | Description
dataSetId | int64 | optional | unique identifier for this data set, needed for the receiver to decode the list of signals.
dataRow | VehicleDataAcquisitionPublish.DataRow | repeated | this represents signal Value that is collected and its timestamp.

### VehicleDataAcquisitionPublish.OnChangeDataSet

The On Change Data Set delivers a single event.

Field | Type | Label | Description
dataSetId | int64 | optional | Unique identifier for this data set, needed for the receiver to identify this is an event.
timestamp | int64 | optional | Timestamp for when the signal value was collected.
signalId | int32 | optional | Indicates the signal identifier as either an index or unique value as defined in the DataSetSubscription.
signalValue | VehicleDataAcquisitionPublish.SignalValue | optional | Contains information for signal value which can be any data type per SignalValue

### VehicleDataAcquisitionPublish.DataSubscription

Field | Type | Label | Description
policySubscriptionId | bytes | optional | contain any arbitrary sequence of bytes for the Policy subscription id.
dataSet | VehicleDataAcquisitionPublish.DataSet | repeated | DataSets collected and queued on the TU per the QueuePolicy
onChangeDataSet | VehicleDataAcquisitionPublish.OnChangeDataSet | repeated | OnChangeDataSets collected and queued on the TU per the QueuePolicy

### VehiclePolicyUpdateRequest

Field | Type | Label | Description
vehicleId | string | optional | Unique Vehicle Identifier
policySubscription | VehicleDataAcquisitionPolicyPublish.PolicySubscription | optional | Policy Details, requires at least PolicyID
policyVersion | string | optional | Version number of the policy.

### Where to Find the ProtoBuf File

Click here to download Protobuf.

## Global_Uconnect_Ext_VehicleFinder.proto (Version 1.0)

###

###

###

    This API is to find the location of the vehicle.

    	 UconnectAny
    	   |
    	   |---- VehicleLocationRequest
    	   |
    	   |---- VehicleLocationResponse  Change Log

    	VersionDateNotes

    1.62018-09-26Added FAILURE_SPEED_LOCKOUT to response enum
    1.52018-06-20Updated VehicleLocationUpdate period enum to milliseconds
    1.42018-06-20Added VehicleLocationUpate for periodic updates
    1.32017-11-2Update to Proto3
    	1.02017-08-10Release of initial Proto.
    	 List of MQTT Topics

    	FlowTypeTopic Name

      Cloud send to VehiclePublishfcasdp/${iot:ClientId}/VFND
    	 Cloud receive from VehicleSubscribefcasdp/VFND/#
    	 Vehicle send to Cloud Publishfcasdp/VFND/${iot:ClientId}
    	 Vehicle receive from Cloud Subscribefcasdp/${iot:ClientId}/#

    Data Flow
    The following sequence diagram depicts the flow of messages between the TBM and the SDP:

### VehicleLocationRequest

This message is for SDP to request Location of the Vehicle.

#### VehicleLocationRequest Example Message:

`timestamp: 1489804992665 messageId: 11 messages { [com.fca.uconnect.global.vehicleLocationRequest] {

} }

`

Field | Type | Label | Description
serviceRequestID | bytes | optional | Service Request ID for Vehicle Finder

### VehicleLocationResponse

This message is in response to VehicleLocationRequest from SDP to Client .

#### VehicleLocationResponse Example Message:

`timestamp: 1489806024650 messageId: 3 correlationId: 12 messages { [com.fca.uconnect.global.vehicleLocationResponse] { response: SUCCESS vehicleLocation { longitude: -83.67168 latitude: 42.4804 } timestamp: 1489806024650 } }`

Field | Type | Label | Description
response | VehicleLocationResponse.VehicleLocationResponseEnum | optional |
timestamp | int64 | optional | The time of gps location reading which can also be from cache.
serviceRequestID | bytes | optional | Service Request ID from Request
vehicleLocation | Location | optional |

### VehicleLocationResponse.VehicleLocationResponseEnum

Name | Number | Description
SUCCESS | 0 | VehicleLocationResponse is Successful.
FAILURE | 1 | VehicleLocationResponse is Failed.
FAILURE_PRIVACY_ON | 2 | VehicleFinder Response Privacy is On
FAILURE_SPEED_LOCKOUT | 3 | VehicleFinder Response Vehicle is motion at speed in excess of 5MPH (NAFTA ONLY)

### VehicleLocationUpdate

Field | Type | Label | Description
periodicLocation | Location | optional | For Periodic updates of the Vehicle Location

### VehicleFinderConfig

Field | Type | Label | Description
OnDemand | bool | optional | Allow On Demand Updates
Periodic | bool | optional | Allow Periodic Updates
KeyOff | bool | optional | Allow at KeyOFf (Use Only when SQDF is not present)
updatePeriodEnum | VehicleFinderConfig.UpdatePeriod | optional | Periodic Selection expressed in milliseconds (K) for thousands)

### VehicleFinderConfig.UpdatePeriod

Name | Number | Description
FIVE_K | 0 |
TEN_K | 1 |
THIRTY_K | 2 |
SIXTY_K | 3 |
ONEHUNDRED_K | 4 |

### Where to Find the ProtoBuf File

Click here to download Protobuf.

## Global_Uconnect_Ext_VehicleMessaging.proto (Version 1.0)

###

###

###

    This API enables the SDP to send messages to HU , the HU messages that should be displayed to the operator of the vehicle, and the HU to notify the SDP when messages were displayed and the operator's response.

    	 UconnectAny
    	   |
    	   |---- VehicleMessagePublish (1610)
    	   |
    	   |---- VehicleMessageAck (1611)
    	   |
    	   |---- VehicleMessageDispositionPublish (1612)
    	   |
    	   |---- VehicleMessageDispositionAck (1613)  Change Log

    	VersionDateNotes

    1.42018-08-17Removed Enrollment Message Type, Added Subscription Message Type, Added Enumeration for Expired Notice, fixed Vehicle Received Topic
    1.32018-05-17Added Enrollment Message Type
       1.22017-11-2Update to Proto3
     1.12017-08-10Added VehicleMessageDispositionAck message
    	1.02017-03-28Release of initial Proto.
    	 List of MQTT Topics

    	FlowTypeTopic Name

      Cloud send to VehiclePublishfcasdp/${iot:ClientId}/IVM
    	 Cloud receive from VehicleSubscribefcasdp/IVM/#
    	 Vehicle send to Cloud Publishfcasdp/IVM/${iot:ClientId}
    	 Vehicle receive from Cloud Subscribefcasdp/${iot:ClientId}/#

    Data Flow
    The following sequence diagram depicts the flow of messages between the HU and the SDP:
    	SequenceTitleRoleMessageTopicDescription

    1.1Vehicle Messaging EventSDPThe vehicle messaging event which triggers the SDP  to send an VehicleMessagePublish Message to the Client.
    1.2Assign MessageIdSDPThe SDP generates the messageId for the message by incrementing a sequence counter.
    2.Send VehicleMessagePublish MessageSDPVehicleMessagePublish${iot:ClientId}/IVMThe SDP populates the VehicleMessagePublish Message with the  elements and publishes to the In Vehicle Messaging topic.
    3.1Process MessageHUThe HU processes the message and generates an VehicleMessageAck Message with the status
    3.2Assign CorrelationIDHUThe correlationId set to the messageId from the received VehicleMessagePublish Message.
    4Send VehicleMessageAck MessageHUVehicleMessageAck/IVM/${iot:ClientId}The Client publishes the Acknowledge message to the In Vehicle Messaging topic for the SDP to receive.
    5.Process MessageSDPThe SDP receives the message and verifies the correlationId matches the messageId of the sent request.
    6.Send VehicleMessageDispositionPublish MessageHUVehicleMessageDispositionPublish/IVM/${iot:ClientId}The Client publishes the VehicleMessageDispositionPublish message to the In Vehicle Messaging topic for the SDP to receive.
    7.Process MessageSDPThe SDP receives the message and verifies the correlationId matches the messageId of the initially sent request.
    8.Send VehicleMessageDispositionAck MessageSDPVehicleMessageDispositionAck${iot:ClientId}/IVMThe SDP acknowledges the VehicleMessageDispositionAck Message with the  elements and publishes to the In Vehicle Messaging topic.
    9Process MessageHUThe HU processes the message.

### VehicleMessagePublish

This message is to send any Alert Messages to the Vehicle like Service or Recall.

#### VehicleMessagePublish Example Message:

``

timestamp: 1490983981881

messageId: 11

messages

{

[com.fca.uconnect.global.vehicleMessagePublish]

{

vin: "1HGCM82633A004352"

messageType: SERVICE_NOTICE

message

{

language: "ENGLISH"

messageText: "Your Vehicle is Due for Service"

}

}

}

Field | Type | Label | Description
vehicleMessageID | int32 | optional | Generated by the ICT Back Office
vin | string | optional |
messageType | VehicleMessagePublish.MessageType | optional |
messageDetailType | VehicleMessagePublish.MessageDetailType | optional | Additional Message Type details
messageTemplate | string | optional | the template to be used to format the message
message | VehicleMessagePublish.LanguageString | repeated | the message, in the languages that are supported by the device that will display the messages. Languages sent will vary with regional requirements.
ServiceMessageEventID | string | optional | MessageEventID for tracking purposes uses the DTC Event Code
messageParameters | VehicleMessagePublish.MessageParametersEntry | repeated |

### VehicleMessagePublish.MessageType

Name | Number | Description
RECALL_NOTICE | 0 | Represents Recall Notice Message.
SERVICE_NOTICE | 1 | Represents Service Notice Message.
PC_NOTIFICATION | 2 | Represents Parental Control Notification Message.
ENROLLMENT | 3 | Represents a Welcome or other Enrollment Message
SUBSCRIPTION_NOTICE | 4 | SUBSCRIPTION MESSAGE
MARKETING | 5 | Future Use
GENERAL | 6 | General Use Messages

### VehicleMessagePublish.MessageDetailType

Name | Number | Description
RECALL_ID | 0 | NOT USED
RECALL_COMPONENT | 1 | NOT USED
RECALL_SUMMARY | 2 |
RECALL_CONSEQUENCE | 3 | NOT USED
OWNER_NEXT_STEPS | 4 |
SERVICE_DUE_DATE | 5 | NOT USED
SERVICE_SUMMARY | 7 |
SUBSCRIPTION_TO_EXPIRE | 6 |
SUBSCRIPTION_EXPIRED | 8 |
OTHER | 9 |
SUBSCRIPTION_END_DATE | 10 |
SUBSCRIPTION_TO_RENEW | 11 |
SUBSCRIPTION_DAYS_TO_EXPIRE | 12 |

### VehicleMessagePublish.LanguageString

Field | Type | Label | Description
language | string | optional | The language this text is for (Not currently Used)
messageText | string | optional | the text in the given language

### VehicleMessagePublish.MessageParametersEntry

Field | Type | Label | Description
key | string | optional |
value | string | optional |

### VehicleMessageAck

This message is to Acknowledge SDP for VehicleMessagePublish Message.

#### VehicleMessageAck Example Message:

``

timestamp: 1490983982096

messageId: 1

correlationId: 11

messages

{

[com.fca.uconnect.global.vehicleMessageAck]

{

vehicleMessageID: 1

messageReceiptTimestamp: 1490983982095

status: MESSAGE_STAGED_FOR_DISPLAY

}

}

Field | Type | Label | Description
vehicleMessageID | int32 | optional |
messageReceiptTimestamp | int64 | optional | Time the message was received by the App
status | VehicleMessageAck.ResponseEnum | optional |
failureDiagnostic | string | optional | for MESSAGE_STAGING_FAILED, any status message or result codes may be sent here

### VehicleMessageAck.ResponseEnum

Name | Number | Description
MESSAGE_STAGED_FOR_DISPLAY | 0 | The HU has successfully passed the message to the next downstream component, and is waiting for a reponse
MESSAGE_TYPE_NOT_SUPPORTED | 1 | The HU has the message, but cannot process messages of that type. The message is discarded, retry is unlikely to succeed
MESSAGE_LANGUAGES_NOT_SUPPORTED | 2 | None of the languages in which the message was furnished can be displayed by the HMI. The message is discarded
MESSAGE_STAGING_FAILED | 3 | The HU attempted to stage the message for display, but failed for an unexpected reason. The message is discarded, the SDP should examine the diagnostic to determine whether to resend
MESSAGE_DESTINATION_TEMPORARILY_NOT_AVAILABLE | 4 | The HU attempted to stage the message for display, but failed with a diagnostic that the destination ECU is absent. The message is discarded on the HU, and may be sent again.
MESSAGE_VIN_NOT_VALID | 5 | The message was discarded because the VIN attached to the HU is not the VIN in the message.
MESSAGE_AUTO_DELETE | 6 | Message is removed by the system
MESSAGE_DELETE | 7 | Message removed by user

### VehicleMessageDispositionPublish

The message has been fully processed, the HU has purged it fully.

#### VehicleMessageDispositionPublish Example Message:

``

timestamp: 1490983992118

messageId: 2

correlationId: 11

messages

{

[com.fca.uconnect.global.vehicleMessageDispositionPublish]

{

vehicleMessageID: "\275\237d\235u\350\323\021\212l\002o\247

\036\007\031!\251\001\316"

messageDisplayTimestamp: 1490983982111

messageHMIDispositionEventTimestamp: 1490983992116

disposition: MESSAGE_DISPLAY_CANCELLED

}

}

Field | Type | Label | Description
vehicleMessageID | int32 | optional |
messageDisplayTimestamp | int64 | optional | time the message was shown, or VIN change detected
messageHMIDispositionEventTimestamp | int64 | optional | time of operator interaction that closed message display
disposition | VehicleMessageDispositionPublish.MessageDispositionEnum | optional |
failureDiagnostic | string | optional | for MESSAGE_DISPLAY_FAILED, any status message or result codes may be sent here

### VehicleMessageDispositionPublish.MessageDispositionEnum

Name | Number | Description
MESSAGE_CONFIRMED_BY_OPERATOR | 0 | The message has been shown, and the operator has acknowledged by pressing OK.
MESSAGE_DISPLAY_CANCELLED | 1 | The HMI element displaying the message was closed by the operator by pressing X.
MESSAGE_DISPLAY_CONFIRMED_CALL | 6 | The message has been shown and the operator pressed they call button.
MESSAGE_VIN_NOT_VALID | 2 | The message was not displayed because the vin in VehicleMessagePublish is not the vin attached to the HU or the display ECU. Implies that the VIN has changed.
MESSAGE_TIMED_OUT | 3 | logic in the HU or a downstream component has determined that the message is too old to display
MESSAGE_LANGUAGES_NOT_SUPPORTED | 4 | None of the languages in which the message was furnished can be displayed by the HMI.
MESSAGE_DISPLAY_FAILED | 5 | logic in the HU or a downstream component has discarded the message for an unexpected reason.
MESSAGE_AUTO_DELETE | 7 | Message is removed by the system
MESSAGE_DELETE | 8 | Message removed by user

### VehicleMessageDispositionAck

The message is to acknowledge the vehicleMessageDispositionPublish message.

#### VehicleMessageDispositionAck Example Message:

``

timestamp: 1490983992220

messageId: 3

correlationId: 2

messages

{

[com.fca.uconnect.global.vehicleMessageDispositionAck]

{

response: SUCCESS

}

}

Field | Type | Label | Description
response | VehicleMessageDispositionAck.DispositionResponseEnum | optional |

### VehicleMessageDispositionAck.DispositionResponseEnum

Name | Number | Description
SUCCESS | 0 |
FAILURE | 1 |

### Where to Find the ProtoBuf File

Click here to download Protobuf.

## Global_Uconnect_Ext_VehSync.proto (Version 1.0)

###

###

###

    This API is to synchronize the Configuration with Vehicle.
      UconnectAny
        |
        |----VehicleConfigRequest (1080)
        |
        |----VehicleConfigPublish (1081)
    			|
    			|---VehSyncModel
    				|
      Change Log

    	VersionDateNotes

    1.142017-11-30Sequence Diagram and table Updates
    1.132017-11-30Make Config Update a file
       1.122017-11-2Update to Proto3
     1.112017-10-19Add config settings from TheftAlarm and Parental Controls
     1.102017-10-09Add config settings from TBM CTS
     1.92017-09-29Add config settings to ECall and BCall, update PHEV settings
     1.82017-09-20Added EncryptionLevel to CHINAPHEVSettings.
     1.72017-07-26Added TheftAlarmNotificationSettings.
     1.62017-07-26Updated SQDF Settings with additional params.
     1.52017-07-24Added SQDF Parameter.
     1.42017-07-11Added AOTASettings to VehSyncModel.
     1.32017-06-20Added fields for Signature correlation Message to VehicleConfigPublish.
     1.22017-06-19Added chinaPHEVSettings to VehSyncModel
     1.12017-03-21Moved Common messages to Common Proto
    	1.02017-03-14Release of initial Proto

      List of MQTT Topics

    	FlowTypeTopic Name

      Cloud send to VehiclePublishfcasdp/${iot:ClientId}/VCSC
    	 Cloud receive from VehicleSubscribefcasdp/VCSC/#
    	 Vehicle send to Cloud Publishfcasdp/VCSC/${iot:ClientId}
    	 Vehicle receive from Cloud Subscribefcasdp/${iot:ClientId}/#

    Data FlowThe following sequence diagram depicts the flow of messages between the TBM/HU and the SDP, only the Normal flow is documented in the table:

    	SequenceTitleRoleMessageTopicDescription

    1.Vehicle Config Sync EventSDPThe SDP triggers to send an VehiclConfigPublish to the Client.
    2.Process MessageTBM/HUThe Client processes the message and storess the Vehicle Configurations
    3.Assign CorrealationIDTBM/HUThe Client processes assigns a correalationID and generates an Ack Message
    4.Send AckMessageTBM/HUThe Client returns an Ack message to the SDP with the status of the config update
    5.Process MessageSDPThe server processes the message

### VehicleConfigPublish

Data elements to be synchronized between the vehicle and the cloud.

#### VehicleConfigPublish Example Message:

Vehicle Sync Message Example

Field | Type | Label | Description
sender | VehicleConfigPublish.Source | optional |
configSetVersion | int32 | optional | This identifies the version of this configuration.
modelData | VehSyncModel | optional |
timestamp | int64 | optional | Added for signature correlation to message
messageId | int32 | optional | Added for signature correlation to message
signatureId | int32 | optional | Added for signature correlation to message

### VehicleConfigPublish.Source

Name | Number | Description
SDP | 0 |
Vehicle | 1 |

### VehicleConfigRequest

This message is to request Vehicle Configuration.

#### VehicleConfigRequest Example Message:

`timestamp: 1490113248814 messageId: 11 messages { [com.fca.uconnect.global.vehicleConfigRequest] { configSetVersion: 1 } }`

Field | Type | Label | Description
configSetVersion | int32 | optional |

### VehSyncModel

This Message is the container for the application specific settings

Field | Type | Label | Description
configFile | bytes | optional |

### Where to Find the ProtoBuf File

Click here to download Protobuf.

## Global_Uconnect_Ext_WIFIHotSpot.proto (Version 1.0)

###

###

###

    This proto is for getting WIFI Data Status and sending Push if there is low Data.

      UconnectAny
        |
        |---- DataPackageStatusRequest dataPackageStatusRequest (140)
        |
        |---- DataPackageStatusResponse dataPackageStatusResponse (141)
    		  |
    		  |---- WifiPackageDataStatus wifiPackageDataStatus (142)
        Change Log

    	VersionDateNotes

       1.12017-11-2Update to Proto3
    	1.02017-02-15Release of initial Proto.
    	 List of MQTT Topics

    	FlowTypeTopic Name

      Cloud send to VehiclePublishfcasdp/${iot:ClientId}/WIFI
    	 Cloud receive from VehicleSubscribefcasdp/WIFI/#
    	 Vehicle send to Cloud Publishfcasdp/WIFI/${iot:ClientId}
    	 Vehicle receive from Cloud Subscribefcasdp/${iot:ClientId}/#

    Data FlowThe following sequence diagram depicts the flow of WIFI messages between the TBM and the SDP:
    	SequenceTitleRoleMessageTopicDescription

    1.Wifi EventTBMThe in-vehicle WifiHotspot event which triggers the client device to send an DataPackageStatusRequest to the SDP.
    2.Assign MessageIdTBMThe client generates the messageId for the message by incrementing a sequence counter.
    3.Send DataPackageStatusRequest MessageTBMDataPackageStatusRequest/WIFI/${iot:ClientId}The client populates the DataPackageStatusRequest Message with the no elements and publishes to the wifi topic.
    4.Process MessageSDPThe SDP processes the message and generates an DataPackageStatusResponse Message with the status and the correlationId set to the messageId from the received DataPackageStatusRequest message.
    5.Send DataPackageStatusResponse MessageSDPDataPackageStatusResponse${iot:ClientId}/WIFIThe service publishes the response message to the wifi topic for the client to receive.
    6.Process MessageTBMThe client receives the message and verifies the correlationId matches the messageId of the sent request.
    7.Send WifiPackageDataStatus  Message as a Push MessageSDPWifiPackageDataStatus${iot:ClientId}/WIFIThe service publishes the push message to the wifi topic for the client to receive.
    8.1Process MessageTBMThe client receives the message and alert the user.
    8.1Assign CorrelationIDTBMThe client generates AckMessage and assign the correlationID from received WifipackageDataStatus.
    8.1send AckMessageTBMAckMessage/WIFI/${iot:ClientId}The client sends AckMessage to acknowledge that it received WifiPackageDataStatus.

### DataPackageStatusRequest

This message is to request the usage statistics and status of the data package.

#### DataPackageStatusRequest Example Message:

`timestamp: 1489208951655 messageId: 1 messages { [com.fca.uconnect.global.dataPackageStatusRequest] { } }`

Field | Type | Label | Description

### DataPackageStatusResponse

This returns with DataPackageStatusResponse which has wifipackageData Status.

#### DataPackageStatusRequest Example Message:

`timestamp: 1489208951716 messageId: 10 correlationId: 1 messages { [com.fca.uconnect.global.dataPackageStatusResponse] { responseEnum: SUCCESS wifiPackageDataStatus { totalVolume: 1000000 totalTiming: 30 usedVolume: 500000 usedTiming: 20 isLowAlertFlag: false } } }`

Field | Type | Label | Description
responseEnum | DataPackageStatusResponse.ResponseEnum | optional | Response Enum can be Success or Failure
packageStatus | WifiPackageDataStatus | optional | WifiPackageDataStatus is a message with data status.

### DataPackageStatusResponse.ResponseEnum

Name | Number | Description
SUCCESS | 0 |
FAILURE | 1 |

### WifiPackageDataStatus

When remaining data package is getting critically low or other criteria is met, the SDP sends the data package status to TBM. When the sending criteria is met, for example remaining data low, new data package purchased, etc. the SDP enclose the data volume, used data, remaining data, package expire date etc., info in this message is sent to IVI client.

#### WifiPackageDataStatusPush Example Message:

`timestamp: 1489208952657 messageId: 11 messages { [com.fca.uconnect.global.wifiPackageDataStatus] { totalVolume: 1000000 totalTiming: 30 usedVolume: 900000 usedTiming: 20 isLowAlertFlag: true } }`

Field | Type | Label | Description
timeStamp | int64 | optional | The time at which usage measurements were generated, expressed in milliseconds elapsed since 1 January 1970 00:00:00 UTC.
totalVolume | int32 | optional | Total data in KB.
totalTiming | int32 | optional | Total time that this device may be active.
usedVolume | int32 | optional | Used data in KB.
usedTiming | int32 | optional | Used Time for data.
isLowAlertFlag | bool | optional | This represents whether data is reaching a low point.

### Where to Find the ProtoBuf File

Click here to download Protobuf.

## Global_Uconnect_GNSS.proto (Version 1.0)

###

    The proto is utilized for Destination,Address,POI and location used in other Protobuff .
    Destination AddressPointOfInterestLocation  Change Log

    	VersionDateNotes

    1.62018-06-21PositionDirection Change to Double
    1.52018-06-21Added GPS Fix Type and isGPSFixUnavailable. Removed isGPSFixCurrent
    1.42018-04-30Added Vehicle direction object per request
    1.32018-04-04Added Zip code and Secondary Unit Designation to the Address object
    1.22017-11-2Update to Proto3
    	1.12017-09-29Add additional location error details
    	1.02017-09-20Release of initial Proto

### Destination

Field | Type | Label | Description
location | Location | optional |
destinationPoi | PointOfInterest | optional | Related POI
destinationAddress | Address | optional | Related Address
createTimestamp | int64 | optional |
routePreference | Destination.RoutePreference | optional |

### Destination.RoutePreference

Name | Number | Description
DEFAULT | 0 |
FAST | 1 |
SHORT | 2 |
ECONOMICAL | 3 |
RECOMMENDATION | 4 |

### Address

Field | Type | Label | Description
countryName | string | optional | Country Name
countryCode | string | optional | Two or three digit country code (US)
provinceName | string | optional | State or Province Name
provinceCode | string | optional | Two or three digit state or province code (MI)
cityName | string | optional | City Name
cityCode | string | optional | City abbreviation code
districtCountyName | string | optional | District or county name
districtCountyCode | string | optional | District or county code (Mac)
streetName | string | optional | Name of Street
secondUnitDesignator | string | optional | Unit designation for apartment or other
streetCode | string | optional |
houseNumber | string | optional | House number of address
postalCode | string | optional | Postal Code

### PointOfInterest

Field | Type | Label | Description
name | string | optional |
category | string | optional |
id | int32 | optional |
phoneNumber | string | optional |
description | string | optional |
url | string | optional |

### Location

Field | Type | Label | Description
positionLatitude | double | optional | Position Latitude in degrees. Use NaN if not populated, during Privacy Mode
positionLongitude | double | optional | Position Longitude in degrees. Use NaN if not populated, during Privacy Mode
estimatedPositionError | int32 | optional | Estimated error in Meters in a radius around the lat/lon position. If GPS fix is not current, then estimated error should be an error value (e.g., -1 or 0x80000000).
positionAltitude | double | optional | Position Altitude.
gpsFixTypeEnum | Location.GpsFixType | optional | Indicates the type of GPS Fix
isGPSFixNotAvailable | bool | optional | True when the FixType is ID_FIX_NO_POS[0] or ID_FIX_ESTIMATED[3]
estimatedAltitudeError | int32 | optional | Estimated error in Meters above or below altitude if GPS Fix is current.
positionDirection | double | optional | Direction the vehicle is traveling.

### Location.GpsFixType

Name | Number | Description
ID_FIX_NO_POS | 0 | The GNSS fix position is not fixed.
ID_FIX_3D | 1 | 3-Dimensional position fix.
ID_FIX_2D | 2 | 2-Dimensional position fix
ID_FIX_ESTIMATED | 3 | Estimated (i.e. forward predicted) position fix.

### Where to Find the ProtoBuf File

Click here to download Protobuf.

## Global_Uconnect_VehicleInfo.proto (Version 1.0)

###

    The common proto is utilized for VehicleInfo and VehicleStatus.
    VehicleInfoVehicleStatusTirePressure
      Change Log

    	VersionDateNotes

    	1.112018-05-29Added Model and Year details per Assemla 446
    	1.112018-05-10Release of initial Proto
    1.12017-09-20Release of initial Proto
    	1.02017-09-20Release of initial Proto

### VehicleInfo

This message is common for ECall and Roadside assistance to get Vehicle Information.

Field | Type | Label | Description
vehicleLocation | Location | optional |
vehicleSpeed | float | optional | This represents the current speed of the Vehicle.
odometer | int32 | optional | Total distance traveled by Vehicle.
engineStatusEnum | VehicleInfo.EngineStatusEnum | optional | The status of the Engine/Ignition
language | string | optional | The values shall be formatted according to the ISO alpha-3/639.2 standard.
country | string | optional | The values shall be formatted according to the ISO Alpha-2 standard.
vehicleType | VehicleInfo.VehicleTypeEnum | optional |
vin | string | optional | Vehicle Identification Number
brand | string | optional | Vehicle Brand
model | string | optional | Vehicle Model
year | string | optional | Vehicle Year
recentVehicleLocation1 | Location | optional | This is to know which side Major highway the vehicle is located on,This information is needed for Routing an Emergency purpose.
recentVehicleLocation2 | Location | optional | This information is needed for Routing an Emergency purpose.

### VehicleInfo.EngineStatusEnum

Name | Number | Description
STOP | 0 |
CRANK | 1 |
IDLE | 2 |
RUN | 3 |
STALL | 4 |
REQUESTSTART | 5 |

### VehicleInfo.VehicleTypeEnum

Name | Number | Description
PASSENGER_CLASSM1 | 0 |
BUSESANDCOACHES_CLASSM2 | 1 |
BUSESANDCOACHES_CLASSM3 | 2 |
LIGHTCOMMERCIAL_CLASSN1 | 3 |
HEAVYDUTY_CLASSN2 | 4 |
HEAVYDUTY_CLASSN3 | 5 |
MOTORCYCLE_CLASSL1E | 6 |
MOTORCYCLE_CLASSL2E | 7 |
MOTORCYCLE_CLASSL3E | 8 |
MOTORCYCLE_CLASSL4E | 9 |
MOTORCYCLE_CLASSL5E | 10 |
MOTORCYCLE_CLASSL6E | 11 |
MOTORCYCLE_CLASSL7E | 12 |

### TirePressure

Field | Type | Label | Description
flTirePressure | float | optional | Front Left Tire Pressure; psi.
flTireSts | TirePressure.TireStatusEnum | optional | Front Left Tire Status.
frTirePressure | float | optional | Front Right Tire Pressure; psi.
frTireSts | TirePressure.TireStatusEnum | optional | Front Right Tire Status.
rlTirePressure | float | optional | Rear Left Tire Pressure; psi.
rlTireSts | TirePressure.TireStatusEnum | optional | Rear Left Tire Status.
rrTirePressure | float | optional | Rear Right Tire Pressure; psi .
rrTireSts | TirePressure.TireStatusEnum | optional | Rear Right Tire Status.
rl2TirePressure | float | optional | Rear Left interior (second) Tire Pressure; psi.
rr2TirePressure | float | optional | Rear Right interior (second) Tire Pressure; psi.

### TirePressure.TireStatusEnum

Name | Number | Description
NORMAL | 0 | Inflation Normal
LOW | 1 | Inflation Low (Under Inflated)
HIGH | 2 | Inflation High
SNA | 3 | Signal not available
SIGNIFICANTLY_LOW | 4 | Significantly Under Inflated)

### VehicleStatus

This message is to define Each Door/Window/Trunk/Hood/Engine status. Door/Window/Trunk/Hood should only report the status that has changed

Field | Type | Label | Description
vehicleStatusType | VehicleStatus.VehicleStatusTypeEntry | repeated | This is to identify the status being provided Door/window/Trunk/Hood Status.
vehicleStatusParameters | VehicleStatus.VehicleStatusParametersEntry | repeated | This is the Status.
engineStatusEnum | VehicleStatus.EngineStatusEnum | optional | The status of the Engine/Ignition
fuelLevel | int32 | optional |
odometer | int32 | optional |
interiorTemperature | int32 | optional |
vehicleLocationType | Location | optional |

### VehicleStatus.EngineStatusEnum

Name | Number | Description
STOP | 0 |
CRANK | 1 |
IDLE | 2 |
RUN | 3 |
STALL | 4 |
REQUESTSTART | 5 |

### VehicleStatus.Status

Name | Number | Description
CLOSED | 0 |
CLOSED_UNLOCKED | 1 |
CLOSED_LOCKED | 2 |
OPENED | 3 |

### VehicleStatus.Type

Name | Number | Description
FLDOOR | 0 |
FRDOOR | 1 |
RLDOOR | 2 |
RRDOOR | 3 |
FLWINDOW | 4 |
FRWINDOW | 5 |
LLWINDOW | 6 |
LRWINDOW | 7 |
HOOD | 8 |
TRUNK | 9 |
LIFTGATE | 10 |

### VehicleStatus.VehicleStatusTypeEntry

Field | Type | Label | Description
key | string | optional |
value | VehicleStatus.Type | optional |

### VehicleStatus.VehicleStatusParametersEntry

Field | Type | Label | Description
key | string | optional |
value | VehicleStatus.Status | optional |

### Where to Find the ProtoBuf File

Click here to download Protobuf.

## Certificate Management

## Scalar Value Types

.proto Type | Notes | C++ Type | Java Type | Python Type
double |  | double | double | float
float |  | float | float | float
int32 | Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint32 instead. | int32 | int | int
int64 | Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint64 instead. | int64 | long | int/long
uint32 | Uses variable-length encoding. | uint32 | int | int/long
uint64 | Uses variable-length encoding. | uint64 | long | int/long
sint32 | Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int32s. | int32 | int | int
sint64 | Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int64s. | int64 | long | int/long
fixed32 | Always four bytes. More efficient than uint32 if values are often greater than 2^28. | uint32 | int | int
fixed64 | Always eight bytes. More efficient than uint64 if values are often greater than 2^56. | uint64 | long | int/long
sfixed32 | Always four bytes. | int32 | int | int
sfixed64 | Always eight bytes. | int64 | long | int/long
bool |  | bool | boolean | boolean
string | A string must always contain UTF-8 encoded or 7-bit ASCII text. | string | String | str/unicode
bytes | May contain any arbitrary sequence of bytes. | string | ByteString | str