V 2.0

Group

Description

The Group API allows you to manage agent groups within the system. You can create, update, delete, and list groups. Groups are used to organize agents and manage their permissions and settings collectively.

Base URL

The base URL for all API endpoints is: deepcall/api/v2/Group

Authentication

All endpoints require authentication. Use one of the following methods:

All endpoints may return the following error response:

Field Type Description
status string "error"
message string Description of the error
code number Error code

Error Codes

Code Description
1501 The 'Name' field was not provided in the request
1502 GroupId is required
1503 Group not found or not authorized

Notes

Update

{{brand}}/api/v2/Group/update

Endpoint

Description

This endpoint allows you to modify existing group details in the system. You can update a group's name and status, which is useful for rebranding teams, restructuring organizations, or temporarily deactivating groups. This endpoint requires proper authentication and the group ID for the group being updated.

Use Cases

Request Details

Parameter Type Required Description
ssid string Yes* Session ID for authentication (*if userId and token not provided)
userId string Yes* User ID for authentication (*if ssid not provided)
token string Yes* Token for authentication (*if ssid not provided)
groupId string Yes ID of the group to be updated
name string Yes New name for the group
status number No Status of the group (default: 1)

Response Details

Success Response Structure

Field Type Description
status string Response status ("success")
message string A message indicating the result of the operation
code number HTTP status code (200 for success)

Notes

Update

var axios = require('axios');
var data = '{"userId": "{{userid}}","token":"{{token}}","name":"Mahipal singh","groupId":"28"}';

var config = {
 method: 'post',
 url: '{{brand}}/api/v2/Group/update',
 headers: { 
'Content-Length': ''
 },
 data : data
};

axios(config)
.then(function (response) {
 console.log(JSON.stringify(response.data));
})
.catch(function (error) {
 console.log(error);
});
setUrl('{{brand}}/api/v2/Group/update');
$request->setMethod(HTTP_Request2::METHOD_POST);
$request->setConfig(array(
 'follow_redirects' => TRUE
));
$request->setHeader(array(
 'Content-Length' => ''
));
$request->setBody('{"userId": "{{userid}}","token":"{{token}}","name":"Mahipal singh","groupId":"28"}');
try {
 $response = $request->send();
 if ($response->getStatus() == 200) {
echo $response->getBody();
 }
 else {
echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
$response->getReasonPhrase();
 }
}
catch(HTTP_Request2_Exception $e) {
 echo 'Error: ' . $e->getMessage();
}
import http.client

conn = http.client.HTTPSConnection("{{brand}}")
payload = "{\"userId\": \"{{userid}}\",\"token\":\"{{token}}\",\"name\":\"Mahipal singh\",\"groupId\":\"28\"}"
headers = {
 'Content-Length': ''
}
conn.request("POST", "/api/v2/Group/update", payload, headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))
var client = new RestClient("{{brand}}/api/v2/Group/update");
client.Timeout = -1;
var request = new RestRequest(Method.POST);
var body = @"{" + "\n" +
@"    ""userId"": ""{{userid}}""," + "\n" +
@"    ""token"":""{{token}}""," + "\n" +
@"    ""name"":""Mahipal singh""," + "\n" +
@"    ""groupId"":""28""" + "\n" +
@"  " + "\n" +
@"}";
request.AddParameter("text/plain", body,  ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
curl --location -g --request POST '{{brand}}/api/v2/Group/update' \
--data-raw '{
    "userId": "{{userid}}",
    "token":"{{token}}",
    "name":"Mahipal singh",
    "groupId":"28"
  
}'
var request = http.Request('POST', Uri.parse('{{brand}}/api/v2/Group/update'));
request.body = '''{\n    "userId": "{{userid}}",\n    "token":"{{token}}",\n    "name":"Mahipal singh",\n    "groupId":"28"\n  \n}''';

http.StreamedResponse response = await request.send();

if (response.statusCode == 200) {
   print(await response.stream.bytesToString());
}
else {
   print(response.reasonPhrase);
}
package main

import (
   "fmt"
   "strings"
   "net/http"
   "io/ioutil"
)

