Skip to main content

How to create an Appointment

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.

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

  • Parameters Used:
  1. {{dept_uuid}} - UUID of department for which you want to fetch the customer.
  2. {{test_vin}} - VIN of the vehicle for which you want to search the customer.
  3. {{basic_auth_token}} - Authorization token generated using your mykaarma credentials.
  4. {{dealer_uuid}} - UUID of dealer for which you want to fetch the customer
  5. {{phone_number}} - Phone number of the customer
  6. {{test_vin_customer_uuid}} - Customer UUID for test VIN (can be computed from 'Get a customer's details' request)
  7. {{test_vin_vehicle_key}} - VehicleKey from DMS for test VIN (can be computed from 'vehicles' in 'Get a customer's details' request)
  8. {{test_vin_vehicle_uuid}} - Vehicle UUID for test VIN (can be computed from 'vehicles' in 'Get a customer's details' request)
  9. {{assignee_da_uuid}} - UUID of the Chosen Advisor (Can be computed from 'Get Advisors' endpoint)
  10. {{creator_da_uuid}} - UUID of the advisor creating the Appointment
  11. {{customer_email_id}} - Email ID of customer to be used for appointment related communication
  12. {{customer_phone_number}} - Phone no. of customer to be used for appointment related communication (Example - +19110012345)
  • Search for a Customer
curl --location --request GET 'https://api.mykaarma.com/customer/v2/department/{{dept_uuid}}/customer/list?searchTerm={{test_vin}}&searchPreference=vehicle&maxResults=50' \
--header 'Authorization: {{basic_auth_token}}'
  • Search Customer - Exact
curl --location --request POST 'https://api.mykaarma.com/customer/v2/customer/list/exact' \
--header 'Authorization: {{basic_auth_token}}' \
--header 'Content-Type: application/json' \
--data-raw '{
"dealerUUIDList": [
"{{dealer_uuid}}"
],
"includeDealerOrderInfo": false,
"maxResults": 150,
"searchMap": {
"COMMUNICATIONVALUE_EXACT": [
"{{phone_number}}"
]
}
}'
  • Get a customer's details: You'll need to use the customer UUID you'd have received from previous request(s)
curl --location --request GET 'https://api.mykaarma.com/customer/v2/department/{{dept_uuid}}/customer/{{test_vin_customer_uuid}}' \
--header 'Authorization: {{basic_auth_token}}'
  • Get Opcodes:
curl --location --request POST 'https://api.mykaarma.com/appointment/v2/department/{{dept_uuid}}/fetch/opcodes' \
--header 'Authorization: {{basic_auth_token}}' \
--header 'Content-Type: application/json' \
--data-raw '{
"communicationCodes": [],
"dealerAppSchedulerVisibility": null,
"dealerUUIDList": [],
"endPosition": null,
"eventDealerAssociateUuid": null,
"getMkAndDmsSimilarOpcodeCount": true,
"getTotalCount": true,
"isLastPage": true,
"mobileServiceVisibility": null,
"onlineSchedulerVisibility": true,
"opCodes": [],
"requesterUserUUID": "string",
"resultSize": null,
"searchToken": null,
"serviceCartVisibility": null,
"sortDirection": "ASCENDING",
"sortPreference": "OPCODE",
"startPosition": 0,
"uuidList": []
}'
  • Get Advisors:
curl --location --request GET 'https://api.mykaarma.com/appointment/v2/dealer/{{dealer_uuid}}/eligibleAdvisor/list' \
--header 'Authorization: {{basic_auth_token}}'
  • Get Transport options:
curl --location --request GET 'https://api.mykaarma.com/appointment/v2/department/{{dept_uuid}}/transportOption/list' \
--header 'Authorization: {{basic_auth_token}}'
  • Get Appointment Slots:
  1. {{dealerDepartmentUuid}} - Department Uuid of the user who wants to see the available slots
curl --location 'https://api.mykaarma.com/appointment/v2/department/{{dealerDepartmentUuid}}/availability' \
--header 'Authorization: Basic {{basic_auth_token}}' \
--header 'Content-Type: application/json'
--data '{
"requesterUserUUID": "string",
"dealerUUIDList": "string",
"platform": {
"id": 0,
"name": ""string""
},
"dates": [
"string"
],
"startTime": "string",
"endTime": "string",
"existingAppointmentUuid": "string",
"customerInformation": {
"firstName": "string",
"lastName": "string",
"company": "string",
"customerKey": "string",
"uuid": "string"
},
"customerPhones": [
"string"
],
"customerEmails": [
"string"
],
"vehicleInformation": {
"brand": "string",
"dealerUuid": "string",
"engine": "string",
"mileage": 10000,
"model": "string",
"trim": "string",
"uuid": "string",
"vehicleKey": "string",
"vin": "string",
"year": "string"
},
"selectedAvailabilityAttributes": {
"dealerAssociateUuidList": [
"string"
],
"transportOptionUuidList": [
"string"
],
"subTransportOptionUuidList": "string",
"teamUuidList": [
"string"
]
},
"allAvailabilityAttributes": {
"dealerAssociateUuidList": [
"string"
],
"transportOptionUuidList": [
"string"
],
"subTransportOptionUuidList": null,
"teamUuidList": [
"string"
]
},
"selectedOperationUuidSet": [
"string"
],
"selectedRecallOemIdSet": [],
"callerDaUuid": "string",
"subscriberName": "string",
"refreshPanelSelectionState": true,
"randomStringIdentifierForEditAppointment": "string"
}'

