Skip to main content

How to create an appointment

This document is designed to help you understand how to create an appointment in myKaarma, what all parameters would you need, how to fetch them and then use them to best suit your use case.

You can create appointments in myKaarma for customer visits so that your Service Advisors are aware of their daily schedule and your customers could be notified/reminded for their scheduled visit.

To create an appointment, you first need your credentials. If you don't already have one, head over to the Authentication and Authorization page to see how you can request for credentials from us.

Parameters

Path parameter:

Required path parameters for process :

Parameter NameTypeDescription
departmentUUIDstringUnique identifier of dealer's department
dealerUuidStringUnique identifier of dealer

Scope

This process requires the following authorization scopes :

ScopeLevelDescription
customer.searchDealerDepartmentAuthorizes client to search for customers for provided user's dealer department
customer.updateDealerDepartmentAuthorizes client to create customer for provided user's dealer department
kopcode.operation.readDealerDepartmentAuthorizes client to get operation codes for given dealership
appointment.configurationDealerAuthorizes client to get eligible advisor for the provided dealer
appointment.transportOptionsDealerDepartmentAuthorizes client to get transportOption for a dealer
manage.dealerassociate.groupDealerDepartmentAuthorizes client to manage dealerassociate group

The following endpoints can help you with forming a proper request to create an appointment:

Process

To create an appointment in myKaarma, follow these steps based on your use case.

Decision Tree

  • Search for a Customer: Please refer to search and then create customer documentation. For this process, you will need to get UUID of the customer and vehicle.

  • Get services/opcodes: Please refer to get opcodes and menus. For this process, you can get the UUIDs of these services. Alternatively, you can also use the laborOpcodes of these services.

  • Get Advisors: If your use case doesn't need a specific advisor to whom appointment will be assigned, you can skip this step. You can pass the 'assignedUser' field as null. If it does require a specific advisor, then you will to find the UUID of this advisor. Please refer to get eligible advisors to find the UUID for your particular advisor.

  • Get Transport options: If your use case doesn't require any particular transport option or the transport option is 'None' for the appointment, you can pass 'transportOption' field as null. If it requires a different transport option, go through this page to obtain the UUID of the required transport option.

  • Get Team List: Teams are basically group of advisors created at the dealership. Let us say dealership wants appointments of a particular vehicle go to only a group of advisors, teams are helpful in such a setup. Again, if your use case is of no particular advisor then you can send 'teamUuid' as null and skip this step. If it is not, then please go through this page and check which teams have the UUID of the advisor you want to be assigned to the appointment and then select a team of your choice. Store the team's UUID for further processing.

  • Get slots available for appointment: Now you have all the parameters needed to create the appointment ready and need to find an available slot to schedule the appointment. Please note that availability of slots depend on various parameters:

  • Customer information
  • Vehicle information
  • Advisor to which appointment is assigned.
  • Team of the advisor to which appointment is assigned.
  • Services related to the appointment.
  • Transport option related to the appointment.

You have obtained the unique identifiers of all these parameters in previous steps of this process. You have to pass these identifiers in the availability request. Please note:

  • It is advised to fetch availability everytime one of these parameters is added/changed.
  • There are limits on how many appointments can be scheduled per transport option, advisor or dealership on slot, date and day level. Thus, availability also may change whenever an appointment is scheduled. The appointment can be scheduled from any myKaarma client or any other API partners. Keeping this in mind, it is advised to fetch availability right before scheduling the appointment.

For detailed explanation on how to get the available slots, refer to this page.

Request

HTTP request

POST  https://api.mykaarma.com/appointment/v2/dealer/{dealerUuid}/appointment

Parameters

Path parameter:

Parameter NameValueDescriptionRequired
dealerUuidStringUnique identifier of dealerYes

Authorization

This request requires the following authorization scopes:

ScopeLevelDescription
appointment.createDealerAuthorises client to create appointment for the provided dealer

Request Body

Property NameValueDescriptionRequired
customerUuidStringUnique token assigned to each customer in myKaarmaYes
vehicleInformationObjectDetails of the vehicle for which appointment is to be created such as - vin , vehicleKey , vehicleUuidYes
appointmentStartDateTimeStringThe preferred start date-time of the appointment in yyyy-MM-ddTHH:mm:ss formatYes
appointmentEndDateTimeStringThe preferred end date-time of the appointment in yyyy-MM-ddTHH:mm:ss formatNo
transportationStringOption Name of transport option fetched using 'Get Transport options' endpoint. Example: LoanerNo
transportOptionUuidStringUUID of transport option fetched using 'Get Transport options' endpoint. Example: -f_LNZEWiHQg4AbTH-b_qmDTO8CKwkSQXCtpYFHfWGwNo
altTransportationStringCustom Name of transport option fetched using 'Get Transport options' endpoint. Example: LoanerNo
assignedUserObejctThe details of the dealer associate to whom the appointment is assignedNo
creatorUserObjectThe details of the dealer associate who created the appointmentNo
appointmentKeyStringUnique token assigned to each appointment in DMSNo
commentsStringComments/remarks for the appointment taken as customer's notesNo
internalNotesStringInternal notes for the appointment which are intended for the dealership personnel only and not for the customer's visibilityNo
serviceListObjectList of services to be performed on the customer's vehicle for the appointment. It contains field like title, description, etc.
title: Title of the service (also referred as labor opcode)
description: Description of the service
No
customerAppointmentPreferenceObjectPreferences for customer communicationNo
emailConfirmationBooleanField in customerAppointmentPreference object stores whether to send an email for appointment confirmationNo
textConfirmationBooleanField in customerAppointmentPreference object stores whether to send an text for appointment confirmationNo
notifyCustomerBooleanField in customerAppointmentPreference object stores whether to send appointment notifications to the customerNo
confirmationEmailStringField in customerAppointmentPreference object stores email ID of customer where appointment confirmation email should be sentNo
confirmationPhoneNumberStringField in customerAppointmentPreference object stores phone number of the customer where appointment confirmation text should be sentNo
statusObjectStatus of the appointmentNo
recallBooleanWhether the appointment includes a recallNo
pushToDmsBooleanWhether the appointment should be pushed to DMSNo
draftUuidStringUnique token assigned to the corresponding draft appointmentNo

