This application provides appointment functionality for scheduling a video call between an agent and a customer
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
Appointments
Retrieve All Appointments with Optional Filtering
GET /api/appointments/ HTTP/1.1
Accept: application/json
Retrieves a paginated list of all available appointments, with the ability to apply filters based on organizer IDs, appointment durations, and date ranges. The use of certain filters, specifically organizerId
, is dependent on the user's role.
NOTE:
- ROLE_SUPERVISOR: Can specify one or multiple organizerId values to filter appointments by different organizers. If no organizerId is provided, appointments for all organizers specific to the application will be retrieved.
- Other Roles (ROLE_AGENT, ROLE_CLIENT_SERVICE): The organizerId parameter is ignored, and appointments are automatically filtered based on the current user's ID. Only appointments where the user is the organizer will be retrieved.
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 | OrganizerIDs filters appointments by organizer. |
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 |
pageNumber | query | integer(int64) | false | Page number |
sortOrder | query | string | false | asc or desc |
sortField | query | string | false | Field to use for sort |
undefined | undefined | undefined | false | none |
Detailed descriptions
organizerId: 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.
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"
},
"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",
"state": "active",
"type": "CUSTOMER"
},
"participantIds": [
{
"id": "2460b086-8d27-4cd3-a7ef-cdc8b4c17f0c",
"type": "CUSTOMER"
},
{
"id": "36c1r718-9ab5-48c9-aeab-fas5f37b0ec4",
"type": "AGENT"
}
],
"start": "2022-01-31T19:00:00.0Z",
"timezone": "Europe/Berlin",
"title": "Product installation review"
}
],
"pageCount": 0,
"pageNumber": 1,
"pageSize": 25,
"sortField": "string",
"sortOrder": "asc",
"total": 0
}
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/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/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/appointments/', {
method: 'GET',
headers
})
.then(r => r.json())
.then((body) => {
console.log(body)
})
// This sample needs improvement.
URL obj = new URL("/api/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/appointments/',
params={},
headers = headers)
print r.json()
require 'rest-client'
require 'json'
headers = {
'Accept' => 'application/json',
'Authorization' => 'API_KEY'
}
result = RestClient.get '/api/appointments/',
params: {}, headers: headers
p JSON.parse(result)
Schedule a New Appointment
POST /api/appointments/ HTTP/1.1
Content-Type: application/json
Accept: application/json
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 via the autoActivate
property set 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 ScheduleAppointment 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",
"customer": {
"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": "value1"
},
"notes": "\"CRM ref: 3nv-1gt-4rt\"",
"notificationHeaders": "{\"x-channel\": widget\"}",
"start": "\"2022-01-31T19:00:00.0Z\"",
"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 | GetAppointmentResponse |
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"
},
"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",
"state": "active",
"type": "CUSTOMER"
},
"participantIds": [
{
"id": "2460b086-8d27-4cd3-a7ef-cdc8b4c17f0c",
"type": "CUSTOMER"
},
{
"id": "36c1r718-9ab5-48c9-aeab-fas5f37b0ec4",
"type": "AGENT"
}
],
"roomAccess": {
"expires": "2022-01-31T19:00:00.0Z",
"type": "MULTI_USE_TICKET",
"url": "https://video.auvious.com/q/pij-gws"
},
"start": "2022-01-31T19:00:00.0Z",
"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/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/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",
"customer": {
"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": "value1"
},
"notes": "\"CRM ref: 3nv-1gt-4rt\"",
"notificationHeaders": "{\"x-channel\": widget\"}",
"start": "\"2022-01-31T19:00:00.0Z\"",
"timezone": "\"Europe/Berlin\"",
"title": "\"Product installation review\""
}';
const headers = {
'Content-Type': 'application/json', 'Accept': 'application/json', 'Authorization': 'API_KEY'
}
fetch('/api/appointments/', {
method: 'POST',
body: input,
headers
})
.then(r => r.json())
.then((body) => {
console.log(body)
})
// This sample needs improvement.
URL obj = new URL("/api/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/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/appointments/',
params: {}, headers: headers
p JSON.parse(result)
Update an Existing Appointment
PUT /api/appointments/ HTTP/1.1
Content-Type: application/json
Accept: application/json
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
{
"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 | GetAppointmentResponse |
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"
},
"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",
"state": "active",
"type": "CUSTOMER"
},
"participantIds": [
{
"id": "2460b086-8d27-4cd3-a7ef-cdc8b4c17f0c",
"type": "CUSTOMER"
},
{
"id": "36c1r718-9ab5-48c9-aeab-fas5f37b0ec4",
"type": "AGENT"
}
],
"roomAccess": {
"expires": "2022-01-31T19:00:00.0Z",
"type": "MULTI_USE_TICKET",
"url": "https://video.auvious.com/q/pij-gws"
},
"start": "2022-01-31T19:00:00.0Z",
"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/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/appointments/", 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",
"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/appointments/', {
method: 'PUT',
body: input,
headers
})
.then(r => r.json())
.then((body) => {
console.log(body)
})
// This sample needs improvement.
URL obj = new URL("/api/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/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/appointments/',
params: {}, headers: headers
p JSON.parse(result)
Delete an Appointment
DELETE /api/appointments/{id} HTTP/1.1
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/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/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/appointments/{id}', {
method: 'DELETE',
headers
})
.then(r => r.json())
.then((body) => {
console.log(body)
})
// This sample needs improvement.
URL obj = new URL("/api/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/appointments/{id}',
params={},
headers = headers)
print r.json()
require 'rest-client'
require 'json'
headers = {
'Authorization' => 'API_KEY'
}
result = RestClient.delete '/api/appointments/{id}',
params: {}, headers: headers
p JSON.parse(result)
Retrieve an Appointment by ID
GET /api/appointments/{id} HTTP/1.1
Accept: application/json
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_CUSTOMER
requires verification of the 'conferenceId' provided in the JWT token, ensuring that customers can only access appointments relevant to them. 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.
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 | GetAppointmentResponse |
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"
},
"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",
"state": "active",
"type": "CUSTOMER"
},
"participantIds": [
{
"id": "2460b086-8d27-4cd3-a7ef-cdc8b4c17f0c",
"type": "CUSTOMER"
},
{
"id": "36c1r718-9ab5-48c9-aeab-fas5f37b0ec4",
"type": "AGENT"
}
],
"roomAccess": {
"expires": "2022-01-31T19:00:00.0Z",
"type": "MULTI_USE_TICKET",
"url": "https://video.auvious.com/q/pij-gws"
},
"start": "2022-01-31T19:00:00.0Z",
"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/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/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/appointments/{id}', {
method: 'GET',
headers
})
.then(r => r.json())
.then((body) => {
console.log(body)
})
// This sample needs improvement.
URL obj = new URL("/api/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/appointments/{id}',
params={},
headers = headers)
print r.json()
require 'rest-client'
require 'json'
headers = {
'Accept' => 'application/json'
}
result = RestClient.get '/api/appointments/{id}',
params: {}, headers: headers
p JSON.parse(result)
Set Appointment Interaction InProgress (Internal Use)
PUT /api/appointments/{id}/end HTTP/1.1
Accept: application/json
Update the state of an existing appointment interaction by its unique appointment id. This endpoint is for internal use only and requires the 'ROLE_AGENT' or 'ROLE_CUSTOMER' authorization.
Parameters
Parameter | In | Type | Required | Description |
---|---|---|---|---|
id | path | string | true | Unique appointment identifier |
Responses
Overview
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | none | GetAppointmentResponse |
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, 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"
},
"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",
"state": "active",
"type": "CUSTOMER"
},
"participantIds": [
{
"id": "2460b086-8d27-4cd3-a7ef-cdc8b4c17f0c",
"type": "CUSTOMER"
},
{
"id": "36c1r718-9ab5-48c9-aeab-fas5f37b0ec4",
"type": "AGENT"
}
],
"roomAccess": {
"expires": "2022-01-31T19:00:00.0Z",
"type": "MULTI_USE_TICKET",
"url": "https://video.auvious.com/q/pij-gws"
},
"start": "2022-01-31T19:00:00.0Z",
"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/appointments/{id}/end \
-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/appointments/{id}/end", 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/appointments/{id}/end', {
method: 'PUT',
headers
})
.then(r => r.json())
.then((body) => {
console.log(body)
})
// This sample needs improvement.
URL obj = new URL("/api/appointments/{id}/end");
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/appointments/{id}/end',
params={},
headers = headers)
print r.json()
require 'rest-client'
require 'json'
headers = {
'Accept' => 'application/json',
'Authorization' => 'API_KEY'
}
result = RestClient.put '/api/appointments/{id}/end',
params: {}, headers: headers
p JSON.parse(result)
Delete a Participant from an Appointment
DELETE /api/appointments/{id}/participants/{pid} HTTP/1.1
Accept: application/json
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 | GetAppointmentResponse |
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"
},
"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",
"state": "active",
"type": "CUSTOMER"
},
"participantIds": [
{
"id": "2460b086-8d27-4cd3-a7ef-cdc8b4c17f0c",
"type": "CUSTOMER"
},
{
"id": "36c1r718-9ab5-48c9-aeab-fas5f37b0ec4",
"type": "AGENT"
}
],
"roomAccess": {
"expires": "2022-01-31T19:00:00.0Z",
"type": "MULTI_USE_TICKET",
"url": "https://video.auvious.com/q/pij-gws"
},
"start": "2022-01-31T19:00:00.0Z",
"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/appointments/{id}/participants/{pid} \
-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/appointments/{id}/participants/{pid}", 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/appointments/{id}/participants/{pid}', {
method: 'DELETE',
headers
})
.then(r => r.json())
.then((body) => {
console.log(body)
})
// This sample needs improvement.
URL obj = new URL("/api/appointments/{id}/participants/{pid}");
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/appointments/{id}/participants/{pid}',
params={},
headers = headers)
print r.json()
require 'rest-client'
require 'json'
headers = {
'Accept' => 'application/json',
'Authorization' => 'API_KEY'
}
result = RestClient.delete '/api/appointments/{id}/participants/{pid}',
params: {}, headers: headers
p JSON.parse(result)
Get Participant Details
GET /api/appointments/{id}/participants/{pid} HTTP/1.1
Accept: application/json
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 | GetParticipantDetailsResponse |
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"
},
"id": "c59a1ee2-e71d-4370-9ac8-26de220104db",
"metadata": {
"refNo": "CS-9838"
},
"name": {
"firstName": "Bobby",
"lastName": "Ewing"
},
"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/appointments/{id}/participants/{pid} \
-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/appointments/{id}/participants/{pid}", 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/appointments/{id}/participants/{pid}', {
method: 'GET',
headers
})
.then(r => r.json())
.then((body) => {
console.log(body)
})
// This sample needs improvement.
URL obj = new URL("/api/appointments/{id}/participants/{pid}");
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/appointments/{id}/participants/{pid}',
params={},
headers = headers)
print r.json()
require 'rest-client'
require 'json'
headers = {
'Accept' => 'application/json',
'Authorization' => 'API_KEY'
}
result = RestClient.get '/api/appointments/{id}/participants/{pid}',
params: {}, headers: headers
p JSON.parse(result)
Update Participant State
PUT /api/appointments/{id}/participants/{pid} HTTP/1.1
Content-Type: application/json
Accept: application/json
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.
Request body
{
"state": "\"JOINED\""
}
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. |
body | body | object | false | Request body containing the state of the participant. |
» state | body | 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 | GetAppointmentResponse |
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"
},
"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",
"state": "active",
"type": "CUSTOMER"
},
"participantIds": [
{
"id": "2460b086-8d27-4cd3-a7ef-cdc8b4c17f0c",
"type": "CUSTOMER"
},
{
"id": "36c1r718-9ab5-48c9-aeab-fas5f37b0ec4",
"type": "AGENT"
}
],
"roomAccess": {
"expires": "2022-01-31T19:00:00.0Z",
"type": "MULTI_USE_TICKET",
"url": "https://video.auvious.com/q/pij-gws"
},
"start": "2022-01-31T19:00:00.0Z",
"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/appointments/{id}/participants/{pid} \
-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/appointments/{id}/participants/{pid}", bytes.NewBuffer(body))
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
const fetch = require('node-fetch');
const input = '{
"state": "\"JOINED\""
}';
const headers = {
'Content-Type': 'application/json', 'Accept': 'application/json', 'Authorization': 'API_KEY'
}
fetch('/api/appointments/{id}/participants/{pid}', {
method: 'PUT',
body: input,
headers
})
.then(r => r.json())
.then((body) => {
console.log(body)
})
// This sample needs improvement.
URL obj = new URL("/api/appointments/{id}/participants/{pid}");
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/appointments/{id}/participants/{pid}',
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/appointments/{id}/participants/{pid}',
params: {}, headers: headers
p JSON.parse(result)
Activate an Appointment
POST /api/appointments/activate/{id} HTTP/1.1
Accept: application/json
Explicitly activates a previously scheduled appointment, making it ready for use. If the appointment is already active, this operation will return the existing room details ensuring that the appointment's active state is preserved without duplication of resources.
NOTE: Activation of an appointment is necessary for it to be utilized fully. This process includes generating unique access details for virtual meeting rooms.
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 | AppointmentActivationResponse |
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
{
"expires": "2022-01-31T19:00:00.0Z",
"type": "MULTI_USE_TICKET",
"url": "https://video.auvious.com/q/pij-gws"
}
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/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/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/appointments/activate/{id}', {
method: 'POST',
headers
})
.then(r => r.json())
.then((body) => {
console.log(body)
})
// This sample needs improvement.
URL obj = new URL("/api/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/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/appointments/activate/{id}',
params: {}, headers: headers
p JSON.parse(result)
Schedule New Appointment as Customer
POST /api/appointments/basic HTTP/1.1
Accept: application/json
Schedule a new appointment as a customer with OTP verification.
Required authorization: Basic authentication with OTP Verification
Responses
Overview
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | none | GetAppointmentResponse |
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"
},
"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",
"state": "active",
"type": "CUSTOMER"
},
"participantIds": [
{
"id": "2460b086-8d27-4cd3-a7ef-cdc8b4c17f0c",
"type": "CUSTOMER"
},
{
"id": "36c1r718-9ab5-48c9-aeab-fas5f37b0ec4",
"type": "AGENT"
}
],
"roomAccess": {
"expires": "2022-01-31T19:00:00.0Z",
"type": "MULTI_USE_TICKET",
"url": "https://video.auvious.com/q/pij-gws"
},
"start": "2022-01-31T19:00:00.0Z",
"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/appointments/basic \
-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("POST", "/api/appointments/basic", 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/appointments/basic', {
method: 'POST',
headers
})
.then(r => r.json())
.then((body) => {
console.log(body)
})
// This sample needs improvement.
URL obj = new URL("/api/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 = {
'Accept': 'application/json'
}
r = requests.post(
'/api/appointments/basic',
params={},
headers = headers)
print r.json()
require 'rest-client'
require 'json'
headers = {
'Accept' => 'application/json'
}
result = RestClient.post '/api/appointments/basic',
params: {}, headers: headers
p JSON.parse(result)
Retrieve the Number of Scheduled Appointments within a Specified Time Frame
GET /api/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
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/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/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/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/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/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/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/appointments/eligible/?timeFrame={duration} HTTP/1.1
[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 'autoActivate' 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/appointments/eligible/?timeFrame={duration} \
-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/appointments/eligible/?timeFrame={duration}", 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/appointments/eligible/?timeFrame={duration}', {
method: 'GET',
headers
})
.then(r => r.json())
.then((body) => {
console.log(body)
})
// This sample needs improvement.
URL obj = new URL("/api/appointments/eligible/?timeFrame={duration}");
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/appointments/eligible/?timeFrame={duration}',
params={},
headers = headers)
print r.json()
require 'rest-client'
require 'json'
headers = {
'Authorization' => 'API_KEY'
}
result = RestClient.get '/api/appointments/eligible/?timeFrame={duration}',
params: {}, headers: headers
p JSON.parse(result)
Get Count of Overlapping Appointments
GET /api/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
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/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/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/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/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/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/appointments/overlap/count',
params: {
'applicationId' => 'string',
'organizationId' => 'string',
'start' => 'string(date-time)',
'duration' => 'string(duration)'}, headers: headers
p JSON.parse(result)
Add an Agent as a Participant to an Existing Appointment
POST /api/appointments/participants/agents/ HTTP/1.1
Content-Type: application/json
Accept: application/json
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 | GetAppointmentResponse |
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
{
"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"
},
"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",
"state": "active",
"type": "CUSTOMER"
},
"participantIds": [
{
"id": "2460b086-8d27-4cd3-a7ef-cdc8b4c17f0c",
"type": "CUSTOMER"
},
{
"id": "36c1r718-9ab5-48c9-aeab-fas5f37b0ec4",
"type": "AGENT"
}
],
"roomAccess": {
"expires": "2022-01-31T19:00:00.0Z",
"type": "MULTI_USE_TICKET",
"url": "https://video.auvious.com/q/pij-gws"
},
"start": "2022-01-31T19:00:00.0Z",
"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/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/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/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/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/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/appointments/participants/agents/',
params: {}, headers: headers
p JSON.parse(result)
Add a Customer as a Participant to an Existing Appointment
POST /api/appointments/participants/customers/ HTTP/1.1
Content-Type: application/json
Accept: application/json
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 | GetAppointmentResponse |
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
{
"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"
},
"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",
"state": "active",
"type": "CUSTOMER"
},
"participantIds": [
{
"id": "2460b086-8d27-4cd3-a7ef-cdc8b4c17f0c",
"type": "CUSTOMER"
},
{
"id": "36c1r718-9ab5-48c9-aeab-fas5f37b0ec4",
"type": "AGENT"
}
],
"roomAccess": {
"expires": "2022-01-31T19:00:00.0Z",
"type": "MULTI_USE_TICKET",
"url": "https://video.auvious.com/q/pij-gws"
},
"start": "2022-01-31T19:00:00.0Z",
"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/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/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/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/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/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/appointments/participants/customers/',
params: {}, headers: headers
p JSON.parse(result)
Reassign an Existing Appointment to a New Agent
PUT /api/appointments/reassign/ HTTP/1.1
Content-Type: application/json
Accept: application/json
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 service 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 | AddParticipantAgentRequest | false | none |
Responses
Overview
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | none | GetAppointmentResponse |
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"
},
"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",
"state": "active",
"type": "CUSTOMER"
},
"participantIds": [
{
"id": "2460b086-8d27-4cd3-a7ef-cdc8b4c17f0c",
"type": "CUSTOMER"
},
{
"id": "36c1r718-9ab5-48c9-aeab-fas5f37b0ec4",
"type": "AGENT"
}
],
"roomAccess": {
"expires": "2022-01-31T19:00:00.0Z",
"type": "MULTI_USE_TICKET",
"url": "https://video.auvious.com/q/pij-gws"
},
"start": "2022-01-31T19:00:00.0Z",
"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/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/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/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/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/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/appointments/reassign/',
params: {}, headers: headers
p JSON.parse(result)
Reschedule an Existing Appointment
PUT /api/appointments/reschedule/ HTTP/1.1
Content-Type: application/json
Accept: application/json
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 | GetAppointmentResponse |
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"
},
"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",
"state": "active",
"type": "CUSTOMER"
},
"participantIds": [
{
"id": "2460b086-8d27-4cd3-a7ef-cdc8b4c17f0c",
"type": "CUSTOMER"
},
{
"id": "36c1r718-9ab5-48c9-aeab-fas5f37b0ec4",
"type": "AGENT"
}
],
"roomAccess": {
"expires": "2022-01-31T19:00:00.0Z",
"type": "MULTI_USE_TICKET",
"url": "https://video.auvious.com/q/pij-gws"
},
"start": "2022-01-31T19:00:00.0Z",
"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/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/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/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/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/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/appointments/reschedule/',
params: {}, headers: headers
p JSON.parse(result)
Events
Get Google Calendar Event URL
GET /api/cal/events/google/{id}/event HTTP/1.1
Get the Google Calendar event URL for an appointment.
Required authorization: none
Parameters
Parameter | In | Type | Required | Description |
---|---|---|---|---|
id | path | string | true | Id specifies the unique identifier of the appointment for Google Calendar event retrieval. |
Responses
Overview
Status | Meaning | Description | Schema |
---|---|---|---|
302 | Found | none | None |
400 | Bad Request | Bad request. The request was malformed or missing required fields. | None |
404 | Not Found | StatusNotFound. - No appointment found matching the specified id. | 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: None
Code samples
- Shell
- Go
- Node
- Java
- Python
- Ruby
curl -X GET /api/cal/events/google/{id}/event
package main
import (
"bytes"
"net/http"
)
func main() {
var body []byte
// body = ...
req, err := http.NewRequest("GET", "/api/cal/events/google/{id}/event", bytes.NewBuffer(body))
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
const fetch = require('node-fetch');
fetch('/api/cal/events/google/{id}/event', {
method: 'GET'
})
.then(r => r.json())
.then((body) => {
console.log(body)
})
// This sample needs improvement.
URL obj = new URL("/api/cal/events/google/{id}/event");
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
r = requests.get(
'/api/cal/events/google/{id}/event',
params={)
print r.json()
require 'rest-client'
require 'json'
result = RestClient.get '/api/cal/events/google/{id}/event',
params: {}
p JSON.parse(result)
Get iCalendar Event
GET /api/cal/events/ical/{id}/event HTTP/1.1
Get appointment event calendar in iCalendar format.
Required authorization: none
Parameters
Parameter | In | Type | Required | Description |
---|---|---|---|---|
id | path | string | true | Id specifies the unique identifier of the appointment for iCalendar event retrieval. |
Responses
Overview
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | none | None |
400 | Bad Request | Bad request. The request was malformed or missing required fields. | None |
404 | Not Found | StatusNotFound. - No appointment found matching the specified id. | 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: None
Code samples
- Shell
- Go
- Node
- Java
- Python
- Ruby
curl -X GET /api/cal/events/ical/{id}/event
package main
import (
"bytes"
"net/http"
)
func main() {
var body []byte
// body = ...
req, err := http.NewRequest("GET", "/api/cal/events/ical/{id}/event", bytes.NewBuffer(body))
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
const fetch = require('node-fetch');
fetch('/api/cal/events/ical/{id}/event', {
method: 'GET'
})
.then(r => r.json())
.then((body) => {
console.log(body)
})
// This sample needs improvement.
URL obj = new URL("/api/cal/events/ical/{id}/event");
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
r = requests.get(
'/api/cal/events/ical/{id}/event',
params={)
print r.json()
require 'rest-client'
require 'json'
result = RestClient.get '/api/cal/events/ical/{id}/event',
params: {}
p JSON.parse(result)
Notifications
Confirm Email Service Verification (Genesys Cloud Specific)
POST /api/notifications/emails/confirm HTTP/1.1
Content-Type: application/json
Completes the email service verification process by submitting the OTP (One Time Password) received in the verification email. This step confirms that the email service is correctly configured and capable of delivering email messages to the intended recipients.
NOTE: This confirmation step is crucial for verifying the operational status of the email service. The OTP code, sent to the provided email address during the verification process (initiateEmailServiceVerification
), must be entered correctly to successfully confirm the service's functionality.
Required authorization: ROLE_ADMIN
Request body
{
"applicationId": "bf8215e5-a39e-490a-a0e2-07df6a3d8c1f",
"code": "063780"
}
Parameters
Parameter | In | Type | Required | Description |
---|---|---|---|---|
body | body | ServiceConfirmationRequest | false | none |
Responses
Overview
Status | Meaning | Description | Schema |
---|---|---|---|
204 | No Content | No Content - The email service verification has been successfully confirmed. No additional content is returned. | None |
400 | Bad Request | BadRequest - The request was malformed, missing required fields, or the provided OTP was incorrect. | 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 provided OTP could not be found or has expired, indicating that the confirmation could not be processed. | None |
500 | Internal Server Error | InternalServerError - 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 POST /api/notifications/emails/confirm \
-H 'Content-Type: application/json' \ -H 'Authorization: API_KEY'
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Content-Type": []string{"application/json"},
"Authorization": []string{"API_KEY"},
}
var body []byte
// body = ...
req, err := http.NewRequest("POST", "/api/notifications/emails/confirm", 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",
"code": "063780"
}';
const headers = {
'Content-Type': 'application/json', 'Authorization': 'API_KEY'
}
fetch('/api/notifications/emails/confirm', {
method: 'POST',
body: input,
headers
})
.then(r => r.json())
.then((body) => {
console.log(body)
})
// This sample needs improvement.
URL obj = new URL("/api/notifications/emails/confirm");
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',
'Authorization': 'API_KEY'
}
r = requests.post(
'/api/notifications/emails/confirm',
params={},
headers = headers)
print r.json()
require 'rest-client'
require 'json'
headers = {
'Content-Type' => 'application/json',
'Authorization' => 'API_KEY'
}
result = RestClient.post '/api/notifications/emails/confirm',
params: {}, headers: headers
p JSON.parse(result)
Test Email Notification Functionality
POST /api/notifications/emails/test HTTP/1.1
Content-Type: application/json
Sends a test email notification to a specified address, allowing administrators to verify the functionality of the email notification system. This test is crucial for ensuring that emails are properly sent and received, and it provides an opportunity to review the actual notification results and layout as they would appear to the recipient.
This endpoint is instrumental in testing various aspects of the email notification service, including delivery success, content accuracy, and layout formatting. It ensures that notifications adhere to the intended design specifications and communication standards.
Use Cases: Functionality Testing: Confirm that the email service is operational and capable of sending messages as expected. Content Verification: Check that the email content, including text and dynamic fields, is accurate and meets the intended purpose. Layout and Formatting: Review the email presentation and formatting to ensure it is clear and readable across different email clients and devices.
Required authorization: ROLE_ADMIN
Request body
{
"applicationId": "bf8215e5-a39e-490a-a0e2-07df6a3d8c1f",
"channel": "EMAIL",
"htmlBody": "\"<html>...</html>\"",
"locale": "en-GB",
"period": "\"P1D\"",
"subject": "\"Video appointment reminder\"",
"textBody": "\"Dear {{firstName}},\\n\\nThis is a reminder of your video call scheduled for {{dd-MM-yyyy}} {{time24}} {{zone}}\"",
"timezone": "Europe/Berlin",
"toEmail": "email@yourdomain.com",
"type": "REMINDER"
}
Parameters
Parameter | In | Type | Required | Description |
---|---|---|---|---|
body | body | EmailNotificationRequest | false | none |
Responses
Overview
Status | Meaning | Description | Schema |
---|---|---|---|
204 | No Content | NoContent - The test email has been successfully sent. No content is returned. | 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 |
404 | Not Found | StatusNotFound. - Indicates a potential configuration or routing issue, suggesting the email service may not be correctly configured. | 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 POST /api/notifications/emails/test \
-H 'Content-Type: application/json' \ -H 'Authorization: API_KEY'
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Content-Type": []string{"application/json"},
"Authorization": []string{"API_KEY"},
}
var body []byte
// body = ...
req, err := http.NewRequest("POST", "/api/notifications/emails/test", 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",
"channel": "EMAIL",
"htmlBody": "\"<html>...</html>\"",
"locale": "en-GB",
"period": "\"P1D\"",
"subject": "\"Video appointment reminder\"",
"textBody": "\"Dear {{firstName}},\\n\\nThis is a reminder of your video call scheduled for {{dd-MM-yyyy}} {{time24}} {{zone}}\"",
"timezone": "Europe/Berlin",
"toEmail": "email@yourdomain.com",
"type": "REMINDER"
}';
const headers = {
'Content-Type': 'application/json', 'Authorization': 'API_KEY'
}
fetch('/api/notifications/emails/test', {
method: 'POST',
body: input,
headers
})
.then(r => r.json())
.then((body) => {
console.log(body)
})
// This sample needs improvement.
URL obj = new URL("/api/notifications/emails/test");
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',
'Authorization': 'API_KEY'
}
r = requests.post(
'/api/notifications/emails/test',
params={},
headers = headers)
print r.json()
require 'rest-client'
require 'json'
headers = {
'Content-Type' => 'application/json',
'Authorization' => 'API_KEY'
}
result = RestClient.post '/api/notifications/emails/test',
params: {}, headers: headers
p JSON.parse(result)
Initiate Email Service Verification (Genesys Cloud Specific)
POST /api/notifications/emails/verify HTTP/1.1
Content-Type: application/json
Accept: application/json
Initiates an email service verification process by sending an OTP (One Time Password) to the specified email address included in the request body. The received OTP must then be used to complete the verification process through the /notifications/emails/confirm
endpoint. This step is part of the process to ensure that the email service is properly configured and capable of sending email messages to users.
NOTE: The verification process requires specifying a valid email address in the request. An email containing the OTP verification code will be sent to this address. The recipient must use this OTP to confirm the service's functionality via /notifications/emails/confirm
, thereby completing the verification process.
Required authorization: ROLE_ADMIN
Request body
{
"applicationId": "bf8215e5-a39e-490a-a0e2-07df6a3d8c1f",
"domain": "appointments.auvious.com",
"fromName": "\"auvious No-Reply\"",
"toEmail": "email@yourdomain.com"
}
Parameters
Parameter | In | Type | Required | Description |
---|---|---|---|---|
body | body | EmailServiceRequest | false | none |
Responses
Overview
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | none | EmailServiceOTPVerify |
400 | Bad Request | BadRequest. The request was malformed, missing required fields, or contained an invalid email address. | 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. Indicates a configuration or routing error, suggesting the specified email address or email service may not be correctly set up. | 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",
"validFor": "PT1M0s indicates that the OTP is valid for 1 minute."
}
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/notifications/emails/verify \
-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/notifications/emails/verify", 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",
"domain": "appointments.auvious.com",
"fromName": "\"auvious No-Reply\"",
"toEmail": "email@yourdomain.com"
}';
const headers = {
'Content-Type': 'application/json', 'Accept': 'application/json', 'Authorization': 'API_KEY'
}
fetch('/api/notifications/emails/verify', {
method: 'POST',
body: input,
headers
})
.then(r => r.json())
.then((body) => {
console.log(body)
})
// This sample needs improvement.
URL obj = new URL("/api/notifications/emails/verify");
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/notifications/emails/verify',
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/notifications/emails/verify',
params: {}, headers: headers
p JSON.parse(result)
Get Notification Locales (Internal Use)
GET /api/notifications/locales HTTP/1.1
Accept: application/json
Get the supported locales that are used when sending notifications. This endpoint is intended for internal use and requires the 'ROLE_ADMIN' authorization.
Required authorization: ROLE_ADMIN
Responses
Overview
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | none | NotificationLocales |
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
{
"content": [
{
"description": "English (United States)",
"locale": "en_US"
},
{
"description": "Greek (Greece)",
"locale": "el_GR"
}
]
}
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/notifications/locales \
-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/notifications/locales", 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/notifications/locales', {
method: 'GET',
headers
})
.then(r => r.json())
.then((body) => {
console.log(body)
})
// This sample needs improvement.
URL obj = new URL("/api/notifications/locales");
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/notifications/locales',
params={},
headers = headers)
print r.json()
require 'rest-client'
require 'json'
headers = {
'Accept' => 'application/json',
'Authorization' => 'API_KEY'
}
result = RestClient.get '/api/notifications/locales',
params: {}, headers: headers
p JSON.parse(result)
Confirm SMS Service Verification (Genesys Cloud Specific)
POST /api/notifications/sms/confirm HTTP/1.1
Content-Type: application/json
Completes the SMS service verification process by submitting the OTP (One Time Password) received in the verification SMS. This step confirms that the SMS service is correctly configured and capable of delivering SMS messages to the intended recipients.
NOTE: This confirmation step is crucial for verifying the operational status of the SMS service. The OTP code, sent to the provided phone number during the verification process (initiateSMSServiceVerification
), must be entered correctly to successfully confirm the service's functionality.
Required authorization: ROLE_ADMIN
Request body
{
"applicationId": "bf8215e5-a39e-490a-a0e2-07df6a3d8c1f",
"code": "063780"
}
Parameters
Parameter | In | Type | Required | Description |
---|---|---|---|---|
body | body | ServiceConfirmationRequest | false | none |
Responses
Overview
Status | Meaning | Description | Schema |
---|---|---|---|
204 | No Content | NoContent. Successful confirmation of the SMS service. No additional content is returned. | None |
400 | Bad Request | BadRequest. The request was malformed, missing required fields, or the OTP was incorrect. | 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. Indicates the OTP or verification session could not be found, possibly due to an incorrect OTP or an expired verification session. | 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 POST /api/notifications/sms/confirm \
-H 'Content-Type: application/json' \ -H 'Authorization: API_KEY'
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Content-Type": []string{"application/json"},
"Authorization": []string{"API_KEY"},
}
var body []byte
// body = ...
req, err := http.NewRequest("POST", "/api/notifications/sms/confirm", 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",
"code": "063780"
}';
const headers = {
'Content-Type': 'application/json', 'Authorization': 'API_KEY'
}
fetch('/api/notifications/sms/confirm', {
method: 'POST',
body: input,
headers
})
.then(r => r.json())
.then((body) => {
console.log(body)
})
// This sample needs improvement.
URL obj = new URL("/api/notifications/sms/confirm");
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',
'Authorization': 'API_KEY'
}
r = requests.post(
'/api/notifications/sms/confirm',
params={},
headers = headers)
print r.json()
require 'rest-client'
require 'json'
headers = {
'Content-Type' => 'application/json',
'Authorization' => 'API_KEY'
}
result = RestClient.post '/api/notifications/sms/confirm',
params: {}, headers: headers
p JSON.parse(result)
Test SMS Notification Functionality
POST /api/notifications/sms/test HTTP/1.1
Content-Type: application/json
Sends a test SMS notification to a specified number, allowing administrators to verify the functionality of the SMS notification system. This test is useful not only for ensuring that messages are successfully sent and received but also for viewing the actual notification results and layout as they would appear to the end user.
This endpoint provides a means to test various aspects of the SMS notification service, including message delivery, content accuracy, and layout formatting, ensuring that notifications meet the intended design and communication standards.
Use Cases: Functionality Testing: Verify that the SMS service is operational and capable of sending messages. Content Verification: Ensure that the message content is correct, including text and any dynamic fields. Layout and Formatting: Check the presentation and formatting of the SMS message to ensure clarity and readability on various devices.
Required authorization: ROLE_ADMIN
Request body
{
"applicationId": "bf8215e5-a39e-490a-a0e2-07df6a3d8c1f",
"channel": "SMS",
"locale": "en-GB",
"period": "P1D (1 day before)",
"textBody": "\"Dear {{firstName}},\\n\\nThis is a reminder of your video call scheduled for {{dd-MM-yyyy}} {{time24}} {{zone}}\"",
"timezone": "Europe/Berlin",
"toNumber": "+3069312211xx",
"type": "REMINDER"
}
Parameters
Parameter | In | Type | Required | Description |
---|---|---|---|---|
body | body | SMSNotificationRequest | false | none |
Responses
Overview
Status | Meaning | Description | Schema |
---|---|---|---|
204 | No Content | NoContent - The test SMS has been successfully sent. No content is returned. | 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 |
404 | Not Found | StatusNotFound. - Indicates a configuration or routing error, suggesting the SMS service may not be correctly set up. | 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 POST /api/notifications/sms/test \
-H 'Content-Type: application/json' \ -H 'Authorization: API_KEY'
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Content-Type": []string{"application/json"},
"Authorization": []string{"API_KEY"},
}
var body []byte
// body = ...
req, err := http.NewRequest("POST", "/api/notifications/sms/test", 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",
"channel": "SMS",
"locale": "en-GB",
"period": "P1D (1 day before)",
"textBody": "\"Dear {{firstName}},\\n\\nThis is a reminder of your video call scheduled for {{dd-MM-yyyy}} {{time24}} {{zone}}\"",
"timezone": "Europe/Berlin",
"toNumber": "+3069312211xx",
"type": "REMINDER"
}';
const headers = {
'Content-Type': 'application/json', 'Authorization': 'API_KEY'
}
fetch('/api/notifications/sms/test', {
method: 'POST',
body: input,
headers
})
.then(r => r.json())
.then((body) => {
console.log(body)
})
// This sample needs improvement.
URL obj = new URL("/api/notifications/sms/test");
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',
'Authorization': 'API_KEY'
}
r = requests.post(
'/api/notifications/sms/test',
params={},
headers = headers)
print r.json()
require 'rest-client'
require 'json'
headers = {
'Content-Type' => 'application/json',
'Authorization' => 'API_KEY'
}
result = RestClient.post '/api/notifications/sms/test',
params: {}, headers: headers
p JSON.parse(result)
Initiate SMS Service Verification (Genesys Cloud Specific)
POST /api/notifications/sms/verify HTTP/1.1
Content-Type: application/json
Accept: application/json
Initiates an SMS service verification process by sending an OTP (One Time Password) to the specified phone number included in the request body. The received OTP must then be used to complete the verification process through the /notifications/sms/confirm
endpoint. This step is part of the process to ensure that the SMS service is properly configured and capable of sending SMS notifications to users.
NOTE: The verification process requires specifying a valid phone number in the request. An SMS containing the OTP verification code will be sent to this number. The recipient must use this OTP to confirm the service's functionality via /notifications/sms/confirm
, thereby completing the verification process.
Required authorization: ROLE_ADMIN
Request body
{
"applicationId": "bf8215e5-a39e-490a-a0e2-07df6a3d8c1f",
"fromNumber": "+3069132132xx",
"toNumber": "+3069312211xx"
}
Parameters
Parameter | In | Type | Required | Description |
---|---|---|---|---|
body | body | SMSServiceRequest | false | none |
Responses
Overview
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | none | SMSServiceOTPVerify |
400 | Bad Request | BadRequest. The request was malformed, missing required fields, or contained an invalid phone number. | 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. Indicates a configuration or routing error, suggesting the specified phone number or SMS service may not be correctly set up. | 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",
"validFor": "PT1M0s indicates that the OTP is valid for 1 minute."
}
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/notifications/sms/verify \
-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/notifications/sms/verify", 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",
"fromNumber": "+3069132132xx",
"toNumber": "+3069312211xx"
}';
const headers = {
'Content-Type': 'application/json', 'Accept': 'application/json', 'Authorization': 'API_KEY'
}
fetch('/api/notifications/sms/verify', {
method: 'POST',
body: input,
headers
})
.then(r => r.json())
.then((body) => {
console.log(body)
})
// This sample needs improvement.
URL obj = new URL("/api/notifications/sms/verify");
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/notifications/sms/verify',
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/notifications/sms/verify',
params: {}, headers: headers
p JSON.parse(result)
Get Notification Parameter Tags (Internal Use)
GET /api/notifications/tags HTTP/1.1
Accept: application/json
Get the supported parameter tags that can be used in notifications. This endpoint is intended for internal use and requires the 'ROLE_ADMIN' authorization.
Required authorization: ROLE_ADMIN
Responses
Overview
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | none | NotificationParameterTags |
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
{
"content": [
{
"example": "Monday 02-Jan-06",
"format": "EEEE dd-MMM-yy"
},
{
"example": "3:04 pm",
"format": "time12hr"
},
{
"example": "MST",
"format": "zone"
}
]
}
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/notifications/tags \
-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/notifications/tags", 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/notifications/tags', {
method: 'GET',
headers
})
.then(r => r.json())
.then((body) => {
console.log(body)
})
// This sample needs improvement.
URL obj = new URL("/api/notifications/tags");
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/notifications/tags',
params={},
headers = headers)
print r.json()
require 'rest-client'
require 'json'
headers = {
'Accept' => 'application/json',
'Authorization' => 'API_KEY'
}
result = RestClient.get '/api/notifications/tags',
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. |
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. |
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"
},
"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",
"state": "active",
"type": "CUSTOMER"
},
"participantIds": [
{
"id": "2460b086-8d27-4cd3-a7ef-cdc8b4c17f0c",
"type": "CUSTOMER"
},
{
"id": "36c1r718-9ab5-48c9-aeab-fas5f37b0ec4",
"type": "AGENT"
}
],
"start": "2022-01-31T19:00:00.0Z",
"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 | participant | false | none | none |
participantIds | [participant] | false | none | ParticipantIdentifiers 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. |
timezone | string | false | none | TimeZone specifies the local time zone of the appointment. |
title | string | false | none | Appointment title |
AppointmentActivationResponse
{
"expires": "2022-01-31T19:00:00.0Z",
"type": "MULTI_USE_TICKET",
"url": "https://video.auvious.com/q/pij-gws"
}
Properties
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
expires | string(date-time) | false | none | ExpireTime is the UTC expiration date and time for the appointment room access. It becomes relevant only if the appointment has not yet expired. The format is in ISO 8601 (YYYY-MM-DDTHH:MM:SSZ). |
type | string | false | none | Type specifies the permission level associated with this appointment room, determining access control. |
url | string | false | none | URL provides the unique web address for accessing the video appointment, offering a direct link to the meeting room. |
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 |
AppointmentRoomDetails
{
"expires": "2022-01-31T19:00:00.0Z",
"type": "MULTI_USE_TICKET",
"url": "https://video.auvious.com/q/pij-gws"
}
Properties
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
expires | string(date-time) | false | none | ExpireTime is the UTC expiration date and time for the appointment room access. It becomes relevant only if the appointment has not yet expired. The format is in ISO 8601 (YYYY-MM-DDTHH:MM:SSZ). |
type | string | false | none | Type specifies the permission level associated with this appointment room, determining access control. |
url | string | false | none | URL provides the unique web address for accessing the video appointment, offering a direct link to the meeting room. |
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 | AncillaryData 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. |
EmailNotificationRequest
{
"applicationId": "bf8215e5-a39e-490a-a0e2-07df6a3d8c1f",
"channel": "EMAIL",
"htmlBody": "\"<html>...</html>\"",
"locale": "en-GB",
"period": "\"P1D\"",
"subject": "\"Video appointment reminder\"",
"textBody": "\"Dear {{firstName}},\\n\\nThis is a reminder of your video call scheduled for {{dd-MM-yyyy}} {{time24}} {{zone}}\"",
"timezone": "Europe/Berlin",
"toEmail": "email@yourdomain.com",
"type": "REMINDER"
}
Properties
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
applicationId | string | true | none | Unique application identifier |
channel | string | true | none | Channel for the notification. Possible values: SMS, EMAIL, WEBHOOKS. Required. |
htmlBody | string | false | none | HtmlBody of the email notification. |
locale | string | false | none | Locale for the email's language and format. Defaults to en-US if not specified. |
period | string(duration) | false | none | Period before the appointment start time when the notification should be sent. Only required for REMINDER & ROOM types. |
subject | string | false | none | Subject of the email notification. |
textBody | string | false | none | TextBody of the SMS notification in plain text format. |
timezone | string | false | none | TimeZone of the appointment. Defaults to UTC if not specified. |
toEmail | string | true | none | ToEmail is the recipient's email address. |
type | string | true | none | Type of notification. Possible values: CREATE, UPDATE, REMINDER, ROOM. Required. |
Enumerated Values
Property | Value |
---|---|
channel | SMS |
channel | |
channel | WEBHOOKS |
type | CREATE |
type | UPDATE |
type | REMINDER |
type | ROOM |
EmailServiceOTPVerify
{
"applicationId": "bf8215e5-a39e-490a-a0e2-07df6a3d8c1f",
"validFor": "PT1M0s indicates that the OTP is valid for 1 minute."
}
Properties
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
applicationId | string | true | none | Unique application identifier |
validFor | string | false | none | ValidFor specifies the duration that the OTP (One-Time Password) verification remains active. It is represented in ISO 8601 duration format. |
EmailServiceRequest
{
"applicationId": "bf8215e5-a39e-490a-a0e2-07df6a3d8c1f",
"domain": "appointments.auvious.com",
"fromName": "\"auvious No-Reply\"",
"toEmail": "email@yourdomain.com"
}
Properties
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
applicationId | string | true | none | Unique application identifier |
domain | string | true | none | Name of the outbound domain used for sending emails. It must be a fully qualified domain name (FQDN). |
fromName | string | false | none | FromName is the display name indicating the sender of the email. |
toEmail | string | true | none | ToEmail is the email address to which the verification email will be sent. It must be a valid email format. |
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"
},
"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",
"state": "active",
"type": "CUSTOMER"
},
"participantIds": [
{
"id": "2460b086-8d27-4cd3-a7ef-cdc8b4c17f0c",
"type": "CUSTOMER"
},
{
"id": "36c1r718-9ab5-48c9-aeab-fas5f37b0ec4",
"type": "AGENT"
}
],
"start": "2022-01-31T19:00:00.0Z",
"timezone": "Europe/Berlin",
"title": "Product installation review"
}
],
"pageCount": 0,
"pageNumber": 1,
"pageSize": 25,
"sortField": "string",
"sortOrder": "asc",
"total": 0
}
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 |
pageSize | integer(int64) | false | none | Page size |
sortField | string | false | none | Field to use for sort |
sortOrder | string | false | none | asc or desc |
total | integer(int64) | false | none | total number of entities in the result set |
Enumerated Values
Property | Value |
---|---|
sortOrder | asc |
sortOrder | desc |
GetAppointmentResponse
{
"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"
},
"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",
"state": "active",
"type": "CUSTOMER"
},
"participantIds": [
{
"id": "2460b086-8d27-4cd3-a7ef-cdc8b4c17f0c",
"type": "CUSTOMER"
},
{
"id": "36c1r718-9ab5-48c9-aeab-fas5f37b0ec4",
"type": "AGENT"
}
],
"roomAccess": {
"expires": "2022-01-31T19:00:00.0Z",
"type": "MULTI_USE_TICKET",
"url": "https://video.auvious.com/q/pij-gws"
},
"start": "2022-01-31T19:00:00.0Z",
"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 | participant | false | none | none |
participantIds | [participant] | false | none | ParticipantIdentifiers lists all participants of this appointment. |
roomAccess | AppointmentRoomDetails | false | none | none |
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. |
title | string | false | none | Appointment title |
GetParticipantDetailsResponse
{
"contact": {
"primaryEmail": "user@provider.net",
"primaryPhone": "2102234988"
},
"id": "c59a1ee2-e71d-4370-9ac8-26de220104db",
"metadata": {
"refNo": "CS-9838"
},
"name": {
"firstName": "Bobby",
"lastName": "Ewing"
},
"type": "CUSTOMER",
"username": "ewingb@myorg.com"
}
Properties
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
contact | Contact | false | none | none |
id | string | false | none | Id is the unique identifier of the participant. |
metadata | object | false | none | AncillaryData holds unstructured additional information that might be useful. |
» additionalProperties | any | false | none | none |
name | Name | 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. |
InteractionData
{
"customFields": {
"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 |
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 |
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. |
NotificationLocale
{
"description": "English (United States)",
"locale": "en_US"
}
Properties
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
description | string | false | none | Description provides details about the locale, including language and country. |
locale | string | false | none | Locale identifies a supported locale, using ICU locale identifiers. For more details, refer to http://userguide.icu-project.org/locale. |
NotificationLocales
{
"content": [
{
"description": "English (United States)",
"locale": "en_US"
},
{
"description": "Greek (Greece)",
"locale": "el_GR"
}
]
}
Properties
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
content | [NotificationLocale] | false | none | Locales lists the supported notification locales, detailing both locale keys and their descriptions. |
NotificationParameterTag
{
"example": "Monday 02-Jan-06",
"format": "EEEE dd-MMM-yy"
}
Properties
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
example | string | false | none | Example provides a sample of how the notification parameter appears when the specified format is applied. |
format | string | false | none | Format specifies the format value for a supported notification parameter, primarily used for date formatting. |
NotificationParameterTags
{
"content": [
{
"example": "Monday 02-Jan-06",
"format": "EEEE dd-MMM-yy"
},
{
"example": "3:04 pm",
"format": "time12hr"
},
{
"example": "MST",
"format": "zone"
}
]
}
Properties
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
content | [NotificationParameterTag] | false | none | Formats lists the supported notification parameter tags, providing both the parameter format keys and example values. |
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. |
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. |
SMSNotificationRequest
{
"applicationId": "bf8215e5-a39e-490a-a0e2-07df6a3d8c1f",
"channel": "SMS",
"locale": "en-GB",
"period": "P1D (1 day before)",
"textBody": "\"Dear {{firstName}},\\n\\nThis is a reminder of your video call scheduled for {{dd-MM-yyyy}} {{time24}} {{zone}}\"",
"timezone": "Europe/Berlin",
"toNumber": "+3069312211xx",
"type": "REMINDER"
}
Properties
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
applicationId | string | true | none | Unique application identifier |
channel | string | true | none | Channel specifies the notification delivery method. |
locale | string | false | none | Locale for the notification's language and format. Defaults to en-US if not specified. |
period | string(duration) | false | none | Period before the appointment start time for sending the notification. Required for REMINDER & ROOM types. |
textBody | string | true | none | TextBody is the notification message in plain text. |
timezone | string | false | none | TimeZone of the appointment. Defaults to UTC if not specified. |
toNumber | string | true | none | ToNumber is the recipient's phone number for the SMS message. It must follow the E.164 numbering format. |
type | string | true | none | Type of notification being sent. Allowed values: CREATE, UPDATE, REMINDER, ROOM. |
Enumerated Values
Property | Value |
---|---|
channel | SMS |
channel | |
channel | WEBHOOKS |
SMSServiceOTPVerify
{
"applicationId": "bf8215e5-a39e-490a-a0e2-07df6a3d8c1f",
"validFor": "PT1M0s indicates that the OTP is valid for 1 minute."
}
Properties
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
applicationId | string | true | none | Unique application identifier |
validFor | string | false | none | ValidFor specifies the duration that the OTP (One-Time Password) verification remains active. It is represented in ISO 8601 duration format. |
SMSServiceRequest
{
"applicationId": "bf8215e5-a39e-490a-a0e2-07df6a3d8c1f",
"fromNumber": "+3069132132xx",
"toNumber": "+3069312211xx"
}
Properties
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
applicationId | string | true | none | Unique application identifier |
fromNumber | string | true | none | FromNumber is the SMS number from which the message will be sent. It must follow the E.164 numbering format. |
toNumber | string | true | none | ToNumber is the recipient's phone number for the SMS message. It must also follow the E.164 numbering format. |
ScheduleAppointmentRequest
{
"applicationId": "bf8215e5-a39e-490a-a0e2-07df6a3d8c1f",
"customer": {
"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": "value1"
},
"notes": "\"CRM ref: 3nv-1gt-4rt\"",
"notificationHeaders": "{\"x-channel\": widget\"}",
"start": "\"2022-01-31T19:00:00.0Z\"",
"timezone": "\"Europe/Berlin\"",
"title": "\"Product installation review\""
}
Properties
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
applicationId | string | true | none | Unique application identifier |
customer | CustomerDetails | false | none | none |
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 | AncillaryData contains any additional information useful for the appointment. |
» additionalProperties | any | false | none | none |
notes | string | false | none | Notes regarding the appointment. |
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. |
timezone | string | true | none | TimeZone for the appointment. |
title | string | false | none | Title of the appointment. |
ServiceConfirmationRequest
{
"applicationId": "bf8215e5-a39e-490a-a0e2-07df6a3d8c1f",
"code": "063780"
}
Properties
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
applicationId | string | true | none | Unique application identifier |
code | string | true | none | Code is the OTP sent to the user's SMS number for verification. It must be numeric. |
UpdateAppointmentRequest
{
"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 |
---|---|---|---|---|
id | string | true | none | Id is the unique identifier of the appointment. |
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 |
participant
{
"id": "c59a1ee2-e71d-4370-9ac8-26de220104db",
"state": "active",
"type": "CUSTOMER"
}
Properties
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
id | string | false | none | Id is the unique identifier of the participant. |
state | string | false | none | State indicates the current state of the participant. |
type | string | false | none | Type specifies the participant type, which can be either AGENT or CUSTOMER. |