For detailed explanation please go through https://docs.mykaarma.com/our-products/scheduler/API/how-to-use-getResourceAvailability

  • Create Appointment:
  1. {{altTransportation}} - Custom Name of transport option fetched using 'Get Transport options' endpoint. Example: Loaner
  2. {{transportOptionUuid}} - UUID of transport option fetched using 'Get Transport options' endpoint. Example: -f_LNZEWiHQg4AbTH-b_qmDTO8CKwkSQXCtpYFHfWGw
  3. {{transportation}} - Option Name of transport option fetched using 'Get Transport options' endpoint. Example: Loaner
  4. {{appointmentStartDateTime}} - Start timestamp of the appointment. You can fetch data for valid slots using the 'Get Appointment Slots' endpoint. This data should be in the format same as the example. (Example: 2021-12-24T07:00:00 )
  5. {{appointmentEndDateTime}} - End timestamp of the appointment. This timestamp should be exactly one second less that the beginning of next slot. You can view valid slots using the 'Get Appointment Slots' endpoint. (Example: 2021-12-24T07:29:59 )
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": "{{test_vin_customer_uuid}}",
"vehicleInformation": {
"vin": "{{test_vin}}",
"vehicleKey": {{test_vin_vehicle_key}},
"vehicleUuid": "{{test_vin_vehicle_uuid}}"
},
"appointmentInformation": {
"appointmentStartDateTime": "{{appointmentStartDateTime}}",
"appointmentEndDateTime": "{{appointmentEndDateTime}}",
"assignedUser": {
"uuid": "{{assignee_da_uuid}}",
"deptUUID": "{{dept_uuid}}"
},
"creatorUser": {
"uuid": "{{creator_da_uuid}}",
"deptUUID": "{{dept_uuid}}"
},
"serviceList": [
{
"title": "OIL",
"description": "Oil Change",
"price": "50"
}
],
"customerAppointmentPreference": {
"emailConfirmation": true,
"textConfirmation": true,
"emailReminder": true,
"textReminder": true,
"confirmationEmail": "{{customer_email_id}}",
"confirmationPhoneNumber": "{{customer_phone_number}}"
},
"comments": "Comment String",
"internalNotes": "Internal Note String",
"mileageText": "1000",
"recall": false,
"transportOption": {
"altTransportation": "{{altTransportation}}",
"transportOptionUuid": "{{transportOptionUuid}}",
"transportation": "{{transportation}}"
}
}
}
'