GET https://examplebaseURL.com/v1/api/apps/{appID}/data/enquiry-detail
| Parameter | Type | Description |
|---|---|---|
| id | String | The unique ID of the enquiry. |
| uniqueKey | String | You can skip this parameter (it is for internal use) |
| createdAt | String | The date and time of the enquiry record creation. The value must be in RFC3339 format, e.g. 2022-11-07T00:00:00.000Z. |
| svcID | String | The service account ID of the enquiry. |
| inquiry | String | The enquiry ID. |
| tag | String | The ID of the tag. |
| visitor | String | The ID of the visitor. |
| roomID | String | The room ID of the enquiry. |
| initChannel | String | The channel type of the enquiry. It can be "IM" (Instant Message) or "CALL". |
| omniType | String | The Omni-Channel Type of the enquiry. It must be "CINNOX". |
| ip | String | The IP address of the visitor. |
| language | String | The language of the enquiry. The result shown is the list in the following format: (ISO 639-1 Language Codes):(Language) Example: en (Language code of English in ISO 639-1): English (Language) |
| location | String | The location of the visitor. The result shown is the list in the following format: (Country represented by Two-letter country code based on ISO 3166-2) Example: VE. Country=Venezuela. |
| locationDetail.regionCode | String | The region code of the location of the visitor. |
| locationDetail.subdivision | String | The subdivision of the country. |
| locationDetail.city | String | The city where the enquiry comes from. |
| locationDetailprovince | String | The province where the enquiry comes from. |
| platform | String | The platform that visitors use for enquiry |
| status | String | The status of the enquiry. It can be "ongoing", "followed-up", "missed", or "closed". |
| displayCaseNumber | String | The display enquiry ID in the CINNOX Dashboard. |
| channel | String | The type of channel of the enquiry. It can be "Weblink", "VirtualNumber", "Email", "ThirdParty", "FACEBOOK", "WHATSAPP", "WECHAT", "LINE" or "WOZTELL". |
| destinationID | String | The IP of the destination. |
| destinationName | String | The name of the destination (Service Group). |
| destinationType | String | The type of the destinations. It can be "PHONE" (PSTN), "STAFF" (Staff Directory), "TRUNK" (SIP Truck) or "CHATBOT" (Chatbot). |
| destinationEndPoint | String | The destination endpoint is assigned to handle the enquiry. It can be "STAFF"(Staff), "CHATBOT"(Chatbot) or "IVR" (IVR). |
| handledType | String | It can be a Phone Number, SIP Trunk or Staff |
| handledTarget | String | The enquiry owner is represented as a Staff's EID or the phone number. |
| handledPartyName | String | Staff (agent) name |
| huntedStaffTargetHistory | String | List of Staff who could pick up this enquiry |
| type | String | Channel sub-type |
| id | String | Channel ID |
| maaiiDisplayName | String | Channel display name |
| name | String | Third-party display name |
| inquiryType | String | The enquiry type. It can be |
| updatedAt | String | Enquiry updated time |
| closedAt | String | Enquiry close time |
| inquiryGroup | String | Collapsed enquiries |
| transferredParty | Array(object) | Destination info that enquiry transferred to |
| pickedUpAt | String | Enquiry picked-up time |
| missedAt | String | Enquiry missed time |
| reopenedAt | String | Enquiry reopened time |
| handledPartyDepartmentID | String | Department id of the staff |
| attachment | Boolean | True = There is an attachment in the enquiry chat room. False = There is no attachment in the enquiry chat room. The attachment refers to the Chat History for the conversation in the enquiry chat room. |
| staffFirstName | String | The first name of the staff handling the enquiry. |
| staffLastName | String | The last name of the staff handling the enquiry. |
| visitorFirstName | String | The first name of the enquiry's visitor. |
| visitorLastName | String | The last name of the enquiry's visitor. |
| inquiryDeepLink | String | The link redirects the staff to the enquiry's chat room. |
| duration | Number | The duration in milliseconds for an enquiry which is being handled. |
| closeDuration | Number | The duration is in milliseconds for a closed enquiry. |
| labelIDs | Array of strings | The ID of the label used for the enquiry. The value = null when no label was applied to the enquiry. The value = Label ID when a label is applied to the enquiry. |
š Notice
- For the labelIds
- It is suggested to get the supported Label List before entering the value of the labelIds to ensure the value of the labelIds you enter is supported.
- Please refer to the Get Label List section in our user manual for details about using Open API to get the updated Label List.
- For the channel
- You are suggested to get the supported Channel Type List before entering the value of the channel to ensure the value of the channel you enter is supported.
- Please refer to the Get Channel Type List section in our user manual for the details about using Open API to get the updated Channel Type List.
appID string required
App ID
enquiryID string
The details of the enquiry you are required to get represented as an Enquiry ID. The Enquiry IDs are concatenated with commas like {enquiryID1},{enquiryID2},{enquiryID3}. The maximum number of the input enquiryID is 20.
labelIds string
The label represented as a Label ID applied to the enquiry. The Label IDs are concatenated with commas like {labelId1},{labelId2},{labelId3}. Please refer to the Notice for details.
channel string
The channel of the enquiry. The channel can be the Directory, weblink, VirtualNumber, Email, ThirdParty, FACEBOOK, WHATSAPP, WECHAT, LINE or WOZTELL. Please refer to the Notice for details.
startAt string
The start date and time of the enquiry. The value must be in RFC3339 format, e.g. 2022-11-07T00:00:00.000Z.
endAt string
The end date and time of the enquiry. The value must be in RFC3339 format, e.g. 2022-11-07T00:00:00.000Z.
offset int32 Defaults to 0
Skip the number of the shown data in the response. If the offset value is 10, the first 10 data will be skipped. The default value is 0.
limit int32
The number of data that will be returned, e.g. if the set limit is 10, 10 records returned in the response. The maximum value is 500.
Content-Type string
application/jsonAuthorization string
Bearer AppToken
š¢ 200
RESPONSE BODY
json
š“ 400
RESPONSE BODY
object
code integer Defaults to 0
message string
LANGUAGE: Shell
curl --request GET \
--url 'https://examplebaseurl.com/v1/api/apps/appID/data/enquiry-detail?offset=0' \
--header 'Authorization: Bearer AppToken' \
--header 'Content-Type: application/json' \
--header 'accept: application/json'
$ brew install httpie
http GET 'https://examplebaseurl.com/v1/api/apps/appID/data/enquiry-detail?offset=0' \
Authorization:'Bearer AppToken' \
Content-Type:application/json \
accept:application/json
LANGUAGE: Node
$ npm install axios --save
import axios from 'axios';
const options = {
method: 'GET',
url: 'https://examplebaseurl.com/v1/api/apps/appID/data/enquiry-detail?offset=0',
headers: {
accept: 'application/json',
'Content-Type': 'application/json',
Authorization: 'Bearer AppToken'
}
};
axios
.request(options)
.then(res => console.log(res.data))
.catch(err => console.error(err));
const url = 'https://examplebaseurl.com/v1/api/apps/appID/data/enquiry-detail?offset=0';
const options = {
method: 'GET',
headers: {
accept: 'application/json',
'Content-Type': 'application/json',
Authorization: 'Bearer AppToken'
}
};
fetch(url, options)
.then(res => res.json())
.then(json => console.log(json))
.catch(err => console.error(err));
const http = require('https');
const options = {
method: 'GET',
hostname: 'examplebaseurl.com',
port: null,
path: '/v1/api/apps/appID/data/enquiry-detail?offset=0',
headers: {
accept: 'application/json',
'Content-Type': 'application/json',
Authorization: 'Bearer AppToken'
}
};
const req = http.request(options, function (res) {
const chunks = [];
res.on('data', function (chunk) {
chunks.push(chunk);
});
res.on('end', function () {
const body = Buffer.concat(chunks);
console.log(body.toString());
});
});
req.end();
$ npx api install "@cinnox2021/v7.3#45i1wk2km9l1e4hf"
import cinnox2021 from '@api/cinnox2021';
cinnox2021.getEnquiryDetail({offset: '0', appID: 'appID', Authorization: 'Bearer AppToken'})
.then(({ data }) => console.log(data))
.catch(err => console.error(err));
LANGUAGE: Ruby
require 'uri'
require 'net/http'
url = URI("https://examplebaseurl.com/v1/api/apps/appID/data/enquiry-detail?offset=0")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["accept"] = 'application/json'
request["Content-Type"] = 'application/json'
request["Authorization"] = 'Bearer AppToken'
response = http.request(request)
puts response.read_body
LANGUAGE: PHP
<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://examplebaseurl.com/v1/api/apps/appID/data/enquiry-detail?offset=0",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer AppToken",
"Content-Type: application/json",
"accept: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}
$ composer require guzzlehttp/guzzle
<?php
require_once('vendor/autoload.php');
$client = new \GuzzleHttp\Client();
$response = $client->request('GET', 'https://examplebaseurl.com/v1/api/apps/appID/data/enquiry-detail?offset=0', [
'headers' => [
'Authorization' => 'Bearer AppToken',
'Content-Type' => 'application/json',
'accept' => 'application/json',
],
]);
echo $response->getBody();
LANGUAGE: Python
import requests
url = "https://examplebaseurl.com/v1/api/apps/appID/data/enquiry-detail?offset=0"
headers = {
"accept": "application/json",
"Content-Type": "application/json",
"Authorization": "Bearer AppToken"
}
response = requests.get(url, headers=headers)
print(response.text)
LANGUAGE: C
CURL *hnd = curl_easy_init();
curl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, "GET");
curl_easy_setopt(hnd, CURLOPT_WRITEDATA, stdout);
curl_easy_setopt(hnd, CURLOPT_URL, "https://examplebaseurl.com/v1/api/apps/appID/data/enquiry-detail?offset=0");
struct curl_slist *headers = NULL;
headers = curl_slist_append(headers, "accept: application/json");
headers = curl_slist_append(headers, "Content-Type: application/json");
headers = curl_slist_append(headers, "Authorization: Bearer AppToken");
curl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);
CURLcode ret = curl_easy_perform(hnd);
LANGUAGE: C#
using System.Net.Http.Headers;
var client = new HttpClient();
var request = new HttpRequestMessage
{
Method = HttpMethod.Get,
RequestUri = new Uri("https://examplebaseurl.com/v1/api/apps/appID/data/enquiry-detail?offset=0"),
Headers =
{
{ "accept", "application/json" },
{ "Authorization", "Bearer AppToken" },
},
};
using (var response = await client.SendAsync(request))
{
response.EnsureSuccessStatusCode();
var body = await response.Content.ReadAsStringAsync();
Console.WriteLine(body);
}
$ dotnet add package RestSharp
using RestSharp;
var options = new RestClientOptions("https://examplebaseurl.com/v1/api/apps/appID/data/enquiry-detail?offset=0");
var client = new RestClient(options);
var request = new RestRequest("");
request.AddHeader("accept", "application/json");
request.AddHeader("Content-Type", "application/json");
request.AddHeader("Authorization", "Bearer AppToken");
var response = await client.GetAsync(request);
Console.WriteLine("{0}", response.Content);
LANGUAGE: C++
CURL *hnd = curl_easy_init();
curl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, "GET");
curl_easy_setopt(hnd, CURLOPT_WRITEDATA, stdout);
curl_easy_setopt(hnd, CURLOPT_URL, "https://examplebaseurl.com/v1/api/apps/appID/data/enquiry-detail?offset=0");
struct curl_slist *headers = NULL;
headers = curl_slist_append(headers, "accept: application/json");
headers = curl_slist_append(headers, "Content-Type: application/json");
headers = curl_slist_append(headers, "Authorization: Bearer AppToken");
curl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);
CURLcode ret = curl_easy_perform(hnd);
LANGUAGE: Clojure
(require '[clj-http.client :as client])
(client/get "https://examplebaseurl.com/v1/api/apps/appID/data/enquiry-detail" {:headers {:Content-Type "application/json"
:Authorization "Bearer AppToken"}
:query-params {:offset "0"}
:accept :json})
LANGUAGE: Go
package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://examplebaseurl.com/v1/api/apps/appID/data/enquiry-detail?offset=0"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("accept", "application/json")
req.Header.Add("Content-Type", "application/json")
req.Header.Add("Authorization", "Bearer AppToken")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}
LANGUAGE: HTTP
GET /v1/api/apps/appID/data/enquiry-detail?offset=0 HTTP/1.1
Accept: application/json
Content-Type: application/json
Authorization: Bearer AppToken
Host: examplebaseurl.com
LANGUAGE: Java
AsyncHttpClient client = new DefaultAsyncHttpClient();
client.prepare("GET", "https://examplebaseurl.com/v1/api/apps/appID/data/enquiry-detail?offset=0")
.setHeader("accept", "application/json")
.setHeader("Content-Type", "application/json")
.setHeader("Authorization", "Bearer AppToken")
.execute()
.toCompletableFuture()
.thenAccept(System.out::println)
.join();
client.close();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://examplebaseurl.com/v1/api/apps/appID/data/enquiry-detail?offset=0"))
.header("accept", "application/json")
.header("Content-Type", "application/json")
.header("Authorization", "Bearer AppToken")
.method("GET", HttpRequest.BodyPublishers.noBody())
.build();
HttpResponse<String> response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("https://examplebaseurl.com/v1/api/apps/appID/data/enquiry-detail?offset=0")
.get()
.addHeader("accept", "application/json")
.addHeader("Content-Type", "application/json")
.addHeader("Authorization", "Bearer AppToken")
.build();
Response response = client.newCall(request).execute();
HttpResponse<String> response = Unirest.get("https://examplebaseurl.com/v1/api/apps/appID/data/enquiry-detail?offset=0")
.header("accept", "application/json")
.header("Content-Type", "application/json")
.header("Authorization", "Bearer AppToken")
.asString();
LANGUAGE: JavaScript
import axios from 'axios';
const options = {
method: 'GET',
url: 'https://examplebaseurl.com/v1/api/apps/appID/data/enquiry-detail',
params: {offset: '0'},
headers: {
accept: 'application/json',
'Content-Type': 'application/json',
Authorization: 'Bearer AppToken'
}
};
axios
.request(options)
.then(res => console.log(res.data))
.catch(err => console.error(err));
const options = {
method: 'GET',
headers: {
accept: 'application/json',
'Content-Type': 'application/json',
Authorization: 'Bearer AppToken'
}
};
fetch('https://examplebaseurl.com/v1/api/apps/appID/data/enquiry-detail?offset=0', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));
const settings = {
async: true,
crossDomain: true,
url: 'https://examplebaseurl.com/v1/api/apps/appID/data/enquiry-detail?offset=0',
method: 'GET',
headers: {
accept: 'application/json',
'Content-Type': 'application/json',
Authorization: 'Bearer AppToken'
}
};
$.ajax(settings).done(res => {
console.log(res);
});
const data = null;
const xhr = new XMLHttpRequest();
xhr.withCredentials = true;
xhr.addEventListener('readystatechange', function () {
if (this.readyState === this.DONE) {
console.log(this.responseText);
}
});
xhr.open('GET', 'https://examplebaseurl.com/v1/api/apps/appID/data/enquiry-detail?offset=0');
xhr.setRequestHeader('accept', 'application/json');
xhr.setRequestHeader('Content-Type', 'application/json');
xhr.setRequestHeader('Authorization', 'Bearer AppToken');
xhr.send(data);
LANGUAGE: JSON
No JSON body
LANGUAGE: Kotlin
val client = OkHttpClient()
val request = Request.Builder()
.url("https://examplebaseurl.com/v1/api/apps/appID/data/enquiry-detail?offset=0")
.get()
.addHeader("accept", "application/json")
.addHeader("Content-Type", "application/json")
.addHeader("Authorization", "Bearer AppToken")
.build()
val response = client.newCall(request).execute()
LANGUAGE: Objectve-C
#import <Foundation/Foundation.h>
NSDictionary *headers = @{ @"accept": @"application/json",
@"Content-Type": @"application/json",
@"Authorization": @"Bearer AppToken" };
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"https://examplebaseurl.com/v1/api/apps/appID/data/enquiry-detail?offset=0"]
cachePolicy:NSURLRequestUseProtocolCachePolicy
timeoutInterval:10.0];
[request setHTTPMethod:@"GET"];
[request setAllHTTPHeaderFields:headers];
NSURLSession *session = [NSURLSession sharedSession];
NSURLSessionDataTask *dataTask = [session dataTaskWithRequest:request
completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
if (error) {
NSLog(@"%@", error);
} else {
NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *) response;
NSLog(@"%@", httpResponse);
}
}];
[dataTask resume];
LANGUAGE: OCaml
open Cohttp_lwt_unix
open Cohttp
open Lwt
let uri = Uri.of_string "https://examplebaseurl.com/v1/api/apps/appID/data/enquiry-detail?offset=0" in
let headers = Header.add_list (Header.init ()) [
("accept", "application/json");
("Content-Type", "application/json");
("Authorization", "Bearer AppToken");
] in
Client.call ~headers `GET uri
>>= fun (res, body_stream) ->
(* Do stuff with the result *)
LANGUAGE: PowerShell
$headers=@{}
$headers.Add("accept", "application/json")
$headers.Add("Content-Type", "application/json")
$headers.Add("Authorization", "Bearer AppToken")
$response = Invoke-RestMethod -Uri 'https://examplebaseurl.com/v1/api/apps/appID/data/enquiry-detail?offset=0' -Method GET -Headers $headers
$headers=@{}
$headers.Add("accept", "application/json")
$headers.Add("Content-Type", "application/json")
$headers.Add("Authorization", "Bearer AppToken")
$response = Invoke-WebRequest -Uri 'https://examplebaseurl.com/v1/api/apps/appID/data/enquiry-detail?offset=0' -Method GET -Headers $headers
LANGUAGE: R
library(httr)
url <- "https://examplebaseurl.com/v1/api/apps/appID/data/enquiry-detail"
queryString <- list(offset = "0")
response <- VERB("GET", url, query = queryString, add_headers('Authorization' = 'Bearer AppToken'), content_type("application/octet-stream"), accept("application/json"))
content(response, "text")
LANGUAGE: Swift
import Foundation
let url = URL(string: "https://examplebaseurl.com/v1/api/apps/appID/data/enquiry-detail")!
var components = URLComponents(url: url, resolvingAgainstBaseURL: true)!
let queryItems: [URLQueryItem] = [
URLQueryItem(name: "offset", value: "0"),
]
components.queryItems = components.queryItems.map { $0 + queryItems } ?? queryItems
var request = URLRequest(url: components.url!)
request.httpMethod = "GET"
request.timeoutInterval = 10
request.allHTTPHeaderFields = [
"accept": "application/json",
"Content-Type": "application/json",
"Authorization": "Bearer AppToken"
]
let (data, _) = try await URLSession.shared.data(for: request)
print(String(decoding: data, as: UTF8.self))
RESPONSE: š¢ 200 - Result (Example)
{
"code": number,
"result": [
{
"_id":"string",
"uniqueKey": "string",
"createdAt": "string",
"svcID": "string",
"inquiry": "string",
"tag": "string",
"visitor": "string",
"roomID": "string",
"initChannel": "string",
"omniType": "string",
"ip": "string",
"language": "string",
"location": "string",
"platform": "string",
"status": "string",
"displayCaseNumber": "string",
"channel `Directory`": "string",
"destinationID": "string",
"destinationName": "string",
"destinationType": "string",
"destinationEndPoint": "string",
"handledType": "string",
"handledTarget": "string",
"handledPartyName": "string",
"huntedStaffTargetsHistory": [],
"channelDetail": {
"type": "string",
"id": "string",
"maaiiDisplayName": "string",
"name": "string"
},
"inquiryType": "string",
"updatedAt": "string",
"closedAt": "string",
"inquiryGroup": [
{}
],
"transferredParty": [],
"pickedUpAt": "string",
"missedAt": "string",
"reopenedAt": "string",
"handledPartyDepartmentID": "string",
"attachment": boolean,
"staffFirstName": "string",
"staffLastName": "string",
"visitorFirstName": "string",
"visitorLastName": "string",
"inquiryDeepLink": "string",
"duration": number,
"labelIDs": []
}
],
"cid":"string"
}
RESPONSE: š“ 400-Result (Example)
{
"code": 0,
"message": "The error message from the server. Please refer to the error table."
}