Skip to main content

Interactive Maintenance

Detailed description of API:

Version & Updates

VersionRevision DateRevision History
1.010th March 2026New Release

Overview

The interactive maintenance interface is focused on maintenance data for tracking and processing. For each vehicle, only one maintenance plan should be applied, the association of the plan depends on the characteristics and configurations of the vehicle. The plan is reprocessed every day.

image.png

Interactive Maintenance Plan within eTim

Notification of Pending Maintenance

image.png

Maintenance Info

image.png

Walkthrough of Maintenance Procedures

image.png

Pre-requisites
Pre-requisites

  • Dealer must use their Dealer Portal credentials to authorize API call.
  • Each DMS provider will have a subscription_key assigned by CNHi team, please reach out to dlnadmssupport@cnh.com for assistance
  • Each Subscription key is unique to DMS and the environment it belongs to
  • Based on the payload (XML/JSON), user to pass the content-type in the header

Authentication
Authentication

  • DMS will pass Basic auth in HTTP header with username/password
  • Each DMS provider will have a subscription_key assigned by CNHi team, please reach out to dlnadmssupport@cnh.com for assistance
  • The UserID and Password will be set up in the Dealer Portal by the Dealer uniquely for DMS access to interfaces
  • DEP API will require subscription_key in HTTP header to identify client

API Format

  • REST

The DEP takes care of the format transformations (as needed) to process the request and provide a response to the DMS system. REST format is always suggested for greater simplicity.

Connection Details

There are a total of 3 APIs for this interface:

  • Get Vehicle Telematics Status API
  • Get Next Coupons API
  • Get Maintenance History by Vin API

CNHi provides both a UAT/Staging and a Production interface for Interactive Maintenance. VINs may be unavailble within staging environment, please reach out to CNHi for VIN examples (if necessary).

Get Vehicle Telematics Status API

The Get Vehicle Telematics API is invoked to verify if the vehicle is connected when there is a next maintenance step alert displayed on eTim.

EnvironmentURLAPIRequest Type
CERT/UAThttps://{base_url}/emeaexternal/services/interactivemaintenance/vehicletelematicsstatus/{VIN}RESTGET
Productionhttps://{base_url}/emeaexternal/services/interactivemaintenance/vehicletelematicsstatus/{VIN}RESTGET

Request Parameters

Note: All Request Query Parameters are case sensitive.
NameInputTypeIs RequiredComments
VINTemplate ParameterStringTrueVIN Number

Response Description

NameData TypeDescription
dataJSON Object
data.vin9String
data.vin17String
data.coveredByUcrBoolean
data.coveredByUcrStatusInt
data.isConnectedBoolean
data.servicesJSON Array (of String)List of warranties associated to this vehicle.
data.contextsJSON Array (of String)This indicates if it is AG or CE
data.telematicsBoxesJSON Array (of String)Kind of telematics box installed (PCM, PCMF, AM53, CM1X)
data.modemsJSON Array (of String)Serial number of the telematics box
data.engineHoursFloat
data.lastCommunicationDateDate Time (nullable)
data.customerString
data.warrantyStartDateDate Time (nullable)
data.connectivityStatusInt (nullable)
data.maintenancePlanStatusInt (nullable)
data.warrantyStatusInt (nullable)
data.averageAnnualUsageInt (nullable)Average number of engine hours estimated by the dealer for that vehicle. This value is inserted in the service.
data.maintenanceAlertIsActiveBoolean
statusJSON Object
status.codeInt
status.messageString

Sample Response

Download GetVehicleTelematics API Sample Response

Note:

• If the vin is present in UCR but there are no engineHours, you will receive parameters coveredByUcr = true and isConnected = false

• If the vin is present in UCR and there are engineHours, you will receive parameters coveredByUcr = true and isConnected = true

• If the vin isn’t present in UCR and there are no engineHours, you will receive parameters coveredByUcr = false and isConnected = false

Real ValueCovered By UCRCovered By UCR Status
Covered by UCRTrue0
Not Covered by UCRFalse-1
ExpiredFalse1
No TransmissionFalse2
InactiveFalse3
No Maintenance PlanFalse4

Get Next Coupons API