func main() {

   url := "%7B%7Bbrand%7D%7D/api/v2/Group/update"
   method := "POST"

   payload := strings.NewReader(`{
    "userId": "{{userid}}",
    "token":"{{token}}",
    "name":"Mahipal singh",
    "groupId":"28"
  
}`)

   client := &http.Client {
   }
   req, err := http.NewRequest(method, url, payload)

   if err != nil {
      fmt.Println(err)
      return
   }
   res, err := client.Do(req)
   if err != nil {
      fmt.Println(err)
      return
   }
   defer res.Body.Close()

   body, err := ioutil.ReadAll(res.Body)
   if err != nil {
      fmt.Println(err)
      return
   }
   fmt.Println(string(body))
}
POST /api/v2/Group/update HTTP/1.1
Host: {{brand}}
Content-Length: 106

{
    "userId": "{{userid}}",
    "token":"{{token}}",
    "name":"Mahipal singh",
    "groupId":"28"
  
}
OkHttpClient client = new OkHttpClient().newBuilder()
   .build();
MediaType mediaType = MediaType.parse("text/plain");
RequestBody body = RequestBody.create(mediaType, "{\n    \"userId\": \"{{userid}}\",\n    \"token\":\"{{token}}\",\n    \"name\":\"Mahipal singh\",\n    \"groupId\":\"28\"\n  \n}");
Request request = new Request.Builder()
   .url("{{brand}}/api/v2/Group/update")
   .method("POST", body)
   .addHeader("Content-Length", "")
   .build();
Response response = client.newCall(request).execute();
var myHeaders = new Headers();
myHeaders.append("Content-Length", "");

var raw = "{\n    \"userId\": \"{{userid}}\",\n    \"token\":\"{{token}}\",\n    \"name\":\"Mahipal singh\",\n    \"groupId\":\"28\"\n  \n}";

var requestOptions = {
   method: 'POST',
   headers: myHeaders,
   body: raw,
   redirect: 'follow'
};

fetch("{{brand}}/api/v2/Group/update", requestOptions)
   .then(response => response.text())
   .then(result => console.log(result))
   .catch(error => console.log('error', error));
CURL *curl;
CURLcode res;
curl = curl_easy_init();
if(curl) {
   curl_easy_setopt(curl, CURLOPT_CUSTOMREQUEST, "POST");
   curl_easy_setopt(curl, CURLOPT_URL, "%7B%7Bbrand%7D%7D/api/v2/Group/update");
   curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L);
   curl_easy_setopt(curl, CURLOPT_DEFAULT_PROTOCOL, "https");
   struct curl_slist *headers = NULL;
   headers = curl_slist_append(headers, "Content-Length: ");
   curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers);
   const char *data = "{\n    \"userId\": \"{{userid}}\",\n    \"token\":\"{{token}}\",\n    \"name\":\"Mahipal singh\",\n    \"groupId\":\"28\"\n  \n}";
   curl_easy_setopt(curl, CURLOPT_POSTFIELDS, data);
   res = curl_easy_perform(curl);
}
curl_easy_cleanup(curl);
#import 

dispatch_semaphore_t sema = dispatch_semaphore_create(0);

NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"%7B%7Bbrand%7D%7D/api/v2/Group/update"]
   cachePolicy:NSURLRequestUseProtocolCachePolicy
   timeoutInterval:10.0];
NSDictionary *headers = @{
   @"Content-Length": @""
};

[request setAllHTTPHeaderFields:headers];
NSData *postData = [[NSData alloc] initWithData:[@"{\n    \"userId\": \"{{userid}}\",\n    \"token\":\"{{token}}\",\n    \"name\":\"Mahipal singh\",\n    \"groupId\":\"28\"\n  \n}" dataUsingEncoding:NSUTF8StringEncoding]];
[request setHTTPBody:postData];

[request setHTTPMethod:@"POST"];

NSURLSession *session = [NSURLSession sharedSession];
NSURLSessionDataTask *dataTask = [session dataTaskWithRequest:request
completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
   if (error) {
      NSLog(@"%@", error);
      dispatch_semaphore_signal(sema);
   } else {
      NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *) response;
      NSError *parseError = nil;
      NSDictionary *responseDictionary = [NSJSONSerialization JSONObjectWithData:data options:0 error:&parseError];
      NSLog(@"%@",responseDictionary);
      dispatch_semaphore_signal(sema);
   }
}];
[dataTask resume];
dispatch_semaphore_wait(sema, DISPATCH_TIME_FOREVER);
open Lwt
open Cohttp
open Cohttp_lwt_unix

