Book an appointment
- 1 Use Case Description
- 2 API endpoints
- 2.1 Services
- 2.2 Service Groups
- 2.3 Branches
- 2.4 Timeslots
- 2.5 Create a new Reservation
- 2.6 Confirm a reservation
Use Case Description
To book an appointment the API client need to perform multiple interactions with the API. These interactions are depicted in the diagram below.
In short, the following actions need to be performed to make a booking:
Retrieve the list of available services/service groups and branches (locations) related
Get time slots for the service selected and branch-specified
Reserve a time slot
Confirm a booking
Note! If the service combinations feature was turned on in System Settings and service combinations were configured the stack of separate API calls should be used /external/v1/serviceCombination/
Please refer to detailed guides to get more info about how to interact with new endpoints:
Book an appointment with multiple services
Reschedule appointment with multiple services
The following endpoints are not changed and can be used for both appointment types:
For a full reference please go to API Reference.
API endpoints
Services
Allows to receive the list of active services and their characteristics.
The endpoint can be used when the “service combinations“ feature is turned on. However, to get the information about the service combinations its recommended to use a separate endpoint which is GET /external/v1/serviceCombination/branch
. See Book an appointment with multiple services for more details.
Attributes
Name | Type | Required | Description |
---|---|---|---|
Accept-Language | string | yes | Requested language for service names. The system will support languages depending on Tenant Localization settings (possible values are: en_US, en_UK, fr_FR, nl_NL, de_DE, it_IT, ES_es ) |
X-TENANT-ID | string | yes | The tenant id to use for this operation. The tenant id must be the same as an existing system Id. |
Listing
GET /services
will return the list of active services.
Response
[
{
"branch": {
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"name": "string",
"address": {
"streetName": "string",
"zipCode": "string",
"city": "string",
"country": "string"
},
"location": {
"longitude": 180,
"latitude": 180
}
},
"service": {
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"name": "string",
"config": {
"maxNumberOfReservations": 0,
"onlineBookable": false
}
},
"resourceSelection": {
"required": true,
"availableResources": [
{
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"name": "string"
}
]
},
"informationQuestions": [
{
"required": true,
"questionText": "string",
"clarificationText": "string"
}
],
"screeningQuestions": [
{
"yesRequiredAnswer": true,
"questionText": "string",
"clarificationText": "string",
"answerDeniedMessage": "string"
}
]
}
]
Please note,
"resourceSelection"
will be returned in the response only if specific resources were configured for the service, and resource selection: true is checked. In case resource pools are virtual, and there are no particular resources configured - no data will be returned:
"resourceSelection": {
"required": false,
"availableResources": []
"onlineBookable"
parameter will allow to define whether the service is enabled for bookings by end customers or not (and can be used only for internal bookings) according to configurations on general/branch level.
Service Groups
Allows returning the list of services organized in service groups (for instance, building permits and building consultation can be grouped in Building services). The endpoint is valid only in case if service groups are configured in Appointment Configurations.
The endpoint can be used when the “service combinations“ feature is turned on.
Attributes
Name | Type | Required | Description |
---|---|---|---|
Accept-Language | string | yes | Requested language for service names. The system will support languages depending on Tenant Localization settings (possible values are: en_US, en_UK, fr_FR, nl_NL, de_DE, it_IT, ES_es ) |
X-TENANT-ID | string | yes | The tenant id to use for this operation. The tenant id must be the same as an existing system Id. |
Listing
GET /services
/groups
Response schema
{
"services": [
{
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"name": "string",
"index": 0,
"externalDescription": "string",
"onlineBookable": false
}
],
"serviceGroups": [
{
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"name": "string",
"index": 0,
"services": [
{
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"name": "string",
"index": 0,
"externalDescription": "string",
"onlineBookable": false
}
]
}
]
}
Branches
Allows to retrieve the list of branches (locations) that are associated with the specific service
Attributes
Name | Type | Required | Description |
---|---|---|---|
service ID | string (GUID) | yes | The service id (GUID) |
Accept-Language | string | yes | Requested language for service names, The system will support languages depending on Tenant Localization settings (possible values are: en_US, en_UK, fr_FR, nl_NL, de_DE, it_IT, ES_es ) |
X-TENANT-ID | string | yes | The tenant id to use for this operation. The tenant id must be the same as an existing systemId. |
Listing
GET /services
/serviceId
Response schema
[
{
"branch": {
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"name": "string",
"address": {
"streetName": "string",
"zipCode": "string",
"city": "string",
"country": "string"
},
"location": {
"longitude": 180,
"latitude": 180
}
},
"resourceSelection": {
"required": true,
"availableResources": [
{
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"name": "string"
}
]
}
}
]
Timeslots
It is a virtual representation of available times based on attributes from resources/resource pools and services as well as various settings. So if service is open from 8am to 4pm and it has a duration of 60 minutes, resources associated with the available slots will return an array of all time intervals (8am-9am, 9am-10am etc.). Slots are meant for listing available times on the booking page.
Attributes
Name | Type | Required | Description |
---|---|---|---|
service ID | string (GUID) | yes | The service id (GUID) |
branch ID | string | yes | The branch Id for the service specified |
requestedResourceId | string |
| Resource ID |
numberOfReservations | integer | yes | equals to number of people, number of times to serve (depending on business context) 1 by default, but more than 1 can be processed |
X-TENANT-ID | string | yes | The tenant id to use for this operation. The tenant id must be the same as an existing systemId. |
Listing
GET /services
/serviceId/timeslots
Response schema
Create a new Reservation
Allows to create and place a new reservation. Please note, a temporary reservation will be made by this request, and it should be confirmed via a separate API call. If the reservation is not confirmed the timeslot will become available in 15 minutes.
POST /reservations
Attributes
Name | Type | Required | Description |
---|---|---|---|
service ID | string (guid) | yes | The service id (GUID) |
branch ID | string | yes | The branch Id for the service specified |
requestedResourceId | string |
| Resource ID |
Timeslot: “StartTime“ | date & timestamp | yes | start time for the timeslot to reserve, |
Timeslot: “EndTime“ | date & timestamp | yes | end time for the timeslot to reserve |
Notes | string | no | the notes added for the appointment details |
Numberofreservations | integer | yes | number of reservations, 1 by default |
Response schema
Code 201 - Reservation is created
Confirm a reservation
PUT /reservations
/reservationId
Allows to confirm a reservation and place a booking for the customer. The booking should be confirmed by sending customer details in the following format:
Attributes
Name | Type | Required | Description |
---|---|---|---|
personalIdentifier | string (GUID) | yes | The external customer’s identifier. Must contain 10-48 char and must match |
firstName | string | yes | The customer’s first name, max 255 symbols |
lastName | string | yes | The customer’s last name, max 255 symbols |
phoneNumber | integer | no | The customer’s phone number, maz length 255 |
string | yes | The customer’s email, 1- 255 symbols | |
dateofBirth | string | yes/no (depends on configs) | The customer’s date of birth, example: "2000-01-01 |
informationQuestions
| array | yes/no (depends on configs) | The customer’s answers on informational questions, maxLength: 2048 |
answer | array | yes/no (depends on configs) | The answer to the question, maxLength: 2048 |
Response schema
Code 201 -Appointment confirmed