Note: All Request Query Parameters are case sensitive.
EnvironmentURLAPIRequest Type
CERT/UAThttps://{base_url}/emeaexternal/services/interactivemaintenance/couponsRESTPUT
Productionhttps://{base_url}/emeaexternal/services/interactivemaintenance/couponsRESTPUT

Response Body

Input body parameter, JSON body parameter is given below.

    {
"vin": "string",
"isConnected": true,
"enginehours": 0,
"language": "string",
"numberOfbales": 0
}

Note: Payload (JSON or XML) determined by content-type in the header of the request: Content-Type application/JSON

Response Description

NameData TypeDescription
dataJSON Object
data.icecodeString
data.plan_idInt
data.vehicle_next_stopFloat
data.vehicle_delta_overdue_hoursInt
data.vehicle_stop_dateDate Time
data.vehicle_delta_overdue_daysInt
data.contract_numberString
data.contract_start_dateDate Time
data.contract_end_dateDate Time
data.warranty_typeString
data.warranty_start_dateDate Time
data.is_optimizedBoolean
data.vehicleNextStopBalesIntClosest next stop for coupon in bales
data.vehicleDeltaOverdueBalesIntNumber of overdue bales
data.applicable_mission_listJSON Array
data.applicable_mission_list.idInt
data.applicable_mission_list.descriptionString
data.applicable_mission_list.plan_idInt
data.nextCouponsJSON Array
data.nextCoupons.last_enghFloat
data.nextCoupons.numberOfBalesIntCurrent number of bales
data.nextCoupons.dayDate Time
data.nextCoupons.last_maintenance_stepInt
data.nextCoupons.next_maintenance_stepInt
data.nextCoupons.maintenance_typeString
data.nextCoupons.descriptionString
data.nextCoupons.next_maintenanceInt
data.nextCoupons.next_maintenance_descString
data.nextCoupons.hours_in_overdueInt
data.nextCoupons.is_high_overdueBoolean
data.nextCoupons.is_coupon_next_stopBoolean
data.nextCoupons.days_in_overdueInt
data.nextCoupons.is_high_overdue_daysBoolean
data.nextCoupons.forecast_in_hoursFloat
data.nextCoupons.is_forecast_in_tolerance_hoursBoolean
data.nextCoupons.forecast_in_daysInt
data.nextCoupons.is_forecast_in_tolerance_monthsBoolean
data.nextCoupons.working_unitsInt
data.nextCoupons.defect_codeString
data.nextCoupons.is_hiddenBoolean
data.nextCoupons.nextMaintenanceStepBalesInt
data.nextCoupons.balesInOverdueInt
data.nextCoupons.forecastInBalesInt
data.nextCoupons.isHighOverdueBalesInt
data.nextCoupons.isForecastInToleranceBalesBoolean
data.nextCoupons.operationsJSON Array
data.nextCoupons.operations.codeString
data.nextCoupons.operations.descriptionString
data.nextCoupons.operations.desc_seriesString
data.nextCoupons.operations.locationString
data.nextCoupons.operations.location_descriptionString
data.nextCoupons.operations.type_descriptionString
data.nextCoupons.operations.partsJSON Array
data.nextCoupons.operations.parts.part_numberString
data.nextCoupons.operations.parts.descriptionString
data.nextCoupons.operations.parts.second_descString
data.nextCoupons.operations.parts.quantityFloat
data.nextCoupons.operations.parts.is_kitBoolean
data.nextCoupons.operations.parts.groupInt
data.nextCoupons.operations.consumablesJSON Array
data.nextCoupons.operations.consumables.cons_idInt
data.nextCoupons.operations.consumables.occurrence_idInt
data.nextCoupons.operations.consumables.technical_characteristicString
data.nextCoupons.operations.consumables.descriptionString
data.nextCoupons.operations.consumables.second_descString
data.nextCoupons.operations.consumables.part_numberString
data.nextCoupons.operations.consumables.quantityFloat
data.nextCoupons.operations.consumables.unitString
data.nextCoupons.operations.consumables.quantity_ukFloat
data.nextCoupons.operations.consumables.unit_ukString
statusJSON Object
status.codeInt
status.messageString

Sample Response

Download GetNextCoupons API Sample Response