let postData = ref "{\n    \"userId\": \"{{userid}}\",\n    \"token\":\"{{token}}\",\n    \"name\":\"Mahipal singh\",\n    \"groupId\":\"28\"\n  \n}";;

let reqBody = 
   let uri = Uri.of_string "%7B%7Bbrand%7D%7D/api/v2/Group/update" in
   let headers = Header.init ()
      |> fun h -> Header.add h "Content-Length" ""
   in
   let body = Cohttp_lwt.Body.of_string !postData in

   Client.call ~headers ~body `POST uri >>= fun (_resp, body) ->
   body |> Cohttp_lwt.Body.to_string >|= fun body -> body

let () =
   let respBody = Lwt_main.run reqBody in
   print_endline (respBody)
$headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]"
$headers.Add("Content-Length", "")

$body = "{`n    `"userId`": `"{{userid}}`",`n    `"token`":`"{{token}}`",`n    `"name`":`"Mahipal singh`",`n    `"groupId`":`"28`"`n  `n}"

$response = Invoke-RestMethod '{{brand}}/api/v2/Group/update' -Method 'POST' -Headers $headers -Body $body
$response | ConvertTo-Json
require "uri"
require "net/http"

url = URI("{{brand}}/api/v2/Group/update")

http = Net::HTTP.new(url.host, url.port);
request = Net::HTTP::Post.new(url)
request["Content-Length"] = ""
request.body = "{\n    \"userId\": \"{{userid}}\",\n    \"token\":\"{{token}}\",\n    \"name\":\"Mahipal singh\",\n    \"groupId\":\"28\"\n  \n}"

response = http.request(request)
puts response.read_body
printf '{
    "userId": "{{userid}}",
    "token":"{{token}}",
    "name":"Mahipal singh",
    "groupId":"28"
  
}'| http  --follow --timeout 3600 POST '{{brand}}/api/v2/Group/update' \
 Content-Length:
import Foundation
#if canImport(FoundationNetworking)
import FoundationNetworking
#endif

var semaphore = DispatchSemaphore (value: 0)

let parameters = "{\n    \"userId\": \"{{userid}}\",\n    \"token\":\"{{token}}\",\n    \"name\":\"Mahipal singh\",\n    \"groupId\":\"28\"\n  \n}"
let postData = parameters.data(using: .utf8)

var request = URLRequest(url: URL(string: "{{brand}}/api/v2/Group/update")!,timeoutInterval: Double.infinity)
request.addValue("", forHTTPHeaderField: "Content-Length")

request.httpMethod = "POST"
request.httpBody = postData

let task = URLSession.shared.dataTask(with: request) { data, response, error in 
   guard let data = data else {
      print(String(describing: error))
      semaphore.signal()
      return
   }
   print(String(data: data, encoding: .utf8)!)
   semaphore.signal()
}

task.resume()
semaphore.wait()

Example Response

 [{"key":"Date"
"value":"Sat
 16 Nov 2024 08:38:52 GMT"}
{"key":"Content-Type"
"value":"application\/json; charset=utf-8"}
{"key":"Content-Length"
"value":"70"}
{"key":"Connection"
"value":"keep-alive"}
{"key":"Access-Control-Allow-Origin"
"value":"*"}
{"key":"Access-Control-Allow-Methods"
"value":"POST
 GET
 OPTIONS
 PATCH
 DELETE"}
{"key":"Access-Control-Allow-Headers"
"value":"X-Requested-With
content-type"}
{"key":"Access-Control-Allow-Credentials"
"value":"true"}
{"key":"Vary"
"value":"Origin"}
{"key":"ETag"
"value":"W\/\"46-60bZwbvdfLpWnMq8PsQcm21LoQw\""}
{"key":"Strict-Transport-Security"
"value":"max-age=15724800; includeSubDomains"}]
 {
    "status": "success",
    "message": "Group updated successfully",
    "code": 200
}