Get Appointment Candidates
Create a page in your app where you can show the available service resources based on the work type group or work type, and service territory.
Make a POST request on the getAppointmentCandidates REST API by passing the required workTypeGroupId or workTypeId, and territoryIds parameters.
- Resource URI
-
https://yourInstance.salesforce.com/services/data/vXX.X/scheduling/getAppointmentCandidates
- For an Existing User (Account)
-
To consider an existing user’s preferred visiting hours, pass accountId in the input request body. The preference is enforced when the Include Only Required Service Resources and Ignore Excluded Service Resources policy rules are enabled.
-
- Sample Request
-
Using workTypeGroupId:
{ "accountId" : "001B000001McLhMIAV", "startTime" : "2021-10-29T08:00:00.000+0000", "endTime" : "2021-10-29T18:00:00.000+0000", "allowConcurrentScheduling" : true, "workTypeGroupId" : "0VSB0000000TbhWOAS", "territoryIds" : ["0HhB00000001P0PKAU"] }
-
Using workTypeId:
{ "accountId" : "001B000001McLhMIAV", "startTime" : "2021-10-29T08:00:00.000+0000", "endTime" : "2021-10-29T18:00:00.000+0000", "allowConcurrentScheduling" : true, "workType" : { "id" : "08qB00000002ocgIAA" }, "territoryIds" : ["0HhB00000001P0PKAU"] }
-
- Sample Response
-
The API returns the available time slots and service resources.
{ "candidates" : [ { "endTime" : "2021-10-29T16:00:00.000+0000", "resources" : [ "0HnB00000001SJxKAM" ], "startTime" : "2021-10-29T15:00:00.000+0000", "territoryId" : "0HhB00000001P0PKAU" }, { "endTime" : "2021-10-29T16:30:00.000+0000", "resources" : [ "0HnB00000001SJxKAM" ], "startTime" : "2021-10-29T15:30:00.000+0000", "territoryId" : "0HhB00000001P0PKAU" }, { "endTime" : "2021-10-29T17:00:00.000+0000", "resources" : [ "0HnB00000001SJxKAM" ], "startTime" : "2021-10-29T16:00:00.000+0000", "territoryId" : "0HhB00000001P0PKAU" }, { "endTime" : "2021-10-29T17:30:00.000+0000", "resources" : [ "0HnB00000001SJxKAM" ], "startTime" : "2021-10-29T16:30:00.000+0000", "territoryId" : "0HhB00000001P0PKAU" }, { "endTime" : "2021-10-29T18:00:00.000+0000", "resources" : [ "0HnB00000001SJxKAM" ], "startTime" : "2021-10-29T17:00:00.000+0000", "territoryId" : "0HhB00000001P0PKAU" }, { "endTime" : "2021-10-29T16:00:00.000+0000", "resources" : [ "0HnB00000001SOUKA2" ], "startTime" : "2021-10-29T15:00:00.000+0000", "territoryId" : "0HhB00000001P0PKAU" }, { "endTime" : "2021-10-29T16:30:00.000+0000", "resources" : [ "0HnB00000001SOUKA2" ], "startTime" : "2021-10-29T15:30:00.000+0000", "territoryId" : "0HhB00000001P0PKAU" }, { "endTime" : "2021-10-29T17:00:00.000+0000", "resources" : [ "0HnB00000001SOUKA2" ], "startTime" : "2021-10-29T16:00:00.000+0000", "territoryId" : "0HhB00000001P0PKAU" }, { "endTime" : "2021-10-29T17:30:00.000+0000", "resources" : [ "0HnB00000001SOUKA2" ], "startTime" : "2021-10-29T16:30:00.000+0000", "territoryId" : "0HhB00000001P0PKAU" }, { "endTime" : "2021-10-29T18:00:00.000+0000", "resources" : [ "0HnB00000001SOUKA2" ], "startTime" : "2021-10-29T17:00:00.000+0000", "territoryId" : "0HhB00000001P0PKAU" } ] }
- For a Guest User (Lead)
-
- Sample Request
-
Using workTypeGroupId:
{ "startTime" : "2021-10-13T08:00:00.000+0000", "endTime" : "2021-10-13T18:00:00.000+0000", "allowConcurrentScheduling" : true, "workTypeGroupId" : "0VSB0000000TbhWOAS", "territoryIds" : ["0HhB00000001P0PKAU"], }
-
Using workTypeId:
{ "accountId" : "001B000001McLhMIAV", "startTime" : "2021-10-29T08:00:00.000+0000", "endTime" : "2021-10-29T18:00:00.000+0000", "allowConcurrentScheduling" : true, "workType" : { "id" : "08qB00000002ocgIAA" }, "territoryIds" : ["0HhB00000001P0PKAU"] }
-
- Sample Response
-
The API returns the available time slots and service resources.
{ "candidates" : [ { "endTime" : "2021-10-29T16:00:00.000+0000", "resources" : [ "0HnB00000001SJxKAM" ], "startTime" : "2021-10-29T15:00:00.000+0000", "territoryId" : "0HhB00000001P0PKAU" }, { "endTime" : "2021-10-29T16:30:00.000+0000", "resources" : [ "0HnB00000001SJxKAM" ], "startTime" : "2021-10-29T15:30:00.000+0000", "territoryId" : "0HhB00000001P0PKAU" }, { "endTime" : "2021-10-29T17:00:00.000+0000", "resources" : [ "0HnB00000001SJxKAM" ], "startTime" : "2021-10-29T16:00:00.000+0000", "territoryId" : "0HhB00000001P0PKAU" }, { "endTime" : "2021-10-29T17:30:00.000+0000", "resources" : [ "0HnB00000001SJxKAM" ], "startTime" : "2021-10-29T16:30:00.000+0000", "territoryId" : "0HhB00000001P0PKAU" }, { "endTime" : "2021-10-29T18:00:00.000+0000", "resources" : [ "0HnB00000001SJxKAM" ], "startTime" : "2021-10-29T17:00:00.000+0000", "territoryId" : "0HhB00000001P0PKAU" }, { "endTime" : "2021-10-29T16:00:00.000+0000", "resources" : [ "0HnB00000001SOUKA2" ], "startTime" : "2021-10-29T15:00:00.000+0000", "territoryId" : "0HhB00000001P0PKAU" }, { "endTime" : "2021-10-29T16:30:00.000+0000", "resources" : [ "0HnB00000001SOUKA2" ], "startTime" : "2021-10-29T15:30:00.000+0000", "territoryId" : "0HhB00000001P0PKAU" }, { "endTime" : "2021-10-29T17:00:00.000+0000", "resources" : [ "0HnB00000001SOUKA2" ], "startTime" : "2021-10-29T16:00:00.000+0000", "territoryId" : "0HhB00000001P0PKAU" }, { "endTime" : "2021-10-29T17:30:00.000+0000", "resources" : [ "0HnB00000001SOUKA2" ], "startTime" : "2021-10-29T16:30:00.000+0000", "territoryId" : "0HhB00000001P0PKAU" }, { "endTime" : "2021-10-29T18:00:00.000+0000", "resources" : [ "0HnB00000001SOUKA2" ], "startTime" : "2021-10-29T17:00:00.000+0000", "territoryId" : "0HhB00000001P0PKAU" } ] }
Parse the JSON response, and show the available resources on the page so that the user can select a resource for the appointment.
Here’s how a page showing the available service resources can look.
When users select a resource, show the available time slots for the selected resource.
Here’s how a page showing the available time slots can look.
On the next page in your app, you can show the appointment details for the user to review and create the appointment.