Output Values

next_maintenance and next_maintenance_desc output values:

next_maintenancenext_maintenance_desc
0Coupon history
1Coupon in Tolerance Engine Hours
2Coupon in Tolerance Next Stop
3Alert
4Overdue

Get Maintenance History by VIN API

This API query is initiated by passing the VIN number, and the code language (refer to appendix) of the vehicle. It retrieves all the relevant information for maintenance history along with the details of all applied coupons (currently in eTim).

EnvironmentURLAPIRequest Type
CERT/UAThttps://{base_url}/emeaexternal/services/interactivemaintenance/maintenancehistorybyvin/{VIN}RESTGET
Productionhttps://{base_url}/emeaexternal/services/interactivemaintenance/maintenancehistorybyvin/{VIN}RESTGET

Request Parameters

Note: All Request Query Parameters are case sensitive.
NameInputTypeIs RequiredComments
VINTemplate ParameterStringTrueVIN Number
langQuery ParameterCharFalseContains the code language

Response Description

NameData Type
dataJSON Object
data.vinString
data.maintenanceServicesHistoryListJSON Array
data.maintenanceServicesHistoryList.maintenanceServiceDateDate Time
data.maintenanceServicesHistoryList.serviceEngineHoursFloat
data.maintenanceServicesHistoryList.maintenanceSaveDateDate Time
data.maintenanceServicesHistoryList.telematicsEngineHoursFloat
data.maintenanceServicesHistoryList.planIdInt
data.maintenanceServicesHistoryList.commentsString
data.maintenanceServicesHistoryList.theoreticalEngineHoursFloat
data.maintenanceServicesHistoryList.theoreticalDateDate Time
data.maintenanceServicesHistoryList.platformString
data.maintenanceServicesHistoryList.userTypeString
data.maintenanceServicesHistoryList.dealerCodeString
data.maintenanceServicesHistoryList.numberOfBalesInt
data.maintenanceServicesHistoryList.maintenanceTypeListJSON Array
data.maintenanceServicesHistoryList.maintenanceTypeList.maintenanceTypeString
data.maintenanceServicesHistoryList.maintenanceTypeList.workingUnitsString
data.maintenanceServicesHistoryList.maintenanceTypeList.descriptionString
data.maintenanceServicesHistoryList.maintenanceTypeList.operationsJSON Array
data.maintenanceServicesHistoryList.maintenanceTypeList.operations.codeString
data.maintenanceServicesHistoryList.maintenanceTypeList.operations.descriptionString
data.maintenanceServicesHistoryList.maintenanceTypeList.operations.descriptionSeriesString
data.maintenanceServicesHistoryList.maintenanceTypeList.operations.locationString
data.maintenanceServicesHistoryList.maintenanceTypeList.operations.location_descriptionString
data.maintenanceServicesHistoryList.maintenanceTypeList.operations.type_descriptionString
data.maintenanceServicesHistoryList.maintenanceTypeList.operations.partsJSON Array
data.maintenanceServicesHistoryList.maintenanceTypeList.operations.parts.partNumberString
data.maintenanceServicesHistoryList.maintenanceTypeList.operations.parts.descriptionString
data.maintenanceServicesHistoryList.maintenanceTypeList.operations.parts.secondDescriptionString
data.maintenanceServicesHistoryList.maintenanceTypeList.operations.parts.originalBoolean
data.maintenanceServicesHistoryList.maintenanceTypeList.operations.consumablesJSON Array
data.maintenanceServicesHistoryList.maintenanceTypeList.operations.consumables.consIdInt
data.maintenanceServicesHistoryList.maintenanceTypeList.operations.consumables.occurrenceIdInt
data.maintenanceServicesHistoryList.maintenanceTypeList.operations.consumables.descriptionString
data.maintenanceServicesHistoryList.maintenanceTypeList.operations.consumables.partNumberString
statusJSON Object
status.codeInt
status.messageString

Sample Response

Download GetMaintenanceHistoryByVin API Sample Response

Response Codes

TitleReasonCode
REST success responseSuccess200
REST failure responseAuthentication Error: Access denied due to missing credentials!401
REST failure responseInternal Server Error500
REST failure responseBad Request400