Appointments API v2 (Reference) v1.0.0
Appointments API v2 reference.
You are viewing REST API documentation. This documentation is auto-generated from a swagger specification which itself is generated from annotations in the source code of the project. It is possible that this documentation includes bugs and that code samples are incomplete or wrong.
Authentication
- API Key (jwtBearerToken)
- Parameter Name: Authorization, in: header. Authentication and authorization using a valid JWT token
Schedule & Manage Appointments
Retrieve All Appointments with Optional Filtering
GET /api/v2/appointments/ HTTP/1.1
Accept: application/json
Base paths: /api/v2/appointments
Retrieves a paginated list of all available appointments, with the ability to apply filters based on organizer IDs, agent IDs, appointment durations, and date ranges. The use of certain filters, specifically organizerId (deprecated) and agentId, is dependent on the user's role and application settings.
NOTE:
- When the "Agents can only view appointments assigned to them" option is enabled (default), non-supervisors are restricted to their own user ID. Any
agentIdororganizerIdvalues are ignored, and results include appointments where the caller is the organizer OR the assigned agent. In this mode, filters are replaced by the caller's authenticated user ID from the access token (JWT). - ROLE_SUPERVISOR: Can filter by
agentIdor (deprecated)organizerId. IfagentIdis provided,organizerIdis ignored.
Required authorization: ROLE_AGENT, ROLE_SUPERVISOR, or ROLE_CLIENT_SERVICE
Parameters
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
| applicationId | query | string | false | Unique application identifier |
| organizerId | query | array[string] | false | Deprecated: use AgentIDs. |
| agentId | query | array[string] | false | AgentIDs filters appointments by the assigned agent. |
| duration | query | array[string] | false | Slots filters appointments by their duration. |
| range | query | array[string] | false | Range filters appointments within a specified start and end date range. |
| pageSize | query | integer(int64) | false | Page size - number of items per page. |
| pageNumber | query | integer(int64) | false | Page number - 1-based page index. |
| sortOrder | query | string | false | Sort order - ascending or descending. |
| sortField | query | string | false | Field to use for sorting. |
Detailed descriptions
organizerId: Deprecated: use AgentIDs. OrganizerIDs filters appointments by organizer. It accepts a list of organizer ID values (comma-separated). This filter is applicable only when authorized with ROLE_SUPERVISOR; otherwise, it is ignored. If agentId is provided, organizerId is ignored.
agentId: AgentIDs filters appointments by the assigned agent. Accepts a comma-separated list of agent IDs. For non-supervisors, when the "Agents can only view appointments assigned to them" option is enabled, the provided agentId is ignored and replaced by the caller's authenticated user ID from the access token (JWT).
duration: Slots filters appointments by their duration. It accepts a list of duration values (comma-separated) in ISO 8601 format.
range: Range filters appointments within a specified start and end date range. It accepts a range (comma-separated) specified as start and end dates in UTC, in ISO 8601 format.
Enumerated Values
| Parameter | Value |
|---|---|
| sortOrder | asc |
| sortOrder | desc |
Responses
Overview
| Status | Meaning | Description | Schema |
|---|---|---|---|
| 200 | OK | none | FindAppointmentsResponsePaged |
| 400 | Bad Request | BadRequest. The request was malformed or missing required query parameters. | None |
| 401 | Unauthorized | Unauthorized. Authorization information is missing or invalid. | None |
| 403 | Forbidden | Forbidden. Access to the requested resource or operation is forbidden. | None |
| 404 | Not Found | StatusNotFound. No appointments found matching the criteria. | None |
| 500 | Internal Server Error | Internal Server Error. An unexpected error occurred, preventing the successful processing of the request. | None |
Examples
200 Response
{
"content": [
{
"applicationId": "bf8215e5-a39e-490a-a0e2-07df6a3d8c1f",
"duration": "PT5M0s (5 minutes)",
"end": "2022-01-31T19:05:00.0Z",
"id": "f46f165d-383a-4432-9a3e-9c805a152e0c",
"interaction": {
"customFields": {
"property1": "string",
"property2": "string"
},
"properties": {
"property1": "string",
"property2": "string"
},
"routing": {
"properties": {
"deploymentId": "c461a74-af3a-4b55-a461-bafbf077a34e"
},
"type": "GENESYS_CLOUD_FLOW"
},
"state": "PENDING"
},
"locale": "en_US",
"metadata": {
"prop1": {}
},
"notes": "CRM ref: 3nv-1gt-4rt",
"notificationHeaders": "{\"x-channel\": widget\"}",
"notificationsActive": true,
"organizer": {
"id": "c59a1ee2-e71d-4370-9ac8-26de220104db",
"type": "CUSTOMER"
},
"participants": [
{
"id": "2460b086-8d27-4cd3-a7ef-cdc8b4c17f0c",
"type": "CUSTOMER"
},
{
"id": "36c1r718-9ab5-48c9-aeab-fas5f37b0ec4",
"type": "AGENT"
}
],
"start": "2022-01-31T19:00:00.0Z",
"targetAssignment": {
"id": "string",
"type": "string"
},
"timezone": "Europe/Berlin",
"title": "Product installation review"
}
],
"pageCount": 4,
"pageNumber": 1,
"pageSize": 25,
"sortField": "name",
"sortOrder": "asc",
"total": 100
}
To perform this operation, you must be authenticated by means of one of the following methods: jwtBearerToken
Code samples
- Shell
- Go
- Node
- Java
- Python
- Ruby
curl -X GET /api/v2/appointments/ \
-H 'Accept: application/json' \ -H 'Authorization: API_KEY'
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"Authorization": []string{"API_KEY"},
}
var body []byte
// body = ...
req, err := http.NewRequest("GET", "/api/v2/appointments/", bytes.NewBuffer(body))
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
const fetch = require('node-fetch');
const headers = {
'Accept': 'application/json', 'Authorization': 'API_KEY'
}
fetch('/api/v2/appointments/', {
method: 'GET',
headers
})
.then(r => r.json())
.then((body) => {
console.log(body)
})
// This sample needs improvement.
URL obj = new URL("/api/v2/appointments/");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream())
);
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
System.out.println(response.toString());
import requests
headers = {
'Accept': 'application/json',
'Authorization': 'API_KEY'
}
r = requests.get(
'/api/v2/appointments/',
params={},
headers = headers)
print r.json()
require 'rest-client'
require 'json'
headers = {
'Accept' => 'application/json',
'Authorization' => 'API_KEY'
}
result = RestClient.get '/api/v2/appointments/',
params: {}, headers: headers
p JSON.parse(result)
Schedule a New Appointment
POST /api/v2/appointments/ HTTP/1.1
Content-Type: application/json
Accept: application/json
Base paths: /api/v2/appointments
Creates a new appointment and optionally returns RoomAccess details if the appointment has been activated. Activation can occur either explicitly through the /appointments/activate endpoint or automatically when the "Automatically activate an appointment" option is enabled at the application level.
This operation also supports specifying interaction routing information, which enables the explicit setting of a Genesys Widget deployment of choice and accommodates different routing types for customer interactions. Interaction routing is crucial for directing the scheduled appointment through the desired channels and ensuring the optimal engagement experience.
For detailed information on interaction routing and how to configure it in your schedule appointment requests, refer to our comprehensive guide: Interaction routing for Appointments.
NOTE:
- RoomAccess information, including the appointment room's URL and expiration time, is only returned for appointments that have been activated. This ensures that room access details are securely managed and only made available when necessary.
- If application-specific notifications are active and properly configured, relevant notifications will be dispatched to inform customers accordingly.
Required authorization: ROLE_AGENT or ROLE_CLIENT_SERVICE
Request body
{
"applicationId": "bf8215e5-a39e-490a-a0e2-07df6a3d8c1f",
"customers": [
{
"contact": {
"primaryEmail": "user@provider.net",
"primaryPhone": "2102234988"
},
"metadata": {
"refNo": "CS-9838"
},
"name": {
"firstName": "Bobby",
"lastName": "Ewing"
},
"username": "ewingb@myorg.com"
}
],
"duration": "\"PT5M\"",
"interaction": {
"customFields": {
"property1": "string",
"property2": "string"
},
"routing": {
"properties": "{\"deploymentId\": \"c461a74-af3a-4b55-a461-bafbf077a34e\"} or {\"touchpointId\": \"c461a74-af3a-4b55-a461-bafbf077a34e\"}",
"type": "GENESYS_CLOUD_FLOW or TALKDESK_DIGITAL_CONNECT"
}
},
"locale": "\"en-GB\"",
"metadata": {
"prop1": {}
},
"notes": "CRM ref: 3nv-1gt-4rt",
"notificationHeaders": "{\"x-channel\": widget\"}",
"start": "\"2022-01-31T19:00:00.0Z\"",
"targetAssignment": {
"id": "string",
"type": "string"
},
"timezone": "\"Europe/Berlin\"",
"title": "Product installation review"
}
Parameters
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
| body | body | ScheduleAppointmentRequest | false | none |
Responses
Overview
| Status | Meaning | Description | Schema |
|---|---|---|---|
| 200 | OK | none | AppointmentResponse |
| 400 | Bad Request | Bad request. The request was malformed or missing required fields. | None |
| 401 | Unauthorized | Unauthorized. Authorization information is missing or invalid. | None |
| 403 | Forbidden | Forbidden. Access to the requested resource or operation is forbidden. | None |
| 500 | Internal Server Error | Internal Server Error. An unexpected error occurred, preventing the successful processing of the request. | None |
Examples
200 Response
{
"applicationId": "bf8215e5-a39e-490a-a0e2-07df6a3d8c1f",
"duration": "PT5M0s (5 minutes)",
"end": "2022-01-31T19:05:00.0Z",
"id": "f46f165d-383a-4432-9a3e-9c805a152e0c",
"interaction": {
"customFields": {
"property1": "string",
"property2": "string"
},
"properties": {
"property1": "string",
"property2": "string"
},
"routing": {
"properties": {
"deploymentId": "c461a74-af3a-4b55-a461-bafbf077a34e"
},
"type": "GENESYS_CLOUD_FLOW"
},
"state": "PENDING"
},
"locale": "en_US",
"metadata": {
"prop1": {}
},
"notes": "CRM ref: 3nv-1gt-4rt",
"notificationHeaders": "{\"x-channel\": widget\"}",
"notificationsActive": true,
"organizer": {
"id": "c59a1ee2-e71d-4370-9ac8-26de220104db",
"type": "CUSTOMER"
},
"participants": [
{
"id": "2460b086-8d27-4cd3-a7ef-cdc8b4c17f0c",
"type": "CUSTOMER"
},
{
"id": "36c1r718-9ab5-48c9-aeab-fas5f37b0ec4",
"type": "AGENT"
}
],
"secureToken": "string",
"start": "2022-01-31T19:00:00.0Z",
"targetAssignment": {
"id": "string",
"type": "string"
},
"timezone": "Europe/Berlin",
"title": "Product installation review"
}
To perform this operation, you must be authenticated by means of one of the following methods: jwtBearerToken
Code samples
- Shell
- Go
- Node
- Java
- Python
- Ruby
curl -X POST /api/v2/appointments/ \
-H 'Content-Type: application/json' \ -H 'Accept: application/json' \ -H 'Authorization: API_KEY'
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Content-Type": []string{"application/json"},
"Accept": []string{"application/json"},
"Authorization": []string{"API_KEY"},
}
var body []byte
// body = ...
req, err := http.NewRequest("POST", "/api/v2/appointments/", bytes.NewBuffer(body))
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
const fetch = require('node-fetch');
const input = '{
"applicationId": "bf8215e5-a39e-490a-a0e2-07df6a3d8c1f",
"customers": [
{
"contact": {
"primaryEmail": "user@provider.net",
"primaryPhone": "2102234988"
},
"metadata": {
"refNo": "CS-9838"
},
"name": {
"firstName": "Bobby",
"lastName": "Ewing"
},
"username": "ewingb@myorg.com"
}
],
"duration": "\"PT5M\"",
"interaction": {
"customFields": {
"property1": "string",
"property2": "string"
},
"routing": {
"properties": "{\"deploymentId\": \"c461a74-af3a-4b55-a461-bafbf077a34e\"} or {\"touchpointId\": \"c461a74-af3a-4b55-a461-bafbf077a34e\"}",
"type": "GENESYS_CLOUD_FLOW or TALKDESK_DIGITAL_CONNECT"
}
},
"locale": "\"en-GB\"",
"metadata": {
"prop1": {}
},
"notes": "CRM ref: 3nv-1gt-4rt",
"notificationHeaders": "{\"x-channel\": widget\"}",
"start": "\"2022-01-31T19:00:00.0Z\"",
"targetAssignment": {
"id": "string",
"type": "string"
},
"timezone": "\"Europe/Berlin\"",
"title": "Product installation review"
}';
const headers = {
'Content-Type': 'application/json', 'Accept': 'application/json', 'Authorization': 'API_KEY'
}
fetch('/api/v2/appointments/', {
method: 'POST',
body: input,
headers
})
.then(r => r.json())
.then((body) => {
console.log(body)
})
// This sample needs improvement.
URL obj = new URL("/api/v2/appointments/");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream())
);
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
System.out.println(response.toString());
import requests
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Authorization': 'API_KEY'
}
r = requests.post(
'/api/v2/appointments/',
params={},
headers = headers)
print r.json()
require 'rest-client'
require 'json'
headers = {
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'Authorization' => 'API_KEY'
}
result = RestClient.post '/api/v2/appointments/',
params: {}, headers: headers
p JSON.parse(result)
UpdateAppointment an Existing Appointment
PUT /api/v2/appointments/ HTTP/1.1
Content-Type: application/json
Accept: application/json
Base paths: /api/v2/appointments
Updates the details of an existing appointment, such as the title, notes, and metadata. This endpoint allows for the modification of appointment information post-creation, ensuring the appointment data remains relevant and up-to-date.
NOTE: Sending empty data for any field will overwrite any previously saved information for that field. This behavior is intentional to allow for the clearing of information. Ensure that only fields intended to be updated or cleared are included in the request.
Required authorization: ROLE_AGENT, ROLE_SUPERVISOR, or ROLE_CLIENT_SERVICE
Request body
{
"customer": {
"contact": {
"primaryEmail": "user@provider.net",
"primaryPhone": "2102234988"
},
"metadata": {
"refNo": "CS-9838"
},
"name": {
"firstName": "Bobby",
"lastName": "Ewing"
},
"participantId": "string",
"username": "ewingb@myorg.com"
},
"id": "f46f165d-383a-4432-9a3e-9c805a152e0c",
"metadata": {
"prop1": {}
},
"notes": "CRM ref: 3nv-1gt-4rt",
"notificationHeaders": {
"property1": "string",
"property2": "string"
},
"title": "Product installation review"
}
Parameters
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
| body | body | UpdateAppointmentRequest | false | none |
Responses
Overview
| Status | Meaning | Description | Schema |
|---|---|---|---|
| 200 | OK | none | AppointmentResponse |
| 400 | Bad Request | Bad request. The request was malformed or missing required fields. | None |
| 401 | Unauthorized | Unauthorized. Authorization information is missing or invalid. | None |
| 403 | Forbidden | Forbidden. Access to the requested resource or operation is forbidden. | None |
| 404 | Not Found | StatusNotFound. The specified appointment could not be found. | None |
| 500 | Internal Server Error | Internal Server Error. An unexpected error occurred, preventing the successful processing of the request. | None |
Examples
200 Response
{
"applicationId": "bf8215e5-a39e-490a-a0e2-07df6a3d8c1f",
"duration": "PT5M0s (5 minutes)",
"end": "2022-01-31T19:05:00.0Z",
"id": "f46f165d-383a-4432-9a3e-9c805a152e0c",
"interaction": {
"customFields": {
"property1": "string",
"property2": "string"
},
"properties": {
"property1": "string",
"property2": "string"
},
"routing": {
"properties": {
"deploymentId": "c461a74-af3a-4b55-a461-bafbf077a34e"
},
"type": "GENESYS_CLOUD_FLOW"
},
"state": "PENDING"
},
"locale": "en_US",
"metadata": {
"prop1": {}
},
"notes": "CRM ref: 3nv-1gt-4rt",
"notificationHeaders": "{\"x-channel\": widget\"}",
"notificationsActive": true,
"organizer": {
"id": "c59a1ee2-e71d-4370-9ac8-26de220104db",
"type": "CUSTOMER"
},
"participants": [
{
"id": "2460b086-8d27-4cd3-a7ef-cdc8b4c17f0c",
"type": "CUSTOMER"
},
{
"id": "36c1r718-9ab5-48c9-aeab-fas5f37b0ec4",
"type": "AGENT"
}
],
"secureToken": "string",
"start": "2022-01-31T19:00:00.0Z",
"targetAssignment": {
"id": "string",
"type": "string"
},
"timezone": "Europe/Berlin",
"title": "Product installation review"
}
To perform this operation, you must be authenticated by means of one of the following methods: jwtBearerToken
Code samples
- Shell
- Go
- Node
- Java
- Python
- Ruby
curl -X PUT /api/v2/appointments/ \
-H 'Content-Type: application/json' \ -H 'Accept: application/json' \ -H 'Authorization: API_KEY'
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Content-Type": []string{"application/json"},
"Accept": []string{"application/json"},
"Authorization": []string{"API_KEY"},
}
var body []byte
// body = ...
req, err := http.NewRequest("PUT", "/api/v2/appointments/", bytes.NewBuffer(body))
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
const fetch = require('node-fetch');
const input = '{
"customer": {
"contact": {
"primaryEmail": "user@provider.net",
"primaryPhone": "2102234988"
},
"metadata": {
"refNo": "CS-9838"
},
"name": {
"firstName": "Bobby",
"lastName": "Ewing"
},
"participantId": "string",
"username": "ewingb@myorg.com"
},
"id": "f46f165d-383a-4432-9a3e-9c805a152e0c",
"metadata": {
"prop1": {}
},
"notes": "CRM ref: 3nv-1gt-4rt",
"notificationHeaders": {
"property1": "string",
"property2": "string"
},
"title": "Product installation review"
}';
const headers = {
'Content-Type': 'application/json', 'Accept': 'application/json', 'Authorization': 'API_KEY'
}
fetch('/api/v2/appointments/', {
method: 'PUT',
body: input,
headers
})
.then(r => r.json())
.then((body) => {
console.log(body)
})
// This sample needs improvement.
URL obj = new URL("/api/v2/appointments/");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("PUT");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream())
);
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
System.out.println(response.toString());
import requests
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Authorization': 'API_KEY'
}
r = requests.put(
'/api/v2/appointments/',
params={},
headers = headers)
print r.json()
require 'rest-client'
require 'json'
headers = {
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'Authorization' => 'API_KEY'
}
result = RestClient.put '/api/v2/appointments/',
params: {}, headers: headers
p JSON.parse(result)
Activate an Appointment
POST /api/v2/appointments/activate/{id} HTTP/1.1
Accept: application/json
Base paths: /api/v2/appointments
Explicitly activates a previously scheduled appointment, making it ready for use. If the appointment is already active, this operation returns the existing room details without creating new resources.
NOTE: Auto-activation is enabled by default for most applications, so explicit activation is usually unnecessary. Use this endpoint only when auto-activation is disabled or when you need to force activation earlier. When activation happens here and invite notifications are configured, ROOM/invite notifications are triggered.
Required authorization: ROLE_CLIENT_SERVICE
Parameters
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
| id | path | string | true | Id is the unique identifier of the appointment to be activated. |
Responses
Overview
| Status | Meaning | Description | Schema |
|---|---|---|---|
| 200 | OK | none | AppointmentResponse |
| 400 | Bad Request | Bad request. The request was malformed or missing required fields. | None |
| 401 | Unauthorized | Unauthorized. Authorization information is missing or invalid. | None |
| 403 | Forbidden | Forbidden. Access to the requested resource or operation is forbidden. | None |
| 404 | Not Found | StatusNotFound. The specified appointment could not be found. | None |
| 500 | Internal Server Error | Internal Server Error. An unexpected error occurred, preventing the successful processing of the request. | None |
Examples
200 Response
{
"applicationId": "bf8215e5-a39e-490a-a0e2-07df6a3d8c1f",
"duration": "PT5M0s (5 minutes)",
"end": "2022-01-31T19:05:00.0Z",
"id": "f46f165d-383a-4432-9a3e-9c805a152e0c",
"interaction": {
"customFields": {
"property1": "string",
"property2": "string"
},
"properties": {
"property1": "string",
"property2": "string"
},
"routing": {
"properties": {
"deploymentId": "c461a74-af3a-4b55-a461-bafbf077a34e"
},
"type": "GENESYS_CLOUD_FLOW"
},
"state": "PENDING"
},
"locale": "en_US",
"metadata": {
"prop1": {}
},
"notes": "CRM ref: 3nv-1gt-4rt",
"notificationHeaders": "{\"x-channel\": widget\"}",
"notificationsActive": true,
"organizer": {
"id": "c59a1ee2-e71d-4370-9ac8-26de220104db",
"type": "CUSTOMER"
},
"participants": [
{
"id": "2460b086-8d27-4cd3-a7ef-cdc8b4c17f0c",
"type": "CUSTOMER"
},
{
"id": "36c1r718-9ab5-48c9-aeab-fas5f37b0ec4",
"type": "AGENT"
}
],
"secureToken": "string",
"start": "2022-01-31T19:00:00.0Z",
"targetAssignment": {
"id": "string",
"type": "string"
},
"timezone": "Europe/Berlin",
"title": "Product installation review"
}
To perform this operation, you must be authenticated by means of one of the following methods: jwtBearerToken
Code samples
- Shell
- Go
- Node
- Java
- Python
- Ruby
curl -X POST /api/v2/appointments/activate/{id} \
-H 'Accept: application/json' \ -H 'Authorization: API_KEY'
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"Authorization": []string{"API_KEY"},
}
var body []byte
// body = ...
req, err := http.NewRequest("POST", "/api/v2/appointments/activate/{id}", bytes.NewBuffer(body))
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
const fetch = require('node-fetch');
const headers = {
'Accept': 'application/json', 'Authorization': 'API_KEY'
}
fetch('/api/v2/appointments/activate/{id}', {
method: 'POST',
headers
})
.then(r => r.json())
.then((body) => {
console.log(body)
})
// This sample needs improvement.
URL obj = new URL("/api/v2/appointments/activate/{id}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream())
);
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
System.out.println(response.toString());
import requests
headers = {
'Accept': 'application/json',
'Authorization': 'API_KEY'
}
r = requests.post(
'/api/v2/appointments/activate/{id}',
params={},
headers = headers)
print r.json()
require 'rest-client'
require 'json'
headers = {
'Accept' => 'application/json',
'Authorization' => 'API_KEY'
}
result = RestClient.post '/api/v2/appointments/activate/{id}',
params: {}, headers: headers
p JSON.parse(result)
Schedule a New Appointment as Customer
POST /api/v2/appointments/basic HTTP/1.1
Content-Type: application/json
Accept: application/json
Base paths: /api/v2/appointments
Schedule a new appointment as a customer with OTP verification.
Required authorization: Basic authentication with OTP Verification
Request body
{
"applicationId": "bf8215e5-a39e-490a-a0e2-07df6a3d8c1f",
"customers": [
{
"contact": {
"primaryEmail": "user@provider.net",
"primaryPhone": "2102234988"
},
"metadata": {
"refNo": "CS-9838"
},
"name": {
"firstName": "Bobby",
"lastName": "Ewing"
},
"username": "ewingb@myorg.com"
}
],
"duration": "\"PT5M\"",
"interaction": {
"customFields": {
"property1": "string",
"property2": "string"
},
"routing": {
"properties": "{\"deploymentId\": \"c461a74-af3a-4b55-a461-bafbf077a34e\"} or {\"touchpointId\": \"c461a74-af3a-4b55-a461-bafbf077a34e\"}",
"type": "GENESYS_CLOUD_FLOW or TALKDESK_DIGITAL_CONNECT"
}
},
"locale": "\"en-GB\"",
"metadata": {
"prop1": {}
},
"notes": "CRM ref: 3nv-1gt-4rt",
"notificationHeaders": "{\"x-channel\": widget\"}",
"start": "\"2022-01-31T19:00:00.0Z\"",
"targetAssignment": {
"id": "string",
"type": "string"
},
"timezone": "\"Europe/Berlin\"",
"title": "Product installation review"
}
Parameters
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
| body | body | ScheduleAppointmentRequest | false | none |
Responses
Overview
| Status | Meaning | Description | Schema |
|---|---|---|---|
| 200 | OK | none | AppointmentResponse |
| 400 | Bad Request | Bad request. The request was malformed or missing required fields. | None |
| 401 | Unauthorized | Unauthorized. Authorization information is missing or invalid. | None |
| 403 | Forbidden | Forbidden. Access to the requested resource or operation is forbidden. | None |
| 500 | Internal Server Error | Internal Server Error. An unexpected error occurred while scheduling the appointment. | None |
Examples
200 Response
{
"applicationId": "bf8215e5-a39e-490a-a0e2-07df6a3d8c1f",
"duration": "PT5M0s (5 minutes)",
"end": "2022-01-31T19:05:00.0Z",
"id": "f46f165d-383a-4432-9a3e-9c805a152e0c",
"interaction": {
"customFields": {
"property1": "string",
"property2": "string"
},
"properties": {
"property1": "string",
"property2": "string"
},
"routing": {
"properties": {
"deploymentId": "c461a74-af3a-4b55-a461-bafbf077a34e"
},
"type": "GENESYS_CLOUD_FLOW"
},
"state": "PENDING"
},
"locale": "en_US",
"metadata": {
"prop1": {}
},
"notes": "CRM ref: 3nv-1gt-4rt",
"notificationHeaders": "{\"x-channel\": widget\"}",
"notificationsActive": true,
"organizer": {
"id": "c59a1ee2-e71d-4370-9ac8-26de220104db",
"type": "CUSTOMER"
},
"participants": [
{
"id": "2460b086-8d27-4cd3-a7ef-cdc8b4c17f0c",
"type": "CUSTOMER"
},
{
"id": "36c1r718-9ab5-48c9-aeab-fas5f37b0ec4",
"type": "AGENT"
}
],
"secureToken": "string",
"start": "2022-01-31T19:00:00.0Z",
"targetAssignment": {
"id": "string",
"type": "string"
},
"timezone": "Europe/Berlin",
"title": "Product installation review"
}
To perform this operation, you must be authenticated by means of one of the following methods: None
Code samples
- Shell
- Go
- Node
- Java
- Python
- Ruby
curl -X POST /api/v2/appointments/basic \
-H 'Content-Type: application/json' \ -H 'Accept: application/json'
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Content-Type": []string{"application/json"},
"Accept": []string{"application/json"},
}
var body []byte
// body = ...
req, err := http.NewRequest("POST", "/api/v2/appointments/basic", bytes.NewBuffer(body))
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
const fetch = require('node-fetch');
const input = '{
"applicationId": "bf8215e5-a39e-490a-a0e2-07df6a3d8c1f",
"customers": [
{
"contact": {
"primaryEmail": "user@provider.net",
"primaryPhone": "2102234988"
},
"metadata": {
"refNo": "CS-9838"
},
"name": {
"firstName": "Bobby",
"lastName": "Ewing"
},
"username": "ewingb@myorg.com"
}
],
"duration": "\"PT5M\"",
"interaction": {
"customFields": {
"property1": "string",
"property2": "string"
},
"routing": {
"properties": "{\"deploymentId\": \"c461a74-af3a-4b55-a461-bafbf077a34e\"} or {\"touchpointId\": \"c461a74-af3a-4b55-a461-bafbf077a34e\"}",
"type": "GENESYS_CLOUD_FLOW or TALKDESK_DIGITAL_CONNECT"
}
},
"locale": "\"en-GB\"",
"metadata": {
"prop1": {}
},
"notes": "CRM ref: 3nv-1gt-4rt",
"notificationHeaders": "{\"x-channel\": widget\"}",
"start": "\"2022-01-31T19:00:00.0Z\"",
"targetAssignment": {
"id": "string",
"type": "string"
},
"timezone": "\"Europe/Berlin\"",
"title": "Product installation review"
}';
const headers = {
'Content-Type': 'application/json', 'Accept': 'application/json'
}
fetch('/api/v2/appointments/basic', {
method: 'POST',
body: input,
headers
})
.then(r => r.json())
.then((body) => {
console.log(body)
})
// This sample needs improvement.
URL obj = new URL("/api/v2/appointments/basic");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream())
);
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
System.out.println(response.toString());
import requests
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json'
}
r = requests.post(
'/api/v2/appointments/basic',
params={},
headers = headers)
print r.json()
require 'rest-client'
require 'json'
headers = {
'Content-Type' => 'application/json',
'Accept' => 'application/json'
}
result = RestClient.post '/api/v2/appointments/basic',
params: {}, headers: headers
p JSON.parse(result)
Reassign an Existing Appointment to a New Agent
PUT /api/v2/appointments/reassign/ HTTP/1.1
Content-Type: application/json
Accept: application/json
Base paths: /api/v2/appointments
Reassigns an existing appointment to a new agent by updating the appointment's owner and associated AGENT participant. This action facilitates the transfer of responsibility for an appointment to another agent, ensuring continuity of whsvc and management.
NOTE: This operation will replace the current owner (organizer) and any associated AGENT participants with the new AGENT specified in the request. If the appointment is reassigned to the same agent already assigned, no changes will be made.
Required authorization: ROLE_AGENT or ROLE_SUPERVISOR
Request body
{
"id": "f46f165d-383a-4432-9a3e-9c805a152e0c",
"userId": "36c1r718-9ab5-48c9-aeab-fas5f37b0ec4"
}
Parameters
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
| body | body | ReassignAppointmentRequest | false | none |
Responses
Overview
| Status | Meaning | Description | Schema |
|---|---|---|---|
| 200 | OK | none | AppointmentResponse |
| 400 | Bad Request | BadRequest. The request was malformed, missing required fields, or the specified agent ID was invalid. | None |
| 401 | Unauthorized | Unauthorized. Authorization information is missing or invalid. | None |
| 403 | Forbidden | Forbidden. Access to the requested resource or operation is forbidden. | None |
| 404 | Not Found | StatusNotFound. The specified appointment or agent could not be found. | None |
| 500 | Internal Server Error | Internal Server Error. An unexpected error occurred, preventing the successful processing of the request. | None |
Examples
200 Response
{
"applicationId": "bf8215e5-a39e-490a-a0e2-07df6a3d8c1f",
"duration": "PT5M0s (5 minutes)",
"end": "2022-01-31T19:05:00.0Z",
"id": "f46f165d-383a-4432-9a3e-9c805a152e0c",
"interaction": {
"customFields": {
"property1": "string",
"property2": "string"
},
"properties": {
"property1": "string",
"property2": "string"
},
"routing": {
"properties": {
"deploymentId": "c461a74-af3a-4b55-a461-bafbf077a34e"
},
"type": "GENESYS_CLOUD_FLOW"
},
"state": "PENDING"
},
"locale": "en_US",
"metadata": {
"prop1": {}
},
"notes": "CRM ref: 3nv-1gt-4rt",
"notificationHeaders": "{\"x-channel\": widget\"}",
"notificationsActive": true,
"organizer": {
"id": "c59a1ee2-e71d-4370-9ac8-26de220104db",
"type": "CUSTOMER"
},
"participants": [
{
"id": "2460b086-8d27-4cd3-a7ef-cdc8b4c17f0c",
"type": "CUSTOMER"
},
{
"id": "36c1r718-9ab5-48c9-aeab-fas5f37b0ec4",
"type": "AGENT"
}
],
"secureToken": "string",
"start": "2022-01-31T19:00:00.0Z",
"targetAssignment": {
"id": "string",
"type": "string"
},
"timezone": "Europe/Berlin",
"title": "Product installation review"
}
To perform this operation, you must be authenticated by means of one of the following methods: jwtBearerToken
Code samples
- Shell
- Go
- Node
- Java
- Python
- Ruby
curl -X PUT /api/v2/appointments/reassign/ \
-H 'Content-Type: application/json' \ -H 'Accept: application/json' \ -H 'Authorization: API_KEY'
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Content-Type": []string{"application/json"},
"Accept": []string{"application/json"},
"Authorization": []string{"API_KEY"},
}
var body []byte
// body = ...
req, err := http.NewRequest("PUT", "/api/v2/appointments/reassign/", bytes.NewBuffer(body))
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
const fetch = require('node-fetch');
const input = '{
"id": "f46f165d-383a-4432-9a3e-9c805a152e0c",
"userId": "36c1r718-9ab5-48c9-aeab-fas5f37b0ec4"
}';
const headers = {
'Content-Type': 'application/json', 'Accept': 'application/json', 'Authorization': 'API_KEY'
}
fetch('/api/v2/appointments/reassign/', {
method: 'PUT',
body: input,
headers
})
.then(r => r.json())
.then((body) => {
console.log(body)
})
// This sample needs improvement.
URL obj = new URL("/api/v2/appointments/reassign/");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("PUT");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream())
);
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
System.out.println(response.toString());
import requests
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Authorization': 'API_KEY'
}
r = requests.put(
'/api/v2/appointments/reassign/',
params={},
headers = headers)
print r.json()
require 'rest-client'
require 'json'
headers = {
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'Authorization' => 'API_KEY'
}
result = RestClient.put '/api/v2/appointments/reassign/',
params: {}, headers: headers
p JSON.parse(result)
Reschedule an Existing Appointment
PUT /api/v2/appointments/reschedule/ HTTP/1.1
Content-Type: application/json
Accept: application/json
Base paths: /api/v2/appointments
Modifies the schedule of an existing appointment by adjusting its start time, duration, and time zone. This operation is designed to accommodate changes in availability or scheduling preferences.
NOTE:
- If the appointment is already active, the scheduled times associated with the "RoomAccess" information will be updated to reflect the new schedule. However, the URL or link provided for video conference access will not change. This means that while the appointment time may be adjusted, the access link for participants remains the same, ensuring uninterrupted and seamless access according to the new timing.
- If application-specific notifications are active and properly configured, relevant notifications will be dispatched to inform customers accordingly.
Required authorization: ROLE_AGENT, ROLE_SUPERVISOR, or ROLE_CLIENT_SERVICE
Request body
{
"duration": "\"PT5M\"",
"id": "f46f165d-383a-4432-9a3e-9c805a152e0c",
"locale": "\"en-GB\"",
"start": "\"2022-01-31T19:00:00.0Z\"",
"timezone": "\"Europe/Berlin\""
}
Parameters
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
| body | body | RescheduleAppointmentRequest | false | none |
Responses
Overview
| Status | Meaning | Description | Schema |
|---|---|---|---|
| 200 | OK | none | AppointmentResponse |
| 400 | Bad Request | BadRequest. The request was malformed, missing required fields, or specified an invalid schedule. | None |
| 401 | Unauthorized | Unauthorized. Authorization information is missing or invalid. | None |
| 403 | Forbidden | Forbidden. Access to the requested resource or operation is forbidden. | None |
| 404 | Not Found | StatusNotFound. The specified appointment could not be found. | None |
| 500 | Internal Server Error | Internal Server Error. An unexpected error occurred, preventing the successful processing of the request. | None |
Examples
200 Response
{
"applicationId": "bf8215e5-a39e-490a-a0e2-07df6a3d8c1f",
"duration": "PT5M0s (5 minutes)",
"end": "2022-01-31T19:05:00.0Z",
"id": "f46f165d-383a-4432-9a3e-9c805a152e0c",
"interaction": {
"customFields": {
"property1": "string",
"property2": "string"
},
"properties": {
"property1": "string",
"property2": "string"
},
"routing": {
"properties": {
"deploymentId": "c461a74-af3a-4b55-a461-bafbf077a34e"
},
"type": "GENESYS_CLOUD_FLOW"
},
"state": "PENDING"
},
"locale": "en_US",
"metadata": {
"prop1": {}
},
"notes": "CRM ref: 3nv-1gt-4rt",
"notificationHeaders": "{\"x-channel\": widget\"}",
"notificationsActive": true,
"organizer": {
"id": "c59a1ee2-e71d-4370-9ac8-26de220104db",
"type": "CUSTOMER"
},
"participants": [
{
"id": "2460b086-8d27-4cd3-a7ef-cdc8b4c17f0c",
"type": "CUSTOMER"
},
{
"id": "36c1r718-9ab5-48c9-aeab-fas5f37b0ec4",
"type": "AGENT"
}
],
"secureToken": "string",
"start": "2022-01-31T19:00:00.0Z",
"targetAssignment": {
"id": "string",
"type": "string"
},
"timezone": "Europe/Berlin",
"title": "Product installation review"
}
To perform this operation, you must be authenticated by means of one of the following methods: jwtBearerToken
Code samples
- Shell
- Go
- Node
- Java
- Python
- Ruby
curl -X PUT /api/v2/appointments/reschedule/ \
-H 'Content-Type: application/json' \ -H 'Accept: application/json' \ -H 'Authorization: API_KEY'
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Content-Type": []string{"application/json"},
"Accept": []string{"application/json"},
"Authorization": []string{"API_KEY"},
}
var body []byte
// body = ...
req, err := http.NewRequest("PUT", "/api/v2/appointments/reschedule/", bytes.NewBuffer(body))
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
const fetch = require('node-fetch');
const input = '{
"duration": "\"PT5M\"",
"id": "f46f165d-383a-4432-9a3e-9c805a152e0c",
"locale": "\"en-GB\"",
"start": "\"2022-01-31T19:00:00.0Z\"",
"timezone": "\"Europe/Berlin\""
}';
const headers = {
'Content-Type': 'application/json', 'Accept': 'application/json', 'Authorization': 'API_KEY'
}
fetch('/api/v2/appointments/reschedule/', {
method: 'PUT',
body: input,
headers
})
.then(r => r.json())
.then((body) => {
console.log(body)
})
// This sample needs improvement.
URL obj = new URL("/api/v2/appointments/reschedule/");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("PUT");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream())
);
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
System.out.println(response.toString());
import requests
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Authorization': 'API_KEY'
}
r = requests.put(
'/api/v2/appointments/reschedule/',
params={},
headers = headers)
print r.json()
require 'rest-client'
require 'json'
headers = {
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'Authorization' => 'API_KEY'
}
result = RestClient.put '/api/v2/appointments/reschedule/',
params: {}, headers: headers
p JSON.parse(result)
DeleteAppointment an Appointment
DELETE /api/v2/appointments/{id} HTTP/1.1
Base paths: /api/v2/appointments
Deletes an existing appointment identified by its unique ID. This action permanently removes the appointment from the system, along with any associated participant and scheduling information. If application-specific notifications are active and configured correctly, relevant notifications will be sent to inform involved participants about the cancellation.
IMPORTANT: Deletion is irreversible. It is advisable to confirm the deletion intent and ensure that application-specific notifications are set up correctly to alert participants of the appointment's cancellation.
NOTE: If application-specific notifications are active and properly configured, relevant notifications will be dispatched to inform customers.
Required authorization: ROLE_AGENT, ROLE_SUPERVISOR, or ROLE_CLIENT_SERVICE
Parameters
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
| id | path | string | true | Id specifies the unique identifier of the appointment to delete. |
Responses
Overview
| Status | Meaning | Description | Schema |
|---|---|---|---|
| 204 | No Content | NoContent. Successful deletion of the appointment. No additional content is returned, but relevant notifications may be dispatched if configured. | None |
| 401 | Unauthorized | description: Unauthorized. Authorization information is missing or invalid. | None |
| 403 | Forbidden | Forbidden. Access to the requested resource or operation is forbidden for the user's role. | None |
| 404 | Not Found | StatusNotFound. The specified appointment could not be found, indicating that it may already have been deleted or never existed. | None |
| 500 | Internal Server Error | Internal Server Error. An unexpected error occurred, preventing the successful processing of the request. | None |
To perform this operation, you must be authenticated by means of one of the following methods: jwtBearerToken
Code samples
- Shell
- Go
- Node
- Java
- Python
- Ruby
curl -X DELETE /api/v2/appointments/{id} \
-H 'Authorization: API_KEY'
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Authorization": []string{"API_KEY"},
}
var body []byte
// body = ...
req, err := http.NewRequest("DELETE", "/api/v2/appointments/{id}", bytes.NewBuffer(body))
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
const fetch = require('node-fetch');
const headers = {
'Authorization': 'API_KEY'
}
fetch('/api/v2/appointments/{id}', {
method: 'DELETE',
headers
})
.then(r => r.json())
.then((body) => {
console.log(body)
})
// This sample needs improvement.
URL obj = new URL("/api/v2/appointments/{id}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("DELETE");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream())
);
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
System.out.println(response.toString());
import requests
headers = {
'Authorization': 'API_KEY'
}
r = requests.delete(
'/api/v2/appointments/{id}',
params={},
headers = headers)
print r.json()
require 'rest-client'
require 'json'
headers = {
'Authorization' => 'API_KEY'
}
result = RestClient.delete '/api/v2/appointments/{id}',
params: {}, headers: headers
p JSON.parse(result)
Retrieve an Appointment by ID
GET /api/v2/appointments/{id} HTTP/1.1
Accept: application/json
Base paths: /api/v2/appointments
Retrieves detailed information about an existing appointment using its unique identifier. This endpoint enables users with appropriate roles to access appointment details, ensuring efficient management and coordination.
NOTE:
- Accessing this endpoint with
ROLE_CUSTOMERrequires verification of the 'conferenceId' provided in the JWT token, ensuring that customers can only access appointments relevant to them. RoomAccessinformation, including the appointment room's URL and expiration time, is only returned for appointments that have been activated. This ensures that room access details are securely managed and only made available when necessary.
Required authorization: ROLE_AGENT, ROLE_SUPERVISOR, ROLE_CUSTOMER, or ROLE_CLIENT_SERVICE
Parameters
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
| id | path | string | true | Unique appointment identifier |
Responses
Overview
| Status | Meaning | Description | Schema |
|---|---|---|---|
| 200 | OK | none | AppointmentResponse |
| 400 | Bad Request | Bad request. The request was malformed or missing required fields. | None |
| 401 | Unauthorized | Unauthorized. Authorization information is missing or invalid. | None |
| 403 | Forbidden | Forbidden. Access to the requested resource or operation is forbidden. | None |
| 404 | Not Found | StatusNotFound. The specified appointment could not be found. | None |
| 500 | Internal Server Error | Internal Server Error. An unexpected error occurred, preventing the successful processing of the request. | None |
Examples
200 Response
{
"applicationId": "bf8215e5-a39e-490a-a0e2-07df6a3d8c1f",
"duration": "PT5M0s (5 minutes)",
"end": "2022-01-31T19:05:00.0Z",
"id": "f46f165d-383a-4432-9a3e-9c805a152e0c",
"interaction": {
"customFields": {
"property1": "string",
"property2": "string"
},
"properties": {
"property1": "string",
"property2": "string"
},
"routing": {
"properties": {
"deploymentId": "c461a74-af3a-4b55-a461-bafbf077a34e"
},
"type": "GENESYS_CLOUD_FLOW"
},
"state": "PENDING"
},
"locale": "en_US",
"metadata": {
"prop1": {}
},
"notes": "CRM ref: 3nv-1gt-4rt",
"notificationHeaders": "{\"x-channel\": widget\"}",
"notificationsActive": true,
"organizer": {
"id": "c59a1ee2-e71d-4370-9ac8-26de220104db",
"type": "CUSTOMER"
},
"participants": [
{
"id": "2460b086-8d27-4cd3-a7ef-cdc8b4c17f0c",
"type": "CUSTOMER"
},
{
"id": "36c1r718-9ab5-48c9-aeab-fas5f37b0ec4",
"type": "AGENT"
}
],
"secureToken": "string",
"start": "2022-01-31T19:00:00.0Z",
"targetAssignment": {
"id": "string",
"type": "string"
},
"timezone": "Europe/Berlin",
"title": "Product installation review"
}
To perform this operation, you must be authenticated by means of one of the following methods: None
Code samples
- Shell
- Go
- Node
- Java
- Python
- Ruby
curl -X GET /api/v2/appointments/{id} \
-H 'Accept: application/json'
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
}
var body []byte
// body = ...
req, err := http.NewRequest("GET", "/api/v2/appointments/{id}", bytes.NewBuffer(body))
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
const fetch = require('node-fetch');
const headers = {
'Accept': 'application/json'
}
fetch('/api/v2/appointments/{id}', {
method: 'GET',
headers
})
.then(r => r.json())
.then((body) => {
console.log(body)
})
// This sample needs improvement.
URL obj = new URL("/api/v2/appointments/{id}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream())
);
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
System.out.println(response.toString());
import requests
headers = {
'Accept': 'application/json'
}
r = requests.get(
'/api/v2/appointments/{id}',
params={},
headers = headers)
print r.json()
require 'rest-client'
require 'json'
headers = {
'Accept' => 'application/json'
}
result = RestClient.get '/api/v2/appointments/{id}',
params: {}, headers: headers
p JSON.parse(result)
Search & Eligibility
Retrieve the Number of Scheduled Appointments within a Specified Time Frame
GET /api/v2/appointments/count?applicationId=bf8215e5-a39e-490a-a0e2-07df6a3d8c1f&organizationId=mypurecloud.de_9da4d7e6-38c4-4a90-be39-0942f9843645&start=%222022-01-31T19%3A00%3A00.0Z%22&timeFrame=%22PT10H%22 HTTP/1.1
Accept: application/json
Base paths: /api/v2/appointments
This endpoint returns a count of distinct appointments based on the application identifier, start time, and timeframe provided in the query parameters. It is useful for obtaining quick analytics on appointment scheduling volumes within specific intervals. No authorization is required to access this endpoint.
Parameters
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
| applicationId | query | string | true | Unique application identifier |
| organizationId | query | string | true | Unique organization identifier |
| start | query | string(date-time) | true | StartTime is the UTC start date and time for counting appointments. |
| timeFrame | query | string(duration) | true | TimeFrame for searching scheduled appointments relative to each start date in ISO 8601 format. |
Responses
Overview
| Status | Meaning | Description | Schema |
|---|---|---|---|
| 200 | OK | none | Inline |
| 400 | Bad Request | Bad request. The request was malformed or missing required fields. | None |
| 401 | Unauthorized | Unauthorized. Authorization information is missing or invalid. | None |
| 403 | Forbidden | Forbidden. Access to the requested resource or operation is forbidden. | None |
| 500 | Internal Server Error | Internal Server Error. An unexpected error occurred, preventing the successful processing of the request. | None |
Response Schema
Status Code 200
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| anonymous | [AppointmentCountResponse] | false | none | none |
| » count | integer(int64) | false | none | Count represents the number of appointments scheduled within the specified duration. |
| » duration | string | false | none | Duration of the appointment, represented in ISO 8601 duration format. |
| » end | string(date-time) | false | none | EndTime is the scheduled end date and time of the appointment in UTC. |
| » start | string(date-time) | false | none | StartTime is the scheduled start date and time of the appointment in UTC. |
| » timezone | string | false | none | TimeZone specifies the local time zone of the appointment. |
Examples
200 Response
[
{
"count": 2,
"duration": "PT5M0s (5 minutes)",
"end": "2022-01-31T19:05:00.0Z",
"start": "2022-01-31T19:00:00.0Z",
"timezone": "Europe/Berlin"
}
]
To perform this operation, you must be authenticated by means of one of the following methods: None
Code samples
- Shell
- Go
- Node
- Java
- Python
- Ruby
curl -X GET /api/v2/appointments/count?applicationId=bf8215e5-a39e-490a-a0e2-07df6a3d8c1f&organizationId=mypurecloud.de_9da4d7e6-38c4-4a90-be39-0942f9843645&start=%222022-01-31T19%3A00%3A00.0Z%22&timeFrame=%22PT10H%22 \
-H 'Accept: application/json'
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
}
var body []byte
// body = ...
req, err := http.NewRequest("GET", "/api/v2/appointments/count", bytes.NewBuffer(body))
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
const fetch = require('node-fetch');
const headers = {
'Accept': 'application/json'
}
fetch('/api/v2/appointments/count?applicationId=bf8215e5-a39e-490a-a0e2-07df6a3d8c1f&organizationId=mypurecloud.de_9da4d7e6-38c4-4a90-be39-0942f9843645&start=%222022-01-31T19%3A00%3A00.0Z%22&timeFrame=%22PT10H%22', {
method: 'GET',
headers
})
.then(r => r.json())
.then((body) => {
console.log(body)
})
// This sample needs improvement.
URL obj = new URL("/api/v2/appointments/count?applicationId=bf8215e5-a39e-490a-a0e2-07df6a3d8c1f&organizationId=mypurecloud.de_9da4d7e6-38c4-4a90-be39-0942f9843645&start=%222022-01-31T19%3A00%3A00.0Z%22&timeFrame=%22PT10H%22");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream())
);
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
System.out.println(response.toString());
import requests
headers = {
'Accept': 'application/json'
}
r = requests.get(
'/api/v2/appointments/count',
params={
'applicationId': 'bf8215e5-a39e-490a-a0e2-07df6a3d8c1f',
'organizationId': 'mypurecloud.de_9da4d7e6-38c4-4a90-be39-0942f9843645',
'start': '"2022-01-31T19:00:00.0Z"',
'timeFrame': '"PT10H"'},
headers = headers)
print r.json()
require 'rest-client'
require 'json'
headers = {
'Accept' => 'application/json'
}
result = RestClient.get '/api/v2/appointments/count',
params: {
'applicationId' => 'string',
'organizationId' => 'string',
'start' => 'string(date-time)',
'timeFrame' => 'string(duration)'}, headers: headers
p JSON.parse(result)
DEPRECATED: Find Appointments Eligible for Activation
GET /api/v2/appointments/eligible HTTP/1.1
Base paths: /api/v2/appointments
[DEPRECATED] This endpoint has been deprecated as appointment activations no longer have time constraints. Previously, it was used to find all scheduled appointments eligible for activation within a specified timeframe, with eligibility calculated relative to the appointment start date.
NOTE: All scheduled appointments not previously activated explicitly or via the "Automatically activate an appointment" option are now considered eligible for activation at any time, removing the need for time-based eligibility checks. This change is designed to simplify the activation process and enhance flexibility in managing appointments.
Required authorization: ROLE_CLIENT_SERVICE
Parameters
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
| timeFrame | query | string(duration) | false | TimeFrame specifies the duration to search for eligible appointments from the start date. |
Detailed descriptions
timeFrame: TimeFrame specifies the duration to search for eligible appointments from the start date. It is represented in ISO 8601 duration format.
Responses
Overview
| Status | Meaning | Description | Schema |
|---|---|---|---|
| 200 | OK | none | None |
| 400 | Bad Request | Bad request. The request was malformed or missing required fields. | None |
| 401 | Unauthorized | Unauthorized. Authorization information is missing or invalid. | None |
| 403 | Forbidden | Forbidden. Access to the requested resource or operation is forbidden. | None |
| 500 | Internal Server Error | Internal Server Error. An unexpected error occurred, preventing the successful processing of the request. | None |
Response Headers
| Status | Header | Type | Format | Description |
|---|---|---|---|---|
| 200 | FindAllAppointmentsEligibleForActivationResponse | array | The body of the response contains an array of appointments eligible for activation. |
To perform this operation, you must be authenticated by means of one of the following methods: jwtBearerToken
Code samples
- Shell
- Go
- Node
- Java
- Python
- Ruby
curl -X GET /api/v2/appointments/eligible \
-H 'Authorization: API_KEY'
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Authorization": []string{"API_KEY"},
}
var body []byte
// body = ...
req, err := http.NewRequest("GET", "/api/v2/appointments/eligible", bytes.NewBuffer(body))
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
const fetch = require('node-fetch');
const headers = {
'Authorization': 'API_KEY'
}
fetch('/api/v2/appointments/eligible', {
method: 'GET',
headers
})
.then(r => r.json())
.then((body) => {
console.log(body)
})
// This sample needs improvement.
URL obj = new URL("/api/v2/appointments/eligible");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream())
);
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
System.out.println(response.toString());
import requests
headers = {
'Authorization': 'API_KEY'
}
r = requests.get(
'/api/v2/appointments/eligible',
params={},
headers = headers)
print r.json()
require 'rest-client'
require 'json'
headers = {
'Authorization' => 'API_KEY'
}
result = RestClient.get '/api/v2/appointments/eligible',
params: {}, headers: headers
p JSON.parse(result)
Get Count of Overlapping Appointments
GET /api/v2/appointments/overlap/count?applicationId=bf8215e5-a39e-490a-a0e2-07df6a3d8c1f&organizationId=mypurecloud.de_9da4d7e6-38c4-4a90-be39-0942f9843645&start=%222022-01-31T19%3A00%3A00.0Z%22&duration=%22PT5M%22 HTTP/1.1
Accept: application/json
Base paths: /api/v2/appointments
Retrieves the number of overlapping appointments for a given application, based on specified start time and duration. An overlapping appointment is defined as any existing appointment, SCHEDULED or ACTIVATED, that intersects with the provided time range, considering both the start time and duration.
NOTE: Overlapping is evaluated based on the start time and duration you provide, identifying any appointments that would conflict within the specified timeframe. Useful for identifying potential scheduling conflicts in advance.
Required authorization: This endpoint does not require authorization.
Parameters
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
| applicationId | query | string | true | Unique application identifier |
| organizationId | query | string | true | Unique organization identifier |
| start | query | string(date-time) | true | StartTime is the UTC start date and time for checking overlaps. |
| duration | query | string(duration) | true | Duration of the appointment to check for overlaps in ISO 8601 format. |
Responses
Overview
| Status | Meaning | Description | Schema |
|---|---|---|---|
| 200 | OK | none | AppointmentOverlapResponse |
| 400 | Bad Request | Bad request. The request was malformed or missing required fields. | None |
| 401 | Unauthorized | Unauthorized. Authorization information is missing or invalid. | None |
| 403 | Forbidden | Forbidden. Access to the requested resource or operation is forbidden. | None |
| 500 | Internal Server Error | InternalServerErrorResponse. An unexpected error occurred, preventing the successful processing of the request. | None |
Examples
200 Response
{
"count": 0
}
To perform this operation, you must be authenticated by means of one of the following methods: None
Code samples
- Shell
- Go
- Node
- Java
- Python
- Ruby
curl -X GET /api/v2/appointments/overlap/count?applicationId=bf8215e5-a39e-490a-a0e2-07df6a3d8c1f&organizationId=mypurecloud.de_9da4d7e6-38c4-4a90-be39-0942f9843645&start=%222022-01-31T19%3A00%3A00.0Z%22&duration=%22PT5M%22 \
-H 'Accept: application/json'
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
}
var body []byte
// body = ...
req, err := http.NewRequest("GET", "/api/v2/appointments/overlap/count", bytes.NewBuffer(body))
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
const fetch = require('node-fetch');
const headers = {
'Accept': 'application/json'
}
fetch('/api/v2/appointments/overlap/count?applicationId=bf8215e5-a39e-490a-a0e2-07df6a3d8c1f&organizationId=mypurecloud.de_9da4d7e6-38c4-4a90-be39-0942f9843645&start=%222022-01-31T19%3A00%3A00.0Z%22&duration=%22PT5M%22', {
method: 'GET',
headers
})
.then(r => r.json())
.then((body) => {
console.log(body)
})
// This sample needs improvement.
URL obj = new URL("/api/v2/appointments/overlap/count?applicationId=bf8215e5-a39e-490a-a0e2-07df6a3d8c1f&organizationId=mypurecloud.de_9da4d7e6-38c4-4a90-be39-0942f9843645&start=%222022-01-31T19%3A00%3A00.0Z%22&duration=%22PT5M%22");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream())
);
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
System.out.println(response.toString());
import requests
headers = {
'Accept': 'application/json'
}
r = requests.get(
'/api/v2/appointments/overlap/count',
params={
'applicationId': 'bf8215e5-a39e-490a-a0e2-07df6a3d8c1f',
'organizationId': 'mypurecloud.de_9da4d7e6-38c4-4a90-be39-0942f9843645',
'start': '"2022-01-31T19:00:00.0Z"',
'duration': '"PT5M"'},
headers = headers)
print r.json()
require 'rest-client'
require 'json'
headers = {
'Accept' => 'application/json'
}
result = RestClient.get '/api/v2/appointments/overlap/count',
params: {
'applicationId' => 'string',
'organizationId' => 'string',
'start' => 'string(date-time)',
'duration' => 'string(duration)'}, headers: headers
p JSON.parse(result)
Participants
Add an Agent as a Participant to an Existing Appointment
POST /api/v2/appointments/participants/agents/ HTTP/1.1
Content-Type: application/json
Accept: application/json
Base paths: /api/v2/appointments
Adds a participant of type AGENT to an existing appointment, enhancing the appointment's collaboration and handling capabilities. This operation is intended for roles with scheduling or supervisory responsibilities to dynamically adjust the agent lineup as needed.
NOTE: Attempting to add an agent who is already a participant in the given appointment will result in a 'StatusConflict' error, indicating that the agent's participation has already been established.
Required authorization: ROLE_AGENT or ROLE_SUPERVISOR
Request body
{
"id": "f46f165d-383a-4432-9a3e-9c805a152e0c",
"userId": "36c1r718-9ab5-48c9-aeab-fas5f37b0ec4"
}
Parameters
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
| body | body | AddParticipantAgentRequest | false | none |
Responses
Overview
| Status | Meaning | Description | Schema |
|---|---|---|---|
| 200 | OK | none | ParticipantDetails |
| 400 | Bad Request | BadRequest. The request was malformed, missing required fields. | None |
| 401 | Unauthorized | Unauthorized. Authorization information is missing or invalid. | None |
| 403 | Forbidden | Forbidden. Access to the requested resource or operation is forbidden. | None |
| 404 | Not Found | StatusNotFound. The specified appointment or agent could not be found. | None |
| 409 | Conflict | StatusConflict. The specified agent is already a participant of the appointment. | None |
| 500 | Internal Server Error | Internal Server Error. An unexpected error occurred, preventing the successful processing of the request. | None |
Examples
200 Response
{
"contact": {
"primaryEmail": "user@provider.net",
"primaryPhone": "2102234988"
},
"expiresAt": "2019-08-24T14:15:22Z",
"id": "c59a1ee2-e71d-4370-9ac8-26de220104db",
"metadata": {
"refNo": "CS-9838"
},
"name": {
"firstName": "Bobby",
"lastName": "Ewing"
},
"ticket": {
"accessUrl": "string",
"expiresAt": "2019-08-24T14:15:22Z"
},
"type": "CUSTOMER",
"username": "ewingb@myorg.com"
}
To perform this operation, you must be authenticated by means of one of the following methods: jwtBearerToken
Code samples
- Shell
- Go
- Node
- Java
- Python
- Ruby
curl -X POST /api/v2/appointments/participants/agents/ \
-H 'Content-Type: application/json' \ -H 'Accept: application/json' \ -H 'Authorization: API_KEY'
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Content-Type": []string{"application/json"},
"Accept": []string{"application/json"},
"Authorization": []string{"API_KEY"},
}
var body []byte
// body = ...
req, err := http.NewRequest("POST", "/api/v2/appointments/participants/agents/", bytes.NewBuffer(body))
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
const fetch = require('node-fetch');
const input = '{
"id": "f46f165d-383a-4432-9a3e-9c805a152e0c",
"userId": "36c1r718-9ab5-48c9-aeab-fas5f37b0ec4"
}';
const headers = {
'Content-Type': 'application/json', 'Accept': 'application/json', 'Authorization': 'API_KEY'
}
fetch('/api/v2/appointments/participants/agents/', {
method: 'POST',
body: input,
headers
})
.then(r => r.json())
.then((body) => {
console.log(body)
})
// This sample needs improvement.
URL obj = new URL("/api/v2/appointments/participants/agents/");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream())
);
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
System.out.println(response.toString());
import requests
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Authorization': 'API_KEY'
}
r = requests.post(
'/api/v2/appointments/participants/agents/',
params={},
headers = headers)
print r.json()
require 'rest-client'
require 'json'
headers = {
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'Authorization' => 'API_KEY'
}
result = RestClient.post '/api/v2/appointments/participants/agents/',
params: {}, headers: headers
p JSON.parse(result)
Add a Customer as a Participant to an Existing Appointment
POST /api/v2/appointments/participants/customers/ HTTP/1.1
Content-Type: application/json
Accept: application/json
Base paths: /api/v2/appointments
Adds a participant of type CUSTOMER to an existing appointment. This action allows for the inclusion of customers in the appointment scheduling system, facilitating direct engagement and interaction within the scheduled activities.
This operation is designed to enable roles with customer interaction responsibilities, such as agents or supervisors, to include customers in appointments, ensuring that all relevant parties are integrated into the appointment's planning and execution.
Required authorization: ROLE_AGENT or ROLE_SUPERVISOR
Request body
{
"customer": {
"contact": {
"primaryEmail": "user@provider.net",
"primaryPhone": "2102234988"
},
"metadata": {
"refNo": "CS-9838"
},
"name": {
"firstName": "Bobby",
"lastName": "Ewing"
},
"username": "ewingb@myorg.com"
},
"id": "f46f165d-383a-4432-9a3e-9c805a152e0c"
}
Parameters
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
| body | body | AddParticipantCustomerRequest | false | none |
Responses
Overview
| Status | Meaning | Description | Schema |
|---|---|---|---|
| 200 | OK | none | ParticipantDetails |
| 400 | Bad Request | BadRequest. The request was malformed, missing required fields. | None |
| 401 | Unauthorized | Unauthorized. Authorization information is missing or invalid. | None |
| 403 | Forbidden | Forbidden. Access to the requested resource or operation is forbidden. | None |
| 404 | Not Found | StatusNotFound. The specified appointment or customer could not be found. | None |
| 500 | Internal Server Error | Internal Server Error. An unexpected error occurred, preventing the successful processing of the request. | None |
Examples
200 Response
{
"contact": {
"primaryEmail": "user@provider.net",
"primaryPhone": "2102234988"
},
"expiresAt": "2019-08-24T14:15:22Z",
"id": "c59a1ee2-e71d-4370-9ac8-26de220104db",
"metadata": {
"refNo": "CS-9838"
},
"name": {
"firstName": "Bobby",
"lastName": "Ewing"
},
"ticket": {
"accessUrl": "string",
"expiresAt": "2019-08-24T14:15:22Z"
},
"type": "CUSTOMER",
"username": "ewingb@myorg.com"
}
To perform this operation, you must be authenticated by means of one of the following methods: jwtBearerToken
Code samples
- Shell
- Go
- Node
- Java
- Python
- Ruby
curl -X POST /api/v2/appointments/participants/customers/ \
-H 'Content-Type: application/json' \ -H 'Accept: application/json' \ -H 'Authorization: API_KEY'
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Content-Type": []string{"application/json"},
"Accept": []string{"application/json"},
"Authorization": []string{"API_KEY"},
}
var body []byte
// body = ...
req, err := http.NewRequest("POST", "/api/v2/appointments/participants/customers/", bytes.NewBuffer(body))
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
const fetch = require('node-fetch');
const input = '{
"customer": {
"contact": {
"primaryEmail": "user@provider.net",
"primaryPhone": "2102234988"
},
"metadata": {
"refNo": "CS-9838"
},
"name": {
"firstName": "Bobby",
"lastName": "Ewing"
},
"username": "ewingb@myorg.com"
},
"id": "f46f165d-383a-4432-9a3e-9c805a152e0c"
}';
const headers = {
'Content-Type': 'application/json', 'Accept': 'application/json', 'Authorization': 'API_KEY'
}
fetch('/api/v2/appointments/participants/customers/', {
method: 'POST',
body: input,
headers
})
.then(r => r.json())
.then((body) => {
console.log(body)
})
// This sample needs improvement.
URL obj = new URL("/api/v2/appointments/participants/customers/");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream())
);
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
System.out.println(response.toString());
import requests
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Authorization': 'API_KEY'
}
r = requests.post(
'/api/v2/appointments/participants/customers/',
params={},
headers = headers)
print r.json()
require 'rest-client'
require 'json'
headers = {
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'Authorization' => 'API_KEY'
}
result = RestClient.post '/api/v2/appointments/participants/customers/',
params: {}, headers: headers
p JSON.parse(result)
DeleteAppointment a Participant from an Appointment
DELETE /api/v2/appointments/{id}/participants/{participantId} HTTP/1.1
Accept: application/json
Base paths: /api/v2/appointments
Removes a specific participant from an existing appointment by their unique identifier. This action allows for the adjustment of the participant list, ensuring that only relevant users are included in the appointment.
Required authorization: ROLE_AGENT or ROLE_SUPERVISOR
Parameters
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
| id | path | string | true | Id specifies the unique identifier of the appointment from which a Participant will be deleted. |
| participantId | path | string | true | ParticipantId specifies the unique identifier of the Participant to delete. |
Responses
Overview
| Status | Meaning | Description | Schema |
|---|---|---|---|
| 200 | OK | none | AppointmentResponse |
| 400 | Bad Request | Bad request. The request was malformed or missing required fields. | None |
| 401 | Unauthorized | Unauthorized. Authorization information is missing or invalid. | None |
| 403 | Forbidden | Forbidden. Access to the requested resource or operation is forbidden. | None |
| 404 | Not Found | StatusNotFound. The specified appointment or participant could not be found. | None |
| 500 | Internal Server Error | Internal Server Error. An unexpected error occurred, preventing the successful processing of the request. | None |
Examples
200 Response
{
"applicationId": "bf8215e5-a39e-490a-a0e2-07df6a3d8c1f",
"duration": "PT5M0s (5 minutes)",
"end": "2022-01-31T19:05:00.0Z",
"id": "f46f165d-383a-4432-9a3e-9c805a152e0c",
"interaction": {
"customFields": {
"property1": "string",
"property2": "string"
},
"properties": {
"property1": "string",
"property2": "string"
},
"routing": {
"properties": {
"deploymentId": "c461a74-af3a-4b55-a461-bafbf077a34e"
},
"type": "GENESYS_CLOUD_FLOW"
},
"state": "PENDING"
},
"locale": "en_US",
"metadata": {
"prop1": {}
},
"notes": "CRM ref: 3nv-1gt-4rt",
"notificationHeaders": "{\"x-channel\": widget\"}",
"notificationsActive": true,
"organizer": {
"id": "c59a1ee2-e71d-4370-9ac8-26de220104db",
"type": "CUSTOMER"
},
"participants": [
{
"id": "2460b086-8d27-4cd3-a7ef-cdc8b4c17f0c",
"type": "CUSTOMER"
},
{
"id": "36c1r718-9ab5-48c9-aeab-fas5f37b0ec4",
"type": "AGENT"
}
],
"secureToken": "string",
"start": "2022-01-31T19:00:00.0Z",
"targetAssignment": {
"id": "string",
"type": "string"
},
"timezone": "Europe/Berlin",
"title": "Product installation review"
}
To perform this operation, you must be authenticated by means of one of the following methods: jwtBearerToken
Code samples
- Shell
- Go
- Node
- Java
- Python
- Ruby
curl -X DELETE /api/v2/appointments/{id}/participants/{participantId} \
-H 'Accept: application/json' \ -H 'Authorization: API_KEY'
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"Authorization": []string{"API_KEY"},
}
var body []byte
// body = ...
req, err := http.NewRequest("DELETE", "/api/v2/appointments/{id}/participants/{participantId}", bytes.NewBuffer(body))
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
const fetch = require('node-fetch');
const headers = {
'Accept': 'application/json', 'Authorization': 'API_KEY'
}
fetch('/api/v2/appointments/{id}/participants/{participantId}', {
method: 'DELETE',
headers
})
.then(r => r.json())
.then((body) => {
console.log(body)
})
// This sample needs improvement.
URL obj = new URL("/api/v2/appointments/{id}/participants/{participantId}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("DELETE");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream())
);
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
System.out.println(response.toString());
import requests
headers = {
'Accept': 'application/json',
'Authorization': 'API_KEY'
}
r = requests.delete(
'/api/v2/appointments/{id}/participants/{participantId}',
params={},
headers = headers)
print r.json()
require 'rest-client'
require 'json'
headers = {
'Accept' => 'application/json',
'Authorization' => 'API_KEY'
}
result = RestClient.delete '/api/v2/appointments/{id}/participants/{participantId}',
params: {}, headers: headers
p JSON.parse(result)
Get Participant Details
GET /api/v2/appointments/{id}/participants/{participantId} HTTP/1.1
Accept: application/json
Base paths: /api/v2/appointments
Retrieves the details of a specific participant belonging to an existing appointment. The accessibility of participant details varies based on the user's role.
Required authorization: ROLE_AGENT, ROLE_SUPERVISOR or ROLE_CUSTOMER
NOTE:
ROLE_CUSTOMER: Authorized to retrieve details of participants with type CUSTOMER only. Attempting to retrieve details of a participant type CUSTOMER after an appointment has expired may result in a 'StatusNotFound' error.- When accessing with
ROLE_CUSTOMER, the relevant 'conferenceId' from the JWT token will also be verified.
Parameters
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
| id | path | string | true | Id specifies the unique identifier of the appointment. |
| participantId | path | string | true | ParticipantId specifies the unique identifier of the Participant. |
Responses
Overview
| Status | Meaning | Description | Schema |
|---|---|---|---|
| 200 | OK | none | ParticipantDetails |
| 400 | Bad Request | Bad request. The request was malformed or missing required fields. | None |
| 401 | Unauthorized | Unauthorized. Authorization information is missing or invalid. | None |
| 403 | Forbidden | Forbidden. Access to the requested resource or operation is forbidden. | None |
| 404 | Not Found | StatusNotFound. No participant details found matching the criteria. | None |
| 500 | Internal Server Error | InternalServerError. An unexpected error occurred while retrieving participant details. | None |
Examples
200 Response
{
"contact": {
"primaryEmail": "user@provider.net",
"primaryPhone": "2102234988"
},
"expiresAt": "2019-08-24T14:15:22Z",
"id": "c59a1ee2-e71d-4370-9ac8-26de220104db",
"metadata": {
"refNo": "CS-9838"
},
"name": {
"firstName": "Bobby",
"lastName": "Ewing"
},
"ticket": {
"accessUrl": "string",
"expiresAt": "2019-08-24T14:15:22Z"
},
"type": "CUSTOMER",
"username": "ewingb@myorg.com"
}
To perform this operation, you must be authenticated by means of one of the following methods: jwtBearerToken
Code samples
- Shell
- Go
- Node
- Java
- Python
- Ruby
curl -X GET /api/v2/appointments/{id}/participants/{participantId} \
-H 'Accept: application/json' \ -H 'Authorization: API_KEY'
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"Authorization": []string{"API_KEY"},
}
var body []byte
// body = ...
req, err := http.NewRequest("GET", "/api/v2/appointments/{id}/participants/{participantId}", bytes.NewBuffer(body))
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
const fetch = require('node-fetch');
const headers = {
'Accept': 'application/json', 'Authorization': 'API_KEY'
}
fetch('/api/v2/appointments/{id}/participants/{participantId}', {
method: 'GET',
headers
})
.then(r => r.json())
.then((body) => {
console.log(body)
})
// This sample needs improvement.
URL obj = new URL("/api/v2/appointments/{id}/participants/{participantId}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream())
);
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
System.out.println(response.toString());
import requests
headers = {
'Accept': 'application/json',
'Authorization': 'API_KEY'
}
r = requests.get(
'/api/v2/appointments/{id}/participants/{participantId}',
params={},
headers = headers)
print r.json()
require 'rest-client'
require 'json'
headers = {
'Accept' => 'application/json',
'Authorization' => 'API_KEY'
}
result = RestClient.get '/api/v2/appointments/{id}/participants/{participantId}',
params: {}, headers: headers
p JSON.parse(result)
UpdateAppointment Participant state
PUT /api/v2/appointments/{id}/participants/{participantId} HTTP/1.1
Accept: application/json
Base paths: /api/v2/appointments
Updates the state of a specific participant belonging to an existing appointment. The new state should be provided in the request body.
Required authorization: ROLE_AGENT, ROLE_SUPERVISOR or ROLE_CUSTOMER
NOTE:
ROLE_CUSTOMER: Authorized to update the state of participants with type CUSTOMER only. Attempting to update the state of a participant type CUSTOMER after an appointment has expired may result in a 'StatusNotFound' error.- When accessing with
ROLE_CUSTOMER, the relevant 'conferenceId' from the JWT token will also be verified.
Parameters
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
| id | path | string | true | Id specifies the unique identifier of the appointment. |
| participantId | path | string | true | ParticipantId specifies the unique identifier of the Participant. |
| state | query | string | false | state specifies the new state of the Participant. |
Detailed descriptions
state: state specifies the new state of the Participant. Possible values are: "WAITING", "JOINED", "LEFT".
Responses
Overview
| Status | Meaning | Description | Schema |
|---|---|---|---|
| 200 | OK | none | AppointmentResponse |
| 400 | Bad Request | Bad request. The request was malformed or missing required fields. | None |
| 401 | Unauthorized | Unauthorized. Authorization information is missing or invalid. | None |
| 403 | Forbidden | Forbidden. Access to the requested resource or operation is forbidden. | None |
| 404 | Not Found | StatusNotFound. No appointment or participant found matching the criteria. | None |
| 500 | Internal Server Error | InternalServerError. An unexpected error occurred while updating participant state. | None |
Examples
200 Response
{
"applicationId": "bf8215e5-a39e-490a-a0e2-07df6a3d8c1f",
"duration": "PT5M0s (5 minutes)",
"end": "2022-01-31T19:05:00.0Z",
"id": "f46f165d-383a-4432-9a3e-9c805a152e0c",
"interaction": {
"customFields": {
"property1": "string",
"property2": "string"
},
"properties": {
"property1": "string",
"property2": "string"
},
"routing": {
"properties": {
"deploymentId": "c461a74-af3a-4b55-a461-bafbf077a34e"
},
"type": "GENESYS_CLOUD_FLOW"
},
"state": "PENDING"
},
"locale": "en_US",
"metadata": {
"prop1": {}
},
"notes": "CRM ref: 3nv-1gt-4rt",
"notificationHeaders": "{\"x-channel\": widget\"}",
"notificationsActive": true,
"organizer": {
"id": "c59a1ee2-e71d-4370-9ac8-26de220104db",
"type": "CUSTOMER"
},
"participants": [
{
"id": "2460b086-8d27-4cd3-a7ef-cdc8b4c17f0c",
"type": "CUSTOMER"
},
{
"id": "36c1r718-9ab5-48c9-aeab-fas5f37b0ec4",
"type": "AGENT"
}
],
"secureToken": "string",
"start": "2022-01-31T19:00:00.0Z",
"targetAssignment": {
"id": "string",
"type": "string"
},
"timezone": "Europe/Berlin",
"title": "Product installation review"
}
To perform this operation, you must be authenticated by means of one of the following methods: jwtBearerToken
Code samples
- Shell
- Go
- Node
- Java
- Python
- Ruby
curl -X PUT /api/v2/appointments/{id}/participants/{participantId} \
-H 'Accept: application/json' \ -H 'Authorization: API_KEY'
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"Authorization": []string{"API_KEY"},
}
var body []byte
// body = ...
req, err := http.NewRequest("PUT", "/api/v2/appointments/{id}/participants/{participantId}", bytes.NewBuffer(body))
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
const fetch = require('node-fetch');
const headers = {
'Accept': 'application/json', 'Authorization': 'API_KEY'
}
fetch('/api/v2/appointments/{id}/participants/{participantId}', {
method: 'PUT',
headers
})
.then(r => r.json())
.then((body) => {
console.log(body)
})
// This sample needs improvement.
URL obj = new URL("/api/v2/appointments/{id}/participants/{participantId}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("PUT");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream())
);
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
System.out.println(response.toString());
import requests
headers = {
'Accept': 'application/json',
'Authorization': 'API_KEY'
}
r = requests.put(
'/api/v2/appointments/{id}/participants/{participantId}',
params={},
headers = headers)
print r.json()
require 'rest-client'
require 'json'
headers = {
'Accept' => 'application/json',
'Authorization' => 'API_KEY'
}
result = RestClient.put '/api/v2/appointments/{id}/participants/{participantId}',
params: {}, headers: headers
p JSON.parse(result)
Interaction Lifecycle & Routing
Accept appointment interaction
PUT /api/v2/appointments/{id}/accept HTTP/1.1
Content-Type: application/json
Accept: application/json
Base paths: /api/v2/appointments
Marks the appointment interaction as accepted by the specified participant. Required authorization: ROLE_AGENT
Request body
"string"
Parameters
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
| id | path | string | true | Id is the unique identifier of the appointment. |
| body | body | string | true | none |
Responses
Overview
| Status | Meaning | Description | Schema |
|---|---|---|---|
| 200 | OK | none | AppointmentResponse |
| 400 | Bad Request | Bad request. The request was malformed or missing required fields. | None |
| 401 | Unauthorized | Unauthorized. Authorization information is missing or invalid. | None |
| 403 | Forbidden | Forbidden. Access to the requested resource or operation is forbidden. | None |
| 404 | Not Found | StatusNotFound. No appointment found matching the specified id. | None |
| 500 | Internal Server Error | Internal Server Error. An unexpected error occurred while updating interaction state. | None |
Examples
200 Response
{
"applicationId": "bf8215e5-a39e-490a-a0e2-07df6a3d8c1f",
"duration": "PT5M0s (5 minutes)",
"end": "2022-01-31T19:05:00.0Z",
"id": "f46f165d-383a-4432-9a3e-9c805a152e0c",
"interaction": {
"customFields": {
"property1": "string",
"property2": "string"
},
"properties": {
"property1": "string",
"property2": "string"
},
"routing": {
"properties": {
"deploymentId": "c461a74-af3a-4b55-a461-bafbf077a34e"
},
"type": "GENESYS_CLOUD_FLOW"
},
"state": "PENDING"
},
"locale": "en_US",
"metadata": {
"prop1": {}
},
"notes": "CRM ref: 3nv-1gt-4rt",
"notificationHeaders": "{\"x-channel\": widget\"}",
"notificationsActive": true,
"organizer": {
"id": "c59a1ee2-e71d-4370-9ac8-26de220104db",
"type": "CUSTOMER"
},
"participants": [
{
"id": "2460b086-8d27-4cd3-a7ef-cdc8b4c17f0c",
"type": "CUSTOMER"
},
{
"id": "36c1r718-9ab5-48c9-aeab-fas5f37b0ec4",
"type": "AGENT"
}
],
"secureToken": "string",
"start": "2022-01-31T19:00:00.0Z",
"targetAssignment": {
"id": "string",
"type": "string"
},
"timezone": "Europe/Berlin",
"title": "Product installation review"
}
To perform this operation, you must be authenticated by means of one of the following methods: jwtBearerToken
Code samples
- Shell
- Go
- Node
- Java
- Python
- Ruby
curl -X PUT /api/v2/appointments/{id}/accept \
-H 'Content-Type: application/json' \ -H 'Accept: application/json' \ -H 'Authorization: API_KEY'
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Content-Type": []string{"application/json"},
"Accept": []string{"application/json"},
"Authorization": []string{"API_KEY"},
}
var body []byte
// body = ...
req, err := http.NewRequest("PUT", "/api/v2/appointments/{id}/accept", bytes.NewBuffer(body))
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
const fetch = require('node-fetch');
const input = 'string';
const headers = {
'Content-Type': 'application/json', 'Accept': 'application/json', 'Authorization': 'API_KEY'
}
fetch('/api/v2/appointments/{id}/accept', {
method: 'PUT',
body: input,
headers
})
.then(r => r.json())
.then((body) => {
console.log(body)
})
// This sample needs improvement.
URL obj = new URL("/api/v2/appointments/{id}/accept");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("PUT");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream())
);
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
System.out.println(response.toString());
import requests
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Authorization': 'API_KEY'
}
r = requests.put(
'/api/v2/appointments/{id}/accept',
params={},
headers = headers)
print r.json()
require 'rest-client'
require 'json'
headers = {
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'Authorization' => 'API_KEY'
}
result = RestClient.put '/api/v2/appointments/{id}/accept',
params: {}, headers: headers
p JSON.parse(result)
Mark appointment interaction as failed
PUT /api/v2/appointments/{id}/failed HTTP/1.1
Accept: application/json
Base paths: /api/v2/appointments
Marks the appointment interaction as failed and captures the interaction error details. Required authorization: ROLE_AGENT or ROLE_CUSTOMER
Parameters
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
| id | path | string | true | Id is the unique identifier of the appointment. |
| systemMessage | query | string | false | none |
| userMessage | query | string | false | none |
Responses
Overview
| Status | Meaning | Description | Schema |
|---|---|---|---|
| 200 | OK | none | AppointmentResponse |
| 400 | Bad Request | Bad request. The request was malformed or missing required fields. | None |
| 401 | Unauthorized | Unauthorized. Authorization information is missing or invalid. | None |
| 403 | Forbidden | Forbidden. Access to the requested resource or operation is forbidden. | None |
| 404 | Not Found | StatusNotFound. No appointment found matching the specified id. | None |
| 500 | Internal Server Error | Internal Server Error. An unexpected error occurred while updating interaction state. | None |
Examples
200 Response
{
"applicationId": "bf8215e5-a39e-490a-a0e2-07df6a3d8c1f",
"duration": "PT5M0s (5 minutes)",
"end": "2022-01-31T19:05:00.0Z",
"id": "f46f165d-383a-4432-9a3e-9c805a152e0c",
"interaction": {
"customFields": {
"property1": "string",
"property2": "string"
},
"properties": {
"property1": "string",
"property2": "string"
},
"routing": {
"properties": {
"deploymentId": "c461a74-af3a-4b55-a461-bafbf077a34e"
},
"type": "GENESYS_CLOUD_FLOW"
},
"state": "PENDING"
},
"locale": "en_US",
"metadata": {
"prop1": {}
},
"notes": "CRM ref: 3nv-1gt-4rt",
"notificationHeaders": "{\"x-channel\": widget\"}",
"notificationsActive": true,
"organizer": {
"id": "c59a1ee2-e71d-4370-9ac8-26de220104db",
"type": "CUSTOMER"
},
"participants": [
{
"id": "2460b086-8d27-4cd3-a7ef-cdc8b4c17f0c",
"type": "CUSTOMER"
},
{
"id": "36c1r718-9ab5-48c9-aeab-fas5f37b0ec4",
"type": "AGENT"
}
],
"secureToken": "string",
"start": "2022-01-31T19:00:00.0Z",
"targetAssignment": {
"id": "string",
"type": "string"
},
"timezone": "Europe/Berlin",
"title": "Product installation review"
}
To perform this operation, you must be authenticated by means of one of the following methods: jwtBearerToken
Code samples
- Shell
- Go
- Node
- Java
- Python
- Ruby
curl -X PUT /api/v2/appointments/{id}/failed \
-H 'Accept: application/json' \ -H 'Authorization: API_KEY'
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"Authorization": []string{"API_KEY"},
}
var body []byte
// body = ...
req, err := http.NewRequest("PUT", "/api/v2/appointments/{id}/failed", bytes.NewBuffer(body))
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
const fetch = require('node-fetch');
const headers = {
'Accept': 'application/json', 'Authorization': 'API_KEY'
}
fetch('/api/v2/appointments/{id}/failed', {
method: 'PUT',
headers
})
.then(r => r.json())
.then((body) => {
console.log(body)
})
// This sample needs improvement.
URL obj = new URL("/api/v2/appointments/{id}/failed");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("PUT");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream())
);
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
System.out.println(response.toString());
import requests
headers = {
'Accept': 'application/json',
'Authorization': 'API_KEY'
}
r = requests.put(
'/api/v2/appointments/{id}/failed',
params={},
headers = headers)
print r.json()
require 'rest-client'
require 'json'
headers = {
'Accept' => 'application/json',
'Authorization' => 'API_KEY'
}
result = RestClient.put '/api/v2/appointments/{id}/failed',
params: {}, headers: headers
p JSON.parse(result)
Retrieve appointment interaction details
GET /api/v2/appointments/{id}/interaction HTTP/1.1
Accept: application/json
Base paths: /api/v2/appointments
Returns the current interaction metadata for an appointment. Required authorization: ROLE_AGENT, ROLE_SUPERVISOR, or ROLE_CUSTOMER
Parameters
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
| id | path | string | true | Id is the unique identifier of the appointment. |
Responses
Overview
| Status | Meaning | Description | Schema |
|---|---|---|---|
| 200 | OK | none | InteractionResponse |
| 400 | Bad Request | Bad request. The request was malformed or missing required fields. | None |
| 401 | Unauthorized | Unauthorized. Authorization information is missing or invalid. | None |
| 403 | Forbidden | Forbidden. Access to the requested resource or operation is forbidden. | None |
| 404 | Not Found | StatusNotFound. No appointment found matching the specified id. | None |
| 500 | Internal Server Error | Internal Server Error. An unexpected error occurred while retrieving interaction details. | None |
Examples
200 Response
{
"customFields": {
"property1": "string",
"property2": "string"
},
"properties": {
"property1": "string",
"property2": "string"
},
"routing": {
"properties": {
"deploymentId": "c461a74-af3a-4b55-a461-bafbf077a34e"
},
"type": "GENESYS_CLOUD_FLOW"
},
"state": "PENDING"
}
To perform this operation, you must be authenticated by means of one of the following methods: jwtBearerToken
Code samples
- Shell
- Go
- Node
- Java
- Python
- Ruby
curl -X GET /api/v2/appointments/{id}/interaction \
-H 'Accept: application/json' \ -H 'Authorization: API_KEY'
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"Authorization": []string{"API_KEY"},
}
var body []byte
// body = ...
req, err := http.NewRequest("GET", "/api/v2/appointments/{id}/interaction", bytes.NewBuffer(body))
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
const fetch = require('node-fetch');
const headers = {
'Accept': 'application/json', 'Authorization': 'API_KEY'
}
fetch('/api/v2/appointments/{id}/interaction', {
method: 'GET',
headers
})
.then(r => r.json())
.then((body) => {
console.log(body)
})
// This sample needs improvement.
URL obj = new URL("/api/v2/appointments/{id}/interaction");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream())
);
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
System.out.println(response.toString());
import requests
headers = {
'Accept': 'application/json',
'Authorization': 'API_KEY'
}
r = requests.get(
'/api/v2/appointments/{id}/interaction',
params={},
headers = headers)
print r.json()
require 'rest-client'
require 'json'
headers = {
'Accept' => 'application/json',
'Authorization' => 'API_KEY'
}
result = RestClient.get '/api/v2/appointments/{id}/interaction',
params: {}, headers: headers
p JSON.parse(result)
Update appointment interaction details
PUT /api/v2/appointments/{id}/interaction HTTP/1.1
Content-Type: application/json
Accept: application/json
Base paths: /api/v2/appointments
Updates the interaction metadata for an appointment, including routing configuration and channel context. Required authorization: ROLE_AGENT or ROLE_SUPERVISOR
Request body
{
"customFields": {
"property1": "string",
"property2": "string"
},
"routing": {
"properties": "{\"deploymentId\": \"c461a74-af3a-4b55-a461-bafbf077a34e\"} or {\"touchpointId\": \"c461a74-af3a-4b55-a461-bafbf077a34e\"}",
"type": "GENESYS_CLOUD_FLOW or TALKDESK_DIGITAL_CONNECT"
}
}
Parameters
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
| id | path | string | true | Id is the unique identifier of the appointment. |
| body | body | UpdateInteractionBody | true | none |
Responses
Overview
| Status | Meaning | Description | Schema |
|---|---|---|---|
| 200 | OK | none | AppointmentResponse |
| 400 | Bad Request | Bad request. The request was malformed or missing required fields. | None |
| 401 | Unauthorized | Unauthorized. Authorization information is missing or invalid. | None |
| 403 | Forbidden | Forbidden. Access to the requested resource or operation is forbidden. | None |
| 404 | Not Found | StatusNotFound. No appointment found matching the specified id. | None |
| 500 | Internal Server Error | Internal Server Error. An unexpected error occurred while updating interaction details. | None |
Examples
200 Response
{
"applicationId": "bf8215e5-a39e-490a-a0e2-07df6a3d8c1f",
"duration": "PT5M0s (5 minutes)",
"end": "2022-01-31T19:05:00.0Z",
"id": "f46f165d-383a-4432-9a3e-9c805a152e0c",
"interaction": {
"customFields": {
"property1": "string",
"property2": "string"
},
"properties": {
"property1": "string",
"property2": "string"
},
"routing": {
"properties": {
"deploymentId": "c461a74-af3a-4b55-a461-bafbf077a34e"
},
"type": "GENESYS_CLOUD_FLOW"
},
"state": "PENDING"
},
"locale": "en_US",
"metadata": {
"prop1": {}
},
"notes": "CRM ref: 3nv-1gt-4rt",
"notificationHeaders": "{\"x-channel\": widget\"}",
"notificationsActive": true,
"organizer": {
"id": "c59a1ee2-e71d-4370-9ac8-26de220104db",
"type": "CUSTOMER"
},
"participants": [
{
"id": "2460b086-8d27-4cd3-a7ef-cdc8b4c17f0c",
"type": "CUSTOMER"
},
{
"id": "36c1r718-9ab5-48c9-aeab-fas5f37b0ec4",
"type": "AGENT"
}
],
"secureToken": "string",
"start": "2022-01-31T19:00:00.0Z",
"targetAssignment": {
"id": "string",
"type": "string"
},
"timezone": "Europe/Berlin",
"title": "Product installation review"
}
To perform this operation, you must be authenticated by means of one of the following methods: jwtBearerToken
Code samples
- Shell
- Go
- Node
- Java
- Python
- Ruby
curl -X PUT /api/v2/appointments/{id}/interaction \
-H 'Content-Type: application/json' \ -H 'Accept: application/json' \ -H 'Authorization: API_KEY'
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Content-Type": []string{"application/json"},
"Accept": []string{"application/json"},
"Authorization": []string{"API_KEY"},
}
var body []byte
// body = ...
req, err := http.NewRequest("PUT", "/api/v2/appointments/{id}/interaction", bytes.NewBuffer(body))
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
const fetch = require('node-fetch');
const input = '{
"customFields": {
"property1": "string",
"property2": "string"
},
"routing": {
"properties": "{\"deploymentId\": \"c461a74-af3a-4b55-a461-bafbf077a34e\"} or {\"touchpointId\": \"c461a74-af3a-4b55-a461-bafbf077a34e\"}",
"type": "GENESYS_CLOUD_FLOW or TALKDESK_DIGITAL_CONNECT"
}
}';
const headers = {
'Content-Type': 'application/json', 'Accept': 'application/json', 'Authorization': 'API_KEY'
}
fetch('/api/v2/appointments/{id}/interaction', {
method: 'PUT',
body: input,
headers
})
.then(r => r.json())
.then((body) => {
console.log(body)
})
// This sample needs improvement.
URL obj = new URL("/api/v2/appointments/{id}/interaction");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("PUT");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream())
);
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
System.out.println(response.toString());
import requests
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Authorization': 'API_KEY'
}
r = requests.put(
'/api/v2/appointments/{id}/interaction',
params={},
headers = headers)
print r.json()
require 'rest-client'
require 'json'
headers = {
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'Authorization' => 'API_KEY'
}
result = RestClient.put '/api/v2/appointments/{id}/interaction',
params: {}, headers: headers
p JSON.parse(result)
Appointment Notifications (Per Appointment)
Get Appointment Notification History
GET /api/v2/appointments/{id}/notifications HTTP/1.1
Accept: application/json
Base paths: /api/v2/appointments
Retrieves notification statuses for a specific appointment. Supports paging through query parameters. When invoked by an agent, the results are filtered to the caller's current assignment.
Field notes: scheduledFor: present only for scheduled notification types (ROOM, REMINDER, FOLLOW_UP) and represents the planned delivery time; omitted for event-style types where not applicable. nextRetryAt: present when an automatic retry is scheduled; omitted otherwise. nextPollAt: present while provider status polling is in progress (e.g. PENDING or SUBMITTED states); omitted for terminal states.
Required authorization: ROLE_SUPERVISOR or ROLE_AGENT
Parameters
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
| id | path | string | true | Id is the unique identifier of the appointment. |
| pageSize | query | integer(int64) | false | Page size - number of items per page |
| pageNumber | query | integer(int64) | false | Page number - 1-based page index |
| sortOrder | query | string | false | Sort order - ascending or descending |
| sortField | query | string | false | Field to use for sorting |
| type | query | array[string] | false | Types filters the notification types. |
| channel | query | array[string] | false | Channels filters the notification channels. |
| status | query | array[string] | false | Statuses filters the notification statuses. |
Detailed descriptions
type: Types filters the notification types. Possible values: CREATE, UPDATE, RESCHEDULE, REASSIGN, ROOM, REMINDER, CANCELLED, FOLLOW_UP, IN_PROGRESS, COMPLETED, FAILED, NO_SHOW, PARTICIPANT_ADDED, PARTICIPANT_REMOVED, PARTICIPANT_UPDATED, INTERACTION_UPDATED. Accepts repeated query params (recommended) or comma-separated values.
channel: Channels filters the notification channels. Possible values: EMAIL, SMS, WEBHOOKS. Values are case-insensitive. Accepts repeated query params (recommended) or comma-separated values.
status: Statuses filters the notification statuses. Possible values: DELIVERED, FAILED, INITIALIZED, PENDING, CANCELLED. Values are case-insensitive. Accepts repeated query params (recommended) or comma-separated values.
Enumerated Values
| Parameter | Value |
|---|---|
| sortOrder | asc |
| sortOrder | desc |
Responses
Overview
| Status | Meaning | Description | Schema |
|---|---|---|---|
| 200 | OK | none | ListAppointmentNotificationsResponsePaged |
| 400 | Bad Request | Bad request. | None |
| 401 | Unauthorized | Unauthorized. | None |
| 403 | Forbidden | Forbidden. | None |
| 404 | Not Found | StatusNotFound. | None |
| 500 | Internal Server Error | Internal Server Error. | None |
Examples
200 Response
{
"content": [
{
"appointmentId": "2fd76778-6392-4faa-a84e-9e02d059af21",
"canRetry": true,
"channel": "EMAIL",
"createdAt": "2024-06-01T09:00:00Z",
"id": "d3f9e4a2-9c3b-4f1a-bc0a-0ef8c4a9f9a1",
"message": "Queued for delivery",
"nextPollAt": "2024-06-01T09:01:30Z",
"nextRetryAt": "2024-06-01T09:02:00Z",
"offset": "PT30M",
"providerStatus": "QUEUED",
"recipient": {
"displayName": "Bobby Ewing",
"type": "CUSTOMER"
},
"retryCount": 1,
"scheduledFor": "2024-06-01T08:30:00Z",
"status": "PENDING",
"type": "REMINDER",
"updatedAt": "2024-06-01T09:01:00Z"
},
{
"appointmentId": "2fd76778-6392-4faa-a84e-9e02d059af21",
"canRetry": false,
"channel": "SMS",
"createdAt": "2024-06-01T08:59:00Z",
"id": "a1b2c3d4-1111-2222-3333-444455556666",
"message": "Delivered",
"providerStatus": "DELIVERED",
"recipient": {
"displayName": "Bobby Ewing",
"type": "CUSTOMER"
},
"retryCount": 0,
"status": "DELIVERED",
"type": "CREATE",
"updatedAt": "2024-06-01T09:00:05Z"
}
],
"pageCount": 4,
"pageNumber": 1,
"pageSize": 25,
"sortField": "name",
"sortOrder": "asc",
"total": 100
}
To perform this operation, you must be authenticated by means of one of the following methods: jwtBearerToken
Code samples
- Shell
- Go
- Node
- Java
- Python
- Ruby
curl -X GET /api/v2/appointments/{id}/notifications \
-H 'Accept: application/json' \ -H 'Authorization: API_KEY'
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"Authorization": []string{"API_KEY"},
}
var body []byte
// body = ...
req, err := http.NewRequest("GET", "/api/v2/appointments/{id}/notifications", bytes.NewBuffer(body))
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
const fetch = require('node-fetch');
const headers = {
'Accept': 'application/json', 'Authorization': 'API_KEY'
}
fetch('/api/v2/appointments/{id}/notifications', {
method: 'GET',
headers
})
.then(r => r.json())
.then((body) => {
console.log(body)
})
// This sample needs improvement.
URL obj = new URL("/api/v2/appointments/{id}/notifications");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream())
);
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
System.out.println(response.toString());
import requests
headers = {
'Accept': 'application/json',
'Authorization': 'API_KEY'
}
r = requests.get(
'/api/v2/appointments/{id}/notifications',
params={},
headers = headers)
print r.json()
require 'rest-client'
require 'json'
headers = {
'Accept' => 'application/json',
'Authorization' => 'API_KEY'
}
result = RestClient.get '/api/v2/appointments/{id}/notifications',
params: {}, headers: headers
p JSON.parse(result)
Get Appointment Notification Events
GET /api/v2/appointments/{id}/notifications/events HTTP/1.1
Accept: application/json
Base paths: /api/v2/appointments
Retrieves notification events for a specific appointment. Supports paging through query parameters. When invoked by an agent, the results are filtered to the caller's current assignment.
Field notes: scheduledFor: present only for scheduled notification types (ROOM, REMINDER, FOLLOW_UP) and represents the planned delivery time; omitted for event-style types where not applicable. nextPollAt: present while provider status polling is in progress; omitted for terminal states.
Required authorization: ROLE_SUPERVISOR or ROLE_AGENT
Parameters
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
| id | path | string | true | Id is the unique identifier of the appointment. |
| pageSize | query | integer(int64) | false | Page size - number of items per page |
| pageNumber | query | integer(int64) | false | Page number - 1-based page index |
| sortOrder | query | string | false | Sort order - ascending or descending |
| sortField | query | string | false | Field to use for sorting |
| type | query | array[string] | false | Types filters the notification types. |
| channel | query | array[string] | false | Channels filters the notification channels. |
| status | query | array[string] | false | Statuses filters the notification statuses. |
| statusId | query | array[string] | false | StatusIDs filters notification events to the given notification status identifiers. |
Detailed descriptions
type: Types filters the notification types. Possible values: CREATE, UPDATE, RESCHEDULE, REASSIGN, ROOM, REMINDER, CANCELLED, FOLLOW_UP, IN_PROGRESS, COMPLETED, FAILED, NO_SHOW, PARTICIPANT_ADDED, PARTICIPANT_REMOVED, PARTICIPANT_UPDATED, INTERACTION_UPDATED. Accepts repeated query params (recommended) or comma-separated values.
channel: Channels filters the notification channels. Possible values: EMAIL, SMS, WEBHOOKS. Values are case-insensitive. Accepts repeated query params (recommended) or comma-separated values.
status: Statuses filters the notification statuses. Possible values: DELIVERED, FAILED, INITIALIZED, PENDING, CANCELLED. Values are case-insensitive.
statusId: StatusIDs filters notification events to the given notification status identifiers. Accepts repeated query params (recommended) or comma-separated values.
Enumerated Values
| Parameter | Value |
|---|---|
| sortOrder | asc |
| sortOrder | desc |
Responses
Overview
| Status | Meaning | Description | Schema |
|---|---|---|---|
| 200 | OK | none | ListAppointmentNotificationEventsResponsePaged |
| 400 | Bad Request | Bad request. | None |
| 401 | Unauthorized | Unauthorized. | None |
| 403 | Forbidden | Forbidden. | None |
| 404 | Not Found | StatusNotFound. | None |
| 500 | Internal Server Error | Internal Server Error. | None |
Examples
200 Response
{
"content": [
{
"appointmentId": "2fd76778-6392-4faa-a84e-9e02d059af21",
"channel": "EMAIL",
"conversationId": "conv-3d2f4a",
"id": "7c3b1ad6-2e55-4c8f-9f2d-8ca9e78f1a0e",
"message": "Queued for delivery",
"messageId": "msg-07f1e",
"nextPollAt": "2024-06-01T09:01:30Z",
"offset": "PT30M",
"pollAttempts": 1,
"providerStatus": "QUEUED",
"recipient": {
"displayName": "Bobby Ewing",
"type": "CUSTOMER"
},
"retryCount": 1,
"scheduledFor": "2024-06-01T08:30:00Z",
"status": "PENDING",
"statusId": "d3f9e4a2-9c3b-4f1a-bc0a-0ef8c4a9f9a1",
"timestamp": "2024-06-01T09:00:30Z",
"type": "REMINDER"
},
{
"appointmentId": "2fd76778-6392-4faa-a84e-9e02d059af21",
"channel": "SMS",
"conversationId": "conv-3d2f4a",
"id": "0e8f7d6c-aaaa-bbbb-cccc-ddddeeeeffff",
"message": "Delivered",
"messageId": "msg-07f1e",
"pollAttempts": 0,
"providerStatus": "DELIVERED",
"recipient": {
"displayName": "Bobby Ewing",
"type": "CUSTOMER"
},
"retryCount": 0,
"status": "DELIVERED",
"statusId": "a1b2c3d4-1111-2222-3333-444455556666",
"timestamp": "2024-06-01T09:00:05Z",
"type": "CREATE"
}
],
"pageCount": 4,
"pageNumber": 1,
"pageSize": 25,
"sortField": "name",
"sortOrder": "asc",
"total": 100
}
To perform this operation, you must be authenticated by means of one of the following methods: jwtBearerToken
Code samples
- Shell
- Go
- Node
- Java
- Python
- Ruby
curl -X GET /api/v2/appointments/{id}/notifications/events \
-H 'Accept: application/json' \ -H 'Authorization: API_KEY'
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"Authorization": []string{"API_KEY"},
}
var body []byte
// body = ...
req, err := http.NewRequest("GET", "/api/v2/appointments/{id}/notifications/events", bytes.NewBuffer(body))
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
const fetch = require('node-fetch');
const headers = {
'Accept': 'application/json', 'Authorization': 'API_KEY'
}
fetch('/api/v2/appointments/{id}/notifications/events', {
method: 'GET',
headers
})
.then(r => r.json())
.then((body) => {
console.log(body)
})
// This sample needs improvement.
URL obj = new URL("/api/v2/appointments/{id}/notifications/events");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream())
);
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
System.out.println(response.toString());
import requests
headers = {
'Accept': 'application/json',
'Authorization': 'API_KEY'
}
r = requests.get(
'/api/v2/appointments/{id}/notifications/events',
params={},
headers = headers)
print r.json()
require 'rest-client'
require 'json'
headers = {
'Accept' => 'application/json',
'Authorization' => 'API_KEY'
}
result = RestClient.get '/api/v2/appointments/{id}/notifications/events',
params: {}, headers: headers
p JSON.parse(result)
Schemas
AddParticipantAgentRequest
{
"id": "f46f165d-383a-4432-9a3e-9c805a152e0c",
"userId": "36c1r718-9ab5-48c9-aeab-fas5f37b0ec4"
}
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| id | string | true | none | Id is the unique identifier of the appointment. in: path |
| userId | string | true | none | AgentId is the unique identifier of the user (agent) to be added to the appointment. |
AddParticipantCustomerRequest
{
"customer": {
"contact": {
"primaryEmail": "user@provider.net",
"primaryPhone": "2102234988"
},
"metadata": {
"refNo": "CS-9838"
},
"name": {
"firstName": "Bobby",
"lastName": "Ewing"
},
"username": "ewingb@myorg.com"
},
"id": "f46f165d-383a-4432-9a3e-9c805a152e0c"
}
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| customer | CustomerDetails | true | none | none |
| id | string | true | none | Id is the unique identifier of the appointment. in: path |
Appointment
{
"applicationId": "bf8215e5-a39e-490a-a0e2-07df6a3d8c1f",
"duration": "PT5M0s (5 minutes)",
"end": "2022-01-31T19:05:00.0Z",
"id": "f46f165d-383a-4432-9a3e-9c805a152e0c",
"interaction": {
"customFields": {
"property1": "string",
"property2": "string"
},
"properties": {
"property1": "string",
"property2": "string"
},
"routing": {
"properties": {
"deploymentId": "c461a74-af3a-4b55-a461-bafbf077a34e"
},
"type": "GENESYS_CLOUD_FLOW"
},
"state": "PENDING"
},
"locale": "en_US",
"metadata": {
"prop1": {}
},
"notes": "CRM ref: 3nv-1gt-4rt",
"notificationHeaders": "{\"x-channel\": widget\"}",
"notificationsActive": true,
"organizer": {
"id": "c59a1ee2-e71d-4370-9ac8-26de220104db",
"type": "CUSTOMER"
},
"participants": [
{
"id": "2460b086-8d27-4cd3-a7ef-cdc8b4c17f0c",
"type": "CUSTOMER"
},
{
"id": "36c1r718-9ab5-48c9-aeab-fas5f37b0ec4",
"type": "AGENT"
}
],
"start": "2022-01-31T19:00:00.0Z",
"targetAssignment": {
"id": "string",
"type": "string"
},
"timezone": "Europe/Berlin",
"title": "Product installation review"
}
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| applicationId | string | true | none | Unique application identifier |
| duration | string | false | none | Duration of the appointment, represented in ISO 8601 duration format. |
| end | string(date-time) | false | none | EndTime is the scheduled end date and time of the appointment in UTC. |
| id | string | false | none | Unique identifier of the appointment |
| interaction | InteractionData | false | none | none |
| locale | string | false | none | Locale used for customer notifications. |
| metadata | object | false | none | Any additional information that might be of use. |
| » additionalProperties | any | false | none | none |
| notes | string | false | none | Additional notes |
| notificationHeaders | object | false | none | NotificationHeaders propagated to all applicable notifications i.e. webhook notifications |
| » additionalProperties | string | false | none | none |
| notificationsActive | boolean | false | none | NotificationsActive indicates whether notifications for this appointment are active. |
| organizer | Organizer | false | none | none |
| participants | [Participant] | false | none | Participants lists all participants of this appointment. |
| start | string(date-time) | false | none | StartTime is the scheduled start date and time of the appointment in UTC. |
| targetAssignment | TargetAssignment | false | none | none |
| timezone | string | false | none | TimeZone specifies the local time zone of the appointment. |
| title | string | false | none | Appointment title |
AppointmentCountResponse
{
"count": 2,
"duration": "PT5M0s (5 minutes)",
"end": "2022-01-31T19:05:00.0Z",
"start": "2022-01-31T19:00:00.0Z",
"timezone": "Europe/Berlin"
}
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| count | integer(int64) | false | none | Count represents the number of appointments scheduled within the specified duration. |
| duration | string | false | none | Duration of the appointment, represented in ISO 8601 duration format. |
| end | string(date-time) | false | none | EndTime is the scheduled end date and time of the appointment in UTC. |
| start | string(date-time) | false | none | StartTime is the scheduled start date and time of the appointment in UTC. |
| timezone | string | false | none | TimeZone specifies the local time zone of the appointment. |
AppointmentOverlapResponse
{
"count": 0
}
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| count | integer(int64) | false | none | none |
AppointmentResponse
{
"applicationId": "bf8215e5-a39e-490a-a0e2-07df6a3d8c1f",
"duration": "PT5M0s (5 minutes)",
"end": "2022-01-31T19:05:00.0Z",
"id": "f46f165d-383a-4432-9a3e-9c805a152e0c",
"interaction": {
"customFields": {
"property1": "string",
"property2": "string"
},
"properties": {
"property1": "string",
"property2": "string"
},
"routing": {
"properties": {
"deploymentId": "c461a74-af3a-4b55-a461-bafbf077a34e"
},
"type": "GENESYS_CLOUD_FLOW"
},
"state": "PENDING"
},
"locale": "en_US",
"metadata": {
"prop1": {}
},
"notes": "CRM ref: 3nv-1gt-4rt",
"notificationHeaders": "{\"x-channel\": widget\"}",
"notificationsActive": true,
"organizer": {
"id": "c59a1ee2-e71d-4370-9ac8-26de220104db",
"type": "CUSTOMER"
},
"participants": [
{
"id": "2460b086-8d27-4cd3-a7ef-cdc8b4c17f0c",
"type": "CUSTOMER"
},
{
"id": "36c1r718-9ab5-48c9-aeab-fas5f37b0ec4",
"type": "AGENT"
}
],
"secureToken": "string",
"start": "2022-01-31T19:00:00.0Z",
"targetAssignment": {
"id": "string",
"type": "string"
},
"timezone": "Europe/Berlin",
"title": "Product installation review"
}
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| applicationId | string | true | none | Unique application identifier |
| duration | string | false | none | Duration of the appointment, represented in ISO 8601 duration format. |
| end | string(date-time) | false | none | EndTime is the scheduled end date and time of the appointment in UTC. |
| id | string | false | none | Unique identifier of the appointment |
| interaction | InteractionData | false | none | none |
| locale | string | false | none | Locale used for customer notifications. |
| metadata | object | false | none | Any additional information that might be of use. |
| » additionalProperties | any | false | none | none |
| notes | string | false | none | Additional notes |
| notificationHeaders | object | false | none | NotificationHeaders propagated to all applicable notifications i.e. webhook notifications |
| » additionalProperties | string | false | none | none |
| notificationsActive | boolean | false | none | NotificationsActive indicates whether notifications for this appointment are active. |
| organizer | Organizer | false | none | none |
| participants | [Participant] | false | none | Participants lists all participants of this appointment. |
| secureToken | string | false | none | SecureToken is an HMAC-SHA256 token derived from the appointment's master key. It is included only for authorised requests. |
| start | string(date-time) | false | none | StartTime is the scheduled start date and time of the appointment in UTC. |
| targetAssignment | TargetAssignment | false | none | none |
| timezone | string | false | none | TimeZone specifies the local time zone of the appointment. |
| title | string | false | none | Appointment title |
AssignmentTargetType
"string"
AssignmentTargetType defines the destination of an appointment.
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| AssignmentTargetType defines the destination of an appointment. | string | false | none | none |
Contact
{
"primaryEmail": "user@provider.net",
"primaryPhone": "2102234988"
}
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| primaryEmail | string | false | none | PrimaryEmail is the primary contact email address of the user. |
| primaryPhone | string | false | none | PrimaryPhone is the primary contact telephone number of the user. |
CustomerDetails
{
"contact": {
"primaryEmail": "user@provider.net",
"primaryPhone": "2102234988"
},
"metadata": {
"refNo": "CS-9838"
},
"name": {
"firstName": "Bobby",
"lastName": "Ewing"
},
"username": "ewingb@myorg.com"
}
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| contact | Contact | false | none | none |
| metadata | object | false | none | Metadata holds unstructured additional information that might be useful. |
| » additionalProperties | any | false | none | none |
| name | Name | false | none | none |
| username | string | false | none | Username of the user. |
CustomerDetailsRequest
{
"contact": {
"primaryEmail": "user@provider.net",
"primaryPhone": "2102234988"
},
"metadata": {
"refNo": "CS-9838"
},
"name": {
"firstName": "Bobby",
"lastName": "Ewing"
},
"participantId": "string",
"username": "ewingb@myorg.com"
}
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| contact | Contact | false | none | none |
| metadata | object | false | none | Metadata holds unstructured additional information that might be useful. |
| » additionalProperties | any | false | none | none |
| name | Name | false | none | none |
| participantId | string | false | none | CustomerId specifies the unique identifier of the Participant. |
| username | string | false | none | Username of the user. |
FindAppointmentsEligibleResponse
{
"eligibleFrom": "2022-01-31T19:00:00.0Z",
"id": "f46f165d-383a-4432-9a3e-9c805a152e0c",
"start": "2022-01-31T19:00:00.0Z",
"timezone": "Europe/Berlin"
}
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| eligibleFrom | string(date-time) | false | none | EligibleFrom is the UTC date and time from which the appointment is eligible for activation. |
| id | string | false | none | Unique identifier of the appointment |
| start | string(date-time) | false | none | StartTime is the scheduled start date and time in UTC for the appointment. |
| timezone | string | false | none | TimeZone specifies the local time zone for the appointment. |
FindAppointmentsResponsePaged
{
"content": [
{
"applicationId": "bf8215e5-a39e-490a-a0e2-07df6a3d8c1f",
"duration": "PT5M0s (5 minutes)",
"end": "2022-01-31T19:05:00.0Z",
"id": "f46f165d-383a-4432-9a3e-9c805a152e0c",
"interaction": {
"customFields": {
"property1": "string",
"property2": "string"
},
"properties": {
"property1": "string",
"property2": "string"
},
"routing": {
"properties": {
"deploymentId": "c461a74-af3a-4b55-a461-bafbf077a34e"
},
"type": "GENESYS_CLOUD_FLOW"
},
"state": "PENDING"
},
"locale": "en_US",
"metadata": {
"prop1": {}
},
"notes": "CRM ref: 3nv-1gt-4rt",
"notificationHeaders": "{\"x-channel\": widget\"}",
"notificationsActive": true,
"organizer": {
"id": "c59a1ee2-e71d-4370-9ac8-26de220104db",
"type": "CUSTOMER"
},
"participants": [
{
"id": "2460b086-8d27-4cd3-a7ef-cdc8b4c17f0c",
"type": "CUSTOMER"
},
{
"id": "36c1r718-9ab5-48c9-aeab-fas5f37b0ec4",
"type": "AGENT"
}
],
"start": "2022-01-31T19:00:00.0Z",
"targetAssignment": {
"id": "string",
"type": "string"
},
"timezone": "Europe/Berlin",
"title": "Product installation review"
}
],
"pageCount": 4,
"pageNumber": 1,
"pageSize": 25,
"sortField": "name",
"sortOrder": "asc",
"total": 100
}
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| content | [Appointment] | false | none | none |
| pageCount | integer(int64) | false | none | Number of pages for the provided page size |
| pageNumber | integer(int64) | false | none | Page number - 1-based page index |
| pageSize | integer(int64) | false | none | Page size - number of items per page |
| sortField | string | false | none | Field to use for sorting |
| sortOrder | string | false | none | Sort order - ascending or descending |
| total | integer(int64) | false | none | Total number of entities in the result set |
Enumerated Values
| Property | Value |
|---|---|
| sortOrder | asc |
| sortOrder | desc |
InteractionData
{
"customFields": {
"property1": "string",
"property2": "string"
},
"properties": {
"property1": "string",
"property2": "string"
},
"routing": {
"properties": {
"deploymentId": "c461a74-af3a-4b55-a461-bafbf077a34e"
},
"type": "GENESYS_CLOUD_FLOW"
},
"state": "PENDING"
}
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| customFields | object | false | none | Key value pair custom fields relevant to this interaction |
| » additionalProperties | string | false | none | none |
| properties | object | false | none | Key value pair property relevant to this interaction |
| » additionalProperties | string | false | none | none |
| routing | RoutingData | false | none | none |
| state | string | false | none | Current state of this interaction |
Enumerated Values
| Property | Value |
|---|---|
| state | PENDING |
| state | COMPLETE |
InteractionDataRequest
{
"customFields": {
"property1": "string",
"property2": "string"
},
"routing": {
"properties": "{\"deploymentId\": \"c461a74-af3a-4b55-a461-bafbf077a34e\"} or {\"touchpointId\": \"c461a74-af3a-4b55-a461-bafbf077a34e\"}",
"type": "GENESYS_CLOUD_FLOW or TALKDESK_DIGITAL_CONNECT"
}
}
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| customFields | object | false | none | CustomFields to be propagated to the customer interaction. |
| » additionalProperties | string | false | none | none |
| routing | RoutingDataRequest | true | none | none |
InteractionResponse
{
"customFields": {
"property1": "string",
"property2": "string"
},
"properties": {
"property1": "string",
"property2": "string"
},
"routing": {
"properties": {
"deploymentId": "c461a74-af3a-4b55-a461-bafbf077a34e"
},
"type": "GENESYS_CLOUD_FLOW"
},
"state": "PENDING"
}
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| customFields | object | false | none | Key value pair custom fields relevant to this interaction |
| » additionalProperties | string | false | none | none |
| properties | object | false | none | Key value pair property relevant to this interaction |
| » additionalProperties | string | false | none | none |
| routing | RoutingData | false | none | none |
| state | string | false | none | Current state of this interaction |
Enumerated Values
| Property | Value |
|---|---|
| state | PENDING |
| state | COMPLETE |
ListAppointmentNotificationEventsResponsePaged
{
"content": [
{
"appointmentId": "2fd76778-6392-4faa-a84e-9e02d059af21",
"channel": "EMAIL",
"conversationId": "conv-3d2f4a",
"id": "7c3b1ad6-2e55-4c8f-9f2d-8ca9e78f1a0e",
"message": "Queued for delivery",
"messageId": "msg-07f1e",
"nextPollAt": "2024-06-01T09:01:30Z",
"offset": "PT30M",
"pollAttempts": 1,
"providerStatus": "QUEUED",
"recipient": {
"displayName": "Bobby Ewing",
"type": "CUSTOMER"
},
"retryCount": 1,
"scheduledFor": "2024-06-01T08:30:00Z",
"status": "PENDING",
"statusId": "d3f9e4a2-9c3b-4f1a-bc0a-0ef8c4a9f9a1",
"timestamp": "2024-06-01T09:00:30Z",
"type": "REMINDER"
},
{
"appointmentId": "2fd76778-6392-4faa-a84e-9e02d059af21",
"channel": "SMS",
"conversationId": "conv-3d2f4a",
"id": "0e8f7d6c-aaaa-bbbb-cccc-ddddeeeeffff",
"message": "Delivered",
"messageId": "msg-07f1e",
"pollAttempts": 0,
"providerStatus": "DELIVERED",
"recipient": {
"displayName": "Bobby Ewing",
"type": "CUSTOMER"
},
"retryCount": 0,
"status": "DELIVERED",
"statusId": "a1b2c3d4-1111-2222-3333-444455556666",
"timestamp": "2024-06-01T09:00:05Z",
"type": "CREATE"
}
],
"pageCount": 4,
"pageNumber": 1,
"pageSize": 25,
"sortField": "name",
"sortOrder": "asc",
"total": 100
}
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| content | [NotificationEvent] | false | none | none |
| pageCount | integer(int64) | false | none | Number of pages for the provided page size |
| pageNumber | integer(int64) | false | none | Page number - 1-based page index |
| pageSize | integer(int64) | false | none | Page size - number of items per page |
| sortField | string | false | none | Field to use for sorting |
| sortOrder | string | false | none | Sort order - ascending or descending |
| total | integer(int64) | false | none | Total number of entities in the result set |
Enumerated Values
| Property | Value |
|---|---|
| sortOrder | asc |
| sortOrder | desc |
ListAppointmentNotificationsResponsePaged
{
"content": [
{
"appointmentId": "2fd76778-6392-4faa-a84e-9e02d059af21",
"canRetry": true,
"channel": "EMAIL",
"createdAt": "2024-06-01T09:00:00Z",
"id": "d3f9e4a2-9c3b-4f1a-bc0a-0ef8c4a9f9a1",
"message": "Queued for delivery",
"nextPollAt": "2024-06-01T09:01:30Z",
"nextRetryAt": "2024-06-01T09:02:00Z",
"offset": "PT30M",
"providerStatus": "QUEUED",
"recipient": {
"displayName": "Bobby Ewing",
"type": "CUSTOMER"
},
"retryCount": 1,
"scheduledFor": "2024-06-01T08:30:00Z",
"status": "PENDING",
"type": "REMINDER",
"updatedAt": "2024-06-01T09:01:00Z"
},
{
"appointmentId": "2fd76778-6392-4faa-a84e-9e02d059af21",
"canRetry": false,
"channel": "SMS",
"createdAt": "2024-06-01T08:59:00Z",
"id": "a1b2c3d4-1111-2222-3333-444455556666",
"message": "Delivered",
"providerStatus": "DELIVERED",
"recipient": {
"displayName": "Bobby Ewing",
"type": "CUSTOMER"
},
"retryCount": 0,
"status": "DELIVERED",
"type": "CREATE",
"updatedAt": "2024-06-01T09:00:05Z"
}
],
"pageCount": 4,
"pageNumber": 1,
"pageSize": 25,
"sortField": "name",
"sortOrder": "asc",
"total": 100
}
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| content | [NotificationStatus] | false | none | none |
| pageCount | integer(int64) | false | none | Number of pages for the provided page size |
| pageNumber | integer(int64) | false | none | Page number - 1-based page index |
| pageSize | integer(int64) | false | none | Page size - number of items per page |
| sortField | string | false | none | Field to use for sorting |
| sortOrder | string | false | none | Sort order - ascending or descending |
| total | integer(int64) | false | none | Total number of entities in the result set |
Enumerated Values
| Property | Value |
|---|---|
| sortOrder | asc |
| sortOrder | desc |
Name
{
"firstName": "Bobby",
"lastName": "Ewing"
}
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| firstName | string | false | none | FirstName is the first name of the user. |
| lastName | string | false | none | LastName is the last name of the user. |
NotificationEvent
{
"appointmentId": "2fd76778-6392-4faa-a84e-9e02d059af21",
"channel": "EMAIL",
"conversationId": "conv-3d2f4a",
"errorMessage": "rejected by provider",
"id": "7c3b1ad6-2e55-4c8f-9f2d-8ca9e78f1a0e",
"message": "Queued for delivery",
"messageId": "msg-07f1e",
"nextPollAt": "2024-06-01T09:01:30Z",
"offset": "PT30M",
"pollAttempts": 1,
"providerStatus": "QUEUED",
"recipient": {
"displayName": "string",
"reasonCode": "string",
"type": "string"
},
"retryCount": 1,
"scheduledFor": "2024-06-01T08:30:00Z",
"status": "string",
"statusId": "d3f9e4a2-9c3b-4f1a-bc0a-0ef8c4a9f9a1",
"timestamp": "2024-06-01T09:00:30Z",
"type": "REMINDER"
}
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| appointmentId | string | false | none | Associated appointment ID |
| channel | string | false | none | Email, SMS, Webhook |
| conversationId | string | false | none | Provider conversation ID |
| errorMessage | string | false | none | Error details on failure |
| id | string | false | none | Unique event ID |
| message | string | false | none | Human readable status reason |
| messageId | string | false | none | Provider message ID |
| nextPollAt | string(date-time) | false | none | Next provider poll time (while pending/submitted) |
| offset | string | false | none | ISO8601 duration (e.g. PT30M) |
| pollAttempts | integer(int64) | false | none | Provider polls made |
| providerStatus | string | false | none | Raw provider state |
| recipient | NotificationRecipient | false | none | none |
| retryCount | integer(int64) | false | none | Number of delivery attempts |
| scheduledFor | string(date-time) | false | none | Timestamp when delivery is due (only for scheduled types). |
| status | NotificationState | false | none | none |
| statusId | string | false | none | Linked notification status ID |
| timestamp | string(date-time) | false | none | Event time |
| type | string | false | none | Reminder, Follow-up, Create, Reschedule |
NotificationRecipient
{
"displayName": "string",
"reasonCode": "string",
"type": "string"
}
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| displayName | string | false | none | DisplayName is a human-friendly label of the recipient; when not available, mapping sets "-". |
| reasonCode | RecipientReasonCode | false | none | none |
| type | RecipientType | false | none | none |
NotificationState
"string"
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| anonymous | string | false | none | none |
NotificationStatus
{
"appointmentId": "2fd76778-6392-4faa-a84e-9e02d059af21",
"canRetry": true,
"channel": "EMAIL",
"createdAt": "2024-06-01T09:00:00Z",
"errorMessage": "rejected by provider",
"id": "d3f9e4a2-9c3b-4f1a-bc0a-0ef8c4a9f9a1",
"message": "Queued for delivery",
"nextPollAt": "2024-06-01T09:01:30Z",
"nextRetryAt": "2024-06-01T09:02:00Z",
"offset": "PT30M",
"providerStatus": "QUEUED",
"recipient": {
"displayName": "string",
"reasonCode": "string",
"type": "string"
},
"retryCount": 1,
"scheduledFor": "2024-06-01T08:30:00Z",
"status": "string",
"type": "REMINDER",
"updatedAt": "2024-06-01T09:01:00Z"
}
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| appointmentId | string | false | none | Associated appointment ID |
| canRetry | boolean | false | none | Whether manual retry is allowed |
| channel | string | false | none | Email, SMS, Webhook |
| createdAt | string(date-time) | false | none | Creation timestamp |
| errorMessage | string | false | none | Error details on failure |
| id | string | false | none | Unique notification status ID |
| message | string | false | none | Human readable status reason |
| nextPollAt | string(date-time) | false | none | Next provider poll time (while pending/submitted) |
| nextRetryAt | string(date-time) | false | none | Time of the next automatic retry (when applicable) |
| offset | string | false | none | ISO8601 duration (e.g. PT30M) |
| providerStatus | string | false | none | Raw provider-native state (last-known) |
| recipient | NotificationRecipient | false | none | none |
| retryCount | integer(int64) | false | none | Number of delivery attempts |
| scheduledFor | string(date-time) | false | none | Timestamp when delivery is due (only for scheduled types). |
| status | NotificationState | false | none | none |
| type | string | false | none | Reminder, Follow-up, Create, Reschedule, etc. |
| updatedAt | string(date-time) | false | none | Timestamp of last attempt |
Organizer
{
"id": "c59a1ee2-e71d-4370-9ac8-26de220104db",
"type": "CUSTOMER"
}
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| id | string | false | none | Id is the unique identifier of the Participant. |
| type | string | false | none | Type specifies the Participant type, which can be either AGENT or CUSTOMER. |
Participant
{
"detailsAvailable": true,
"errorData": {
"systemMessage": "string",
"userMessage": "string"
},
"id": "c59a1ee2-e71d-4370-9ac8-26de220104db",
"state": "active",
"ticket": {
"accessUrl": "string",
"expiresAt": "2019-08-24T14:15:22Z"
},
"type": "CUSTOMER"
}
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| detailsAvailable | boolean | false | none | none |
| errorData | ParticipantError | false | none | none |
| id | string | false | none | Id is the unique identifier of the Participant. |
| state | string | false | none | Indicates the current state of the Participant with respect to the conference. |
| ticket | Ticket | false | none | none |
| type | string | false | none | Type specifies the Participant type, which can be either AGENT or CUSTOMER. |
ParticipantDetails
{
"contact": {
"primaryEmail": "user@provider.net",
"primaryPhone": "2102234988"
},
"expiresAt": "2019-08-24T14:15:22Z",
"id": "c59a1ee2-e71d-4370-9ac8-26de220104db",
"metadata": {
"refNo": "CS-9838"
},
"name": {
"firstName": "Bobby",
"lastName": "Ewing"
},
"ticket": {
"accessUrl": "string",
"expiresAt": "2019-08-24T14:15:22Z"
},
"type": "CUSTOMER",
"username": "ewingb@myorg.com"
}
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| contact | Contact | false | none | none |
| expiresAt | string(date-time) | false | none | none |
| id | string | false | none | Id is the unique identifier of the Participant. |
| metadata | object | false | none | Metadata holds unstructured additional information that might be useful. |
| » additionalProperties | any | false | none | none |
| name | Name | false | none | none |
| ticket | Ticket | false | none | none |
| type | string | false | none | Type specifies the Participant type, which can be either AGENT or CUSTOMER. |
| username | string | false | none | Username of the user. |
ParticipantError
{
"systemMessage": "string",
"userMessage": "string"
}
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| systemMessage | string | false | none | none |
| userMessage | string | false | none | none |
ReassignAppointmentRequest
{
"id": "f46f165d-383a-4432-9a3e-9c805a152e0c",
"userId": "36c1r718-9ab5-48c9-aeab-fas5f37b0ec4"
}
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| id | string | true | none | Id is the unique identifier of the appointment. in: path |
| userId | string | true | none | UserId is the unique identifier of the user (agent) to be added to the appointment. |
RecipientReasonCode
"string"
Example values: PDM_EXPIRED, NOT_FOUND, SYSTEM_ERROR.
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| Example values: PDM_EXPIRED, NOT_FOUND, SYSTEM_ERROR. | string | false | none | none |
RecipientType
"string"
Allowed values: CUSTOMER, AGENT, SYSTEM.
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| Allowed values: CUSTOMER, AGENT, SYSTEM. | string | false | none | none |
RescheduleAppointmentRequest
{
"duration": "\"PT5M\"",
"id": "f46f165d-383a-4432-9a3e-9c805a152e0c",
"locale": "\"en-GB\"",
"start": "\"2022-01-31T19:00:00.0Z\"",
"timezone": "\"Europe/Berlin\""
}
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| duration | string(duration) | true | none | Duration of the appointment in ISO 8601 format. |
| id | string | true | none | Id is the unique identifier of the appointment. in: path |
| locale | string | false | none | Locale used for the appointment and notifications. Defaults to "en-US". |
| start | string(date-time) | true | none | StartTime is the UTC start date and time for the appointment. |
| timezone | string | true | none | TimeZone for the appointment. |
RoutingData
{
"properties": {
"deploymentId": "c461a74-af3a-4b55-a461-bafbf077a34e"
},
"type": "GENESYS_CLOUD_FLOW"
}
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| properties | object | false | none | Routing properties relevant to the routing type |
| » additionalProperties | string | false | none | none |
| type | string | false | none | Routing type associated with the given customer interaction |
Enumerated Values
| Property | Value |
|---|---|
| type | GENESYS_CLOUD_FLOW |
| type | GENESYS_CLOUD_QUEUE |
RoutingDataRequest
{
"properties": "{\"deploymentId\": \"c461a74-af3a-4b55-a461-bafbf077a34e\"} or {\"touchpointId\": \"c461a74-af3a-4b55-a461-bafbf077a34e\"}",
"type": "GENESYS_CLOUD_FLOW or TALKDESK_DIGITAL_CONNECT"
}
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| properties | object | false | none | Properties are specific routing properties relevant to the RouteType. |
| » additionalProperties | string | false | none | none |
| type | string | false | none | RouteType is the routing type for the customer interaction. Possible values: GENESYS_CLOUD_FLOW, GENESYS_CLOUD_QUEUE, TALKDESK_DIGITAL_CONNECT. Defaults to GENESYS_CLOUD_FLOW if genesys application or TALKDESK_DIGITAL_CONNECT if application is talkdesk. |
ScheduleAppointmentRequest
{
"applicationId": "bf8215e5-a39e-490a-a0e2-07df6a3d8c1f",
"customers": [
{
"contact": {
"primaryEmail": "user@provider.net",
"primaryPhone": "2102234988"
},
"metadata": {
"refNo": "CS-9838"
},
"name": {
"firstName": "Bobby",
"lastName": "Ewing"
},
"username": "ewingb@myorg.com"
}
],
"duration": "\"PT5M\"",
"interaction": {
"customFields": {
"property1": "string",
"property2": "string"
},
"routing": {
"properties": "{\"deploymentId\": \"c461a74-af3a-4b55-a461-bafbf077a34e\"} or {\"touchpointId\": \"c461a74-af3a-4b55-a461-bafbf077a34e\"}",
"type": "GENESYS_CLOUD_FLOW or TALKDESK_DIGITAL_CONNECT"
}
},
"locale": "\"en-GB\"",
"metadata": {
"prop1": {}
},
"notes": "CRM ref: 3nv-1gt-4rt",
"notificationHeaders": "{\"x-channel\": widget\"}",
"start": "\"2022-01-31T19:00:00.0Z\"",
"targetAssignment": {
"id": "string",
"type": "string"
},
"timezone": "\"Europe/Berlin\"",
"title": "Product installation review"
}
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| applicationId | string | true | none | Unique application identifier |
| customers | [CustomerDetails] | false | none | Optionally provide a list of customers who will participate in this appointment. |
| duration | string(duration) | true | none | Duration of the appointment in ISO 8601 format. |
| interaction | InteractionDataRequest | false | none | none |
| locale | string | false | none | Locale used for the appointment and notifications. Defaults to "en-US". |
| metadata | object | false | none | Any additional information that might be of use. |
| » additionalProperties | any | false | none | none |
| notes | string | false | none | Additional notes |
| notificationHeaders | object | false | none | Headers propagated to all applicable notifications i.e. webhook notifications |
| » additionalProperties | string | false | none | none |
| start | string(date-time) | true | none | StartTime is the UTC start date and time for the appointment. |
| targetAssignment | TargetAssignment | false | none | none |
| timezone | string | true | none | TimeZone for the appointment. |
| title | string | false | none | Appointment title |
TargetAssignment
{
"id": "string",
"type": "string"
}
TargetAssignment represents the assignee (agent or queue) for an appointment.
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| id | string | false | none | none |
| type | AssignmentTargetType | false | none | none |
Ticket
{
"accessUrl": "string",
"expiresAt": "2019-08-24T14:15:22Z"
}
Ticket encapsulates access-related details for a participant.
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| accessUrl | string | false | none | none |
| expiresAt | string(date-time) | false | none | none |
UpdateAppointmentRequest
{
"customer": {
"contact": {
"primaryEmail": "user@provider.net",
"primaryPhone": "2102234988"
},
"metadata": {
"refNo": "CS-9838"
},
"name": {
"firstName": "Bobby",
"lastName": "Ewing"
},
"participantId": "string",
"username": "ewingb@myorg.com"
},
"id": "f46f165d-383a-4432-9a3e-9c805a152e0c",
"metadata": {
"prop1": {}
},
"notes": "CRM ref: 3nv-1gt-4rt",
"notificationHeaders": {
"property1": "string",
"property2": "string"
},
"title": "Product installation review"
}
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| customer | CustomerDetailsRequest | false | none | none |
| id | string | true | none | Id is the unique identifier of the appointment. in: path |
| metadata | object | false | none | Any additional information that might be of use. |
| » additionalProperties | any | false | none | none |
| notes | string | false | none | Additional notes |
| notificationHeaders | object | false | none | none |
| » additionalProperties | string | false | none | none |
| title | string | false | none | Appointment title |
UpdateInteractionBody
{
"customFields": {
"property1": "string",
"property2": "string"
},
"routing": {
"properties": "{\"deploymentId\": \"c461a74-af3a-4b55-a461-bafbf077a34e\"} or {\"touchpointId\": \"c461a74-af3a-4b55-a461-bafbf077a34e\"}",
"type": "GENESYS_CLOUD_FLOW or TALKDESK_DIGITAL_CONNECT"
}
}
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| customFields | object | false | none | CustomFields to be propagated to the customer interaction. |
| » additionalProperties | string | false | none | none |
| routing | RoutingDataRequest | true | none | none |