Curl for appointment with no specific advisor, team and transport option.

curl --location --request POST 'https://api.mykaarma.com/appointment/v2/dealer/{{dealer_uuid}}/appointment' \
--header 'Authorization: Basic {{basic_auth_token}}' \
--header 'Content-Type: application/json' \
--data-raw '{
"customerUuid": "{customer_uuid}",
"vehicleInformation": {
"vehicleUuid": "{vehicle_uuid}"
},
"appointmentInformation": {
"appointmentStartDateTime": "{appointment_start_date_time e.g 2024-10-25T11:15:00}",
"appointmentEndDateTime": "{appointment_end_date_time e.g 2024-10-25T11:29:59}",
"trasportOption": null,
"transportOption": null,
"assignedUser": null,
"creatorUser": null,
"appointmentKey": null,
"mileageText": null,
"comments": "\n",
"internalNotes": "",
"serviceList": [
{
"title": "{labor_opcode}",
"operationUuid": {operation_uuid},
"isCustomConcern": false
}
],
"customerAppointmentPreference": {
"emailConfirmation": false,
"textConfirmation": false,
"emailReminder": false,
"textReminder": false,
"confirmationEmail": "{email}",
"confirmationPhoneNumber": "310XXXXXXX",
"notifyCustomer": true,
"sendCommunicationToDA": true
},
"status": null,
"recall": false,
"reminderCount": 0,
"isOverridden": false,
"overrideFutureNoPrefAppointment": false,
"pushToDms": true,
"draftUuid": null,
"pdrToOpcodes": {},
"deferredRecallDTOList": null,
"pickupDeliveryTripEvent": null,
"sdSessionId": null
}
}
'

Complete Curl

curl --location --request POST 'https://api.mykaarma.com/appointment/v2/dealer/{{dealer_uuid}}/appointment' \
--header 'Authorization: Basic {{basic_auth_token}}' \
--header 'Content-Type: application/json' \
--data-raw '{
"customerUuid": "fdgdfdfretertegbv43-A9ujPPd-M",
"vehicleInformation": {
"vin": null,
"vehicleKey": null,
"vehicleUuid": "kdFmlaWcUCWMAdZotP3fgdfVnOKHge56t0NXuG4QpXdWY"
},
"appointmentInformation": {
"appointmentStartDateTime": "2024-10-25T11:15:00",
"appointmentEndDateTime": "2024-10-25T11:29:59",
"trasportOption": {
"altTransportation": null,
"transportation": null,
"transportOptionUuid": "dfsdsf43tfxs-pCn0VBtnCur1AsjPwkH2RHUpf89LiMU",
"bookingID": null,
"bookInThirdParty": false
},
"transportOption": null,
"assignedUser": {
"uuid": "6bed86cc14791jkbdsf85a396610a3a84737546a0dd4ed23f522f90c91fe0",
"deptUUID": "8ec821aefe98664ab15dfwrtrgfdghl0b1aeda9ff58df3db89bb0a55a3",
"teamUuid": null
},
"creatorUser": {
"uuid": "80c9166f65eecad91e3855555svdgerfg3e5d7a95841c3a2a7086d1c87a",
"deptUUID": "8ec821aefe9twr42f34f26c3c46f9c37d0b1aeda9ff58df3db89bb0a55a3",
"teamUuid": null
},
"appointmentKey": null,
"mileageText": null,
"comments": "\n",
"internalNotes": "",
"serviceList": [
{
"title": "CECOIL",
"description": "CECOIL",
"opCodeName": null,
"price": null,
"laborTotal": null,
"partsTotal": null,
"shopFees": null,
"taxes": null,
"payType": null,
"sortOrder": 2,
"recallID": null,
"parentTitle": null,
"menuUuid": null,
"laborOpCode": null,
"operationType": null,
"operationUuid": null,
"isCustomConcern": false,
"durationInMins": null,
"parentOpcodeUuid": null
}
],
"customerAppointmentPreference": {
"emailConfirmation": false,
"textConfirmation": false,
"emailReminder": false,
"textReminder": false,
"confirmationEmail": "test@gmail.com",
"confirmationPhoneNumber": "310XXXXXXX",
"notifyCustomer": true,
"sendCommunicationToDA": true
},
"status": null,
"recall": false,
"reminderCount": 0,
"isOverridden": false,
"overrideFutureNoPrefAppointment": false,
"pushToDms": true,
"draftUuid": null,
"pdrToOpcodes": {},
"deferredRecallDTOList": null,
"pickupDeliveryTripEvent": null,
"sdSessionId": null
}
}
'