V 2.0
Employee
Description
The Employee API provides comprehensive functionality to manage employees (agents) in a call center environment. It offers detailed capabilities for creating, updating, listing, and managing employee information including their roles, working hours, group assignments, and destination configurations. This API is essential for HR managers, administrators, and supervisors to maintain and monitor employee data in real-time.
Authentication
All endpoints require authentication using either:
-
A session ID (SSID), or
-
A combination of User ID and Token
Ensure that you provide the necessary authentication parameters with each request.
Authentication Methods
-
Session ID Authentication
-
Use the
ssidparameter -
Provides a quick and simple authentication method
-
-
User ID and Token Authentication
-
Requires both
userIdandtokenparameters -
Offers more granular access control
-
Note: When userId and token are used, ssid should not be present in the request.
Error Codes
Employee API Specific Error Codes
| Error Code | Description | Potential Cause | Recommended Action |
|---|---|---|---|
| 1000 | Invalid parameters | The provided parameters are incorrect or malformed | Review and correct the request parameters |
| 1014 | Invalid token | Authentication token is invalid or expired | Re-authenticate and obtain a new token |
| 1015 | Permission denied | User lacks required permissions | Verify user permissions (ADD_EMPLOYEE, EDIT_EMPLOYEES, VIEW_AGENTS, etc.) |
| 1047 | Invalid request (empty body) | Request body is empty or not provided | Ensure request body contains required data |
| 1501 | Data already in processing | A similar request is currently being processed | Wait and retry the request after a short interval |
| 1502 | Invalid filter value | The provided filter parameters are incorrect or malformed | Review and correct the filter parameters |
| 1503 | Invalid role id | The provided role ID does not exist | Verify the role ID exists in your account |
| 1504 | Invalid parent | Parent employee ID is invalid or not found | Provide a valid parent ID or use "root" |
| 1505 | Invalid group data | Group assignment data is malformed or group IDs don't exist | Verify all group IDs exist in your account |
| 1506 | Employee and parent could not be same | Attempting to set employee as their own parent | Choose a different parent employee |
| 1507 | Invalid AgentID | The provided agent/employee ID is invalid | Verify the employee ID is correct |
| 1508 | Invalid status value | Status value must be 0 or 1 | Use 0 for inactive, 1 for active |
| 1509 | Invalid employee | Employee not found or user unauthorized to access | Verify employee exists and you have access |
| 1510 | Invalid destination | Destination type or value is invalid | Verify destination type (MOBILE, SIP, etc.) and value |
| 1511 | Working time format is invalid | Working hours are not in correct format or range | Use minutes from midnight (0-1439) |
| 1512 | Email already exists | The email address is already registered | Use a unique email address |
| 1513 | Invalid type | Employee type is invalid | Use valid types: "Both", "Inbound", "Outbound" |
| 1514 | Invalid mobile number | Mobile number format is incorrect | Provide a valid mobile number |
| 1515 | Invalid name | Employee name is empty or invalid | Provide a valid employee name |
| 1516 | Invalid DID number | DID number format is incorrect | Verify DID number format |
| 1517 | Your agentid and your loginid must be same | Agent trying to modify another agent's data | Agents can only modify their own data |
| 1518 | Data could not be updated | Database update operation failed | Try again or contact support |
| 1519 | Call password must be minimum 6 digits (update) / 8 digits (create) | Call password length requirement not met | Provide password meeting length requirement |
| 1520 | You must be single field update | Multiple fields provided when single field expected | Update only one field at a time |
| 1521 | Please provide only valid fields | Request contains invalid or unknown fields | Remove invalid fields from request |
| 1522 | Data could not be inserted | Database insert operation failed | Try again or contact support |
| 1523 | Your agent information is already added | Duplicate employee creation attempt | Employee already exists with this information |
| 1524 | Invalid action | The requested action is not valid | Verify the action parameter |
| 1525 | Invalid target agent ID | Target agent ID for operation is invalid | Provide a valid target agent ID |
| 1526 | Invalid ID | The provided ID is invalid | Verify the ID parameter |
| 1527 | Invalid type | Type parameter value is invalid | Use a valid type value |
| 1528 | Invalid favorite data | Favorite data format is incorrect | Verify favorite data structure |
| 1529 | Invalid domain | Domain parameter is invalid | Provide a valid domain |
| 1530 | Invalid agent timing | Agent timing data is incorrect | Verify timing format and values |
| 1532 | Employee limit reached | Account has reached maximum employee limit | Upgrade plan or deactivate unused employees |
| 1534 | PreDelete value exceeds limit of 2 | PreDelete counter exceeds maximum allowed value | Contact support to resolve |
Additional Error Handling Guidelines
-
Always check the response status before processing the data
-
Implement error handling mechanisms in your application
-
Log error codes for troubleshooting and monitoring
-
Consult the main SarvErrors documentation for comprehensive error code references
Best Practices
-
Validate all input parameters before making a request
-
Handle potential authentication failures gracefully
-
Implement appropriate error handling and retry mechanisms
-
Use the most specific authentication method for your use case
-
Be mindful of request frequency to prevent server overload
-
Check employee limits before creating or activating employees
-
Ensure email uniqueness across all employees
-
Use proper working hours format (minutes from midnight: 0-1439)
-
Validate role and group IDs before assignment
-
Use partial updates when modifying employee data - only send fields that need to change
-
Monitor change logs for audit trail and compliance
-
Test with single employee before performing bulk operations
Working Hours Format
Working hours are specified in minutes from midnight (0-1439):
- 0 = 12:00 AM (midnight)
- 60 = 1:00 AM
- 540 = 9:00 AM
- 1080 = 6:00 PM
- 1439 = 11:59 PM
Example:
{
"MON": [
{ "from": 540, "to": 1080 } // 9:00 AM to 6:00 PM
],
"TUE": [
{ "from": 540, "to": 1080 }
]
}
Multiple time slots per day:
{
"MON": [
{ "from": 0, "to": 1137 }, // 12:00 AM to 6:57 PM
{ "from": 1139, "to": 1239 }, // 6:59 PM to 8:39 PM
{ "from": 1339, "to": 1439 } // 10:19 PM to 11:59 PM
]
}
Destination Types
Common destination types for employee call routing:
| Type | Description | Example Value |
|---|---|---|
| MOBILE | Mobile phone number | "9876543210" |
| SIP | SIP endpoint/extension | "sip:user@domain.com" |
| LANDLINE | Landline phone number | "0123456789" |
| WEBRTC | WebRTC endpoint | "webrtc:endpoint" |
Employee Status Values
| Status | Value | Description |
|---|---|---|
| Active | 1 | Employee is active and can receive calls |
| Inactive | 0 | Employee is inactive and cannot receive calls |
Parent Hierarchy Values
Valid parent values for employee hierarchy:
- "root" - Top level parent
- "ROOT" - Top level parent (alternative)
- "START" - Top level parent (alternative)
- Employee ID - Any existing employee's unique_id
Permissions Required
Different operations require different permissions:
| Operation | Permission |
|---|---|
| Create Employee | ADD_EMPLOYEE |
| Update Employee | EDIT_EMPLOYEES |
| View Employees | VIEW_AGENTS or VIEW_ALL_AGENTS |
| Delete Employee | DELETE_EMPLOYEE |
Note: Permissions can be bypassed by setting forward=true in the request (admin only).
Recommendation
For a complete understanding of all possible error codes and their implications, refer to the comprehensive SarvErrors documentation.
The documentation now provides a clear, structured overview of the Employee API's error handling, authentication methods, and best practices. The error codes table includes additional context like potential causes and recommended actions to help developers better understand and resolve issues.
List
Endpoint
-
Method: POST
-
Path:
deepcall/api/v2/Employee/list/
Description
The List Employees endpoint provides a paginated list of employees (agents) based on specified criteria. This endpoint allows you to retrieve employee information with support for filtering, searching, and pagination. It's useful for populating employee lists in user interfaces, generating reports, or performing bulk operations on employees.
Use Cases
-
Retrieving a paginated list of all employees in the system
-
Filtering employees by status (active, inactive, deleted)
-
Searching employees by specific parameters (name, email, employee ID, etc.)
-
Filtering employees by group membership
-
Populating employee selection interfaces with pagination support
-
Generating employee reports with custom filters
Request Details
| Parameter | Type | Required | Description |
|---|---|---|---|
| ssid | string | No | Session ID (required if token is not used) |
| userId | string | No | User ID (required if ssid is not used) |
| token | string | No | Authentication token (required if ssid is not used) |
| agentid | string | No | Specific agent/employee ID to retrieve |
| status | string | No | Filter by status: "active" (default), "inactive", or "deleted" |
| search_params | object | No | Object containing search filters (name, email, agent_id, working_day, etc.) |
| page | number | No | Page number for pagination (default: 1) |
| limit | number | No | Number of records per page (default: 10) |
| getAll | boolean | No | If true, returns all records without pagination |
| groupid | string | No | Filter employees by group ID |
| quick | boolean | No | Flag for quick fetch (returns minimal employee data) |
Request Example
With Token and UserId
{
"userId": "{{userid}}",
"token": "{{token}}",
"page": 1,
"limit": 10
}
With SSID
{
"ssid": "{{ssid}}",
"page": 1,
"limit": 10
}
With Filters
{
"userId": "{{userid}}",
"token": "{{token}}",
"status": "active",
"search_params": {
"name": "John",
"email": "john@example.com"
},
"groupid": "{{groupid}}",
"page": 1,
"limit": 20
}
Response Details
Success Response Structure
| Field | Type | Description |
|---|---|---|
| response | array | Array of employee objects |
| response[].name | string | Employee's name |
| response[].email | string | Employee's email address |
| response[].phone | string | Employee's phone number |
| response[].address | string | Employee's address |
| response[].dest_type | string | Destination type (e.g., "MOBILE", "SIP") |
| response[].dest_value | string | Destination value |
| response[].call_pass | string | Employee's call password |
| response[].role | string | Employee's role ID |
| response[].roleName | string | Employee's role name |
| response[].parent | string | Employee's parent hierarchy |
| response[].parentName | string | Employee's parent name |
| response[].group | array | Array of group IDs the employee belongs to |
| response[].groupNames | array | Array of group names with IDs |
| response[].status | number | Employee's status (1: active, 0: inactive) |
| response[].isDeleted | number | Deletion status (0: not deleted, 1: deleted) |
| response[].working | array | Employee's working hours configuration |
| response[].unique_id | number | Employee's unique identifier |
| response[].user_id | string | User ID the employee belongs to |
| response[].cad | number | CAD (Computer-Aided Dispatch) status |
| agtLimit | number | Maximum agent limit for the account |
| currentPage | number | Current page number (0 if no data) |
| totalPages | number | Total number of pages (0 if no data) |
| totalRecords | number | Total number of records (0 if no data) |
| status | string | Response status ("success" or "error") |
| code | number | Response code (200 for success) |
Success Response Example
{
"response": [
{
"name": "XXXX XXXX",
"favorite": "",
"email": "xxxx.xxxx@example.com",
"phone": "91XXXXXXXXXX",
"address": "XXX XXXX XX",
"dest_type": "MOBILE",
"dest_value": "XXXXXXXXXX",
"call_pass": "XXXXXXXX",
"role": "X",
"password": "XXXXXXXXXXXXXXXX",
"parent": ",START,",
"create_date": 1720093436,
"create_by": "{{userid}}",
"create_by_type": "",
"user_id": "{{userid}}",
"unique_id": 2,
"allowDid": "",
"status": 1,
"isDeleted": 0,
"preDeleted": 0,
"group": [17, 28],
"working": [
{
"wDays": ["MON", "TUE", "WED", "THU", "FRI"],
"from": 540,
"to": 1080,
"agentId": 2
}
],
"groupNames": [
{
"17": "Sales Team"
},
{
"28": "Support Team"
}
],
"roleName": "Agent",
"parentName": "ROOT",
"cad": 0
}
],
"agtLimit": 50,
"currentPage": 1,
"totalPages": 1,
"totalRecords": 1,
"status": "success",
"code": 200
}
Empty Response Example
{
"response": [],
"agtLimit": 50,
"currentPage": 0,
"totalPages": 0,
"totalRecords": 0,
"status": "success",
"code": 200
}
Error Response Examples
| Error Code | Description | Message |
|---|---|---|
| 1014 | Invalid Session/Token | Invalid token |
| 1000 | Invalid Parameters | Invalid parameters |
| 1015 | Permission Denied | Permission denied |
Error Response Example
{
"status": "error",
"code": 1014,
"message": "Invalid token"
}
Notes
-
Authentication can be done either through
ssid(Session ID) oruserIdandtokencombination -
The
statusparameter accepts three values:-
"active"- Returns active employees (default) -
"inactive"- Returns inactive employees -
"deleted"- Returns deleted employees
-
-
If
agentidis provided, the response will contain information for only that specific employee -
The
search_paramsobject allows filtering by multiple fields such as name, email, agent_id, working_day, etc. -
The
pageparameter starts from 1, andlimitcontrols how many records are returned per page -
When
getAllis set to true, pagination is bypassed and all matching records are returned -
The
quickparameter, when set to true, returns minimal employee data for faster response times -
Employee working hours are represented in minutes from midnight in the
workingarray:- Example: 540 minutes = 9:00 AM, 1080 minutes = 6:00 PM
-
The
groupNamesfield provides a mapping of group IDs to group names -
The
parentNamefield shows the immediate parent's name, or "ROOT" if parent is "START" -
If no matching employees are found, the response will contain an empty array with
totalRecordsset to 0 -
Ensure that the user making the request has the necessary permissions (
VIEW_AGENTSorVIEW_ALL_AGENTS) -
For agent-type logins, access may be restricted based on permissions
-
The response includes pagination metadata (
currentPage,totalPages,totalRecords) for easy navigation -
Consider using pagination for large numbers of employees to optimize performance
Working Hours Format
The working array contains objects with the following structure:
{
"wDays": ["MON", "TUE", "WED", "THU", "FRI"],
"from": 540,
"to": 1080,
"agentId": 2
}
-
wDays: Array of day codes (MON, TUE, WED, THU, FRI, SAT, SUN) -
from: Start time in minutes from midnight -
to: End time in minutes from midnight -
agentId: The employee's ID
Example cURL Request
curl -X POST "deepcall/api/v2/Employee/list" \
-H "Content-Type: application/json" \
-d '{
"userId": "{{userid}}",
"token": "{{token}}",
"page": 1,
"limit": 10,
"status": "active"
}'
Example with Search Parameters
curl -X POST "deepcall/api/v2/Employee/list" \
-H "Content-Type: application/json" \
-d '{
"userId": "{{userid}}",
"token": "{{token}}",
"search_params": {
"name": "John",
"email": "john@example.com",
"working_day": ["MON", "TUE"]
},
"groupid": "{{groupid}}",
"page": 1,
"limit": 20
}'
List
var axios = require('axios');
var data = '{"ssid":"{{ssid}}"}';
var config = {
method: 'post',
url: '{{brand}}/api/v2/Employee/List',
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/Employee/List');
$request->setMethod(HTTP_Request2::METHOD_POST);
$request->setConfig(array(
'follow_redirects' => TRUE
));
$request->setHeader(array(
'Content-Length' => ''
));
$request->setBody('{"ssid":"{{ssid}}"}');
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 = "{\"ssid\":\"{{ssid}}\"}"
headers = {
'Content-Length': ''
}
conn.request("POST", "/api/v2/Employee/List", payload, headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))var client = new RestClient("{{brand}}/api/v2/Employee/List");
client.Timeout = -1;
var request = new RestRequest(Method.POST);
var body = @"{""ssid"":""{{ssid}}""}";
request.AddParameter("text/plain", body, ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);curl --location -g --request POST '{{brand}}/api/v2/Employee/List' \
--data-raw '{"ssid":"{{ssid}}"}'var request = http.Request('POST', Uri.parse('{{brand}}/api/v2/Employee/List'));
request.body = '''{"ssid":"{{ssid}}"}''';
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/Employee/List"
method := "POST"
payload := strings.NewReader(`{"ssid":"{{ssid}}"}`)
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/Employee/List HTTP/1.1
Host: {{brand}}
Content-Length: 19
{"ssid":"{{ssid}}"}OkHttpClient client = new OkHttpClient().newBuilder()
.build();
MediaType mediaType = MediaType.parse("text/plain");
RequestBody body = RequestBody.create(mediaType, "{\"ssid\":\"{{ssid}}\"}");
Request request = new Request.Builder()
.url("{{brand}}/api/v2/Employee/List")
.method("POST", body)
.addHeader("Content-Length", "")
.build();
Response response = client.newCall(request).execute();var myHeaders = new Headers();
myHeaders.append("Content-Length", "");
var raw = "{\"ssid\":\"{{ssid}}\"}";
var requestOptions = {
method: 'POST',
headers: myHeaders,
body: raw,
redirect: 'follow'
};
fetch("{{brand}}/api/v2/Employee/List", 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/Employee/List");
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 = "{\"ssid\":\"{{ssid}}\"}";
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/Employee/List"]
cachePolicy:NSURLRequestUseProtocolCachePolicy
timeoutInterval:10.0];
NSDictionary *headers = @{
@"Content-Length": @""
};
[request setAllHTTPHeaderFields:headers];
NSData *postData = [[NSData alloc] initWithData:[@"{\"ssid\":\"{{ssid}}\"}" 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 "{\"ssid\":\"{{ssid}}\"}";;
let reqBody =
let uri = Uri.of_string "%7B%7Bbrand%7D%7D/api/v2/Employee/List" 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 = "{`"ssid`":`"{{ssid}}`"}"
$response = Invoke-RestMethod '{{brand}}/api/v2/Employee/List' -Method 'POST' -Headers $headers -Body $body
$response | ConvertTo-Jsonrequire "uri"
require "net/http"
url = URI("{{brand}}/api/v2/Employee/List")
http = Net::HTTP.new(url.host, url.port);
request = Net::HTTP::Post.new(url)
request["Content-Length"] = ""
request.body = "{\"ssid\":\"{{ssid}}\"}"
response = http.request(request)
puts response.read_body
printf '{"ssid":"{{ssid}}"}'| http --follow --timeout 3600 POST '{{brand}}/api/v2/Employee/List' \
Content-Length:import Foundation
#if canImport(FoundationNetworking)
import FoundationNetworking
#endif
var semaphore = DispatchSemaphore (value: 0)
let parameters = "{\"ssid\":\"{{ssid}}\"}"
let postData = parameters.data(using: .utf8)
var request = URLRequest(url: URL(string: "{{brand}}/api/v2/Employee/List")!,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
15 Nov 2025 09:28:36 GMT"}
{"key":"Content-Type"
"value":"application\/json; charset=utf-8"}
{"key":"Content-Length"
"value":"6979"}
{"key":"Connection"
"value":"keep-alive"}
{"key":"Access-Control-Allow-Origin"
"value":"*"}
{"key":"Access-Control-Allow-Methods"
"value":"GET
PUT
POST
DELETE
OPTIONS"}
{"key":"Access-Control-Allow-Headers"
"value":"session-token
Authorization
Origin
Accept
Content-Type
DNT
Authorization
Keep-Alive
User-Agent
X-Requested-With
If-Modified-Since
Cache-Control
Content-Type
Content-Range
Range"}
{"key":"Access-Control-Allow-Credentials"
"value":"true"}
{"key":"Vary"
"value":"Origin"}
{"key":"ETag"
"value":"W\/\"1b43-2DchF5vI5pvpEwi1FhwrzqzHRjg\""}
{"key":"Strict-Transport-Security"
"value":"max-age=15724800; includeSubDomains"}
{"key":"Access-Control-Max-Age"
"value":"1728000"}]
{
"response": [
{
"name": "bhawesh",
"favorite": "",
"email": "brijendra11.u@sarv.com",
"phone": "918442021533",
"address": "jaipur",
"dest_type": "MOBILE",
"dest_value": "8442021533",
"call_pass": "46876828",
"role": "1",
"password": "jKyhuSn7s945GCm1",
"parent": ",START,6,",
"create_date": 1720094457,
"create_by": "29791451",
"create_by_type": "",
"user_id": "29791451",
"unique_id": 5,
"allowBusinessNum": [],
"status": 1,
"isDeleted": 0,
"preDeleted": 1,
"offTimeDest": {
"type": "",
"destination": ""
},
"type": "Both",
"ipPhoneUser": "",
"group": [
33
],
"working": [
{
"wDays": [
"MON",
"TUE",
"WED",
"THU",
"FRI",
"SAT"
],
"from": 60,
"to": 1439,
"agentId": 5
}
],
"groupNames": [
{
"33": "test double id"
}
],
"roleName": "test",
"parentName": "Bhawna ji"
},
{
"name": "New Agent 15 bhawesh",
"favorite": "",
"email": "fghjasdg@sarv.com",
"phone": "918442021533",
"address": "E 14 15",
"dest_type": "MOBILE",
"dest_value": "918442021533",
"call_pass": "4428551",
"role": "43",
"password": "1RRSVyYSw8h99tBg",
"parent": ",START,51,",
"create_date": 1733834800,
"create_by": "29791451",
"create_by_type": "",
"user_id": "29791451",
"unique_id": 21,
"allowBusinessNum": [],
"status": 1,
"isDeleted": 0,
"preDeleted": 0,
"offTimeDest": {
"type": "MOBILE",
"destination": "919876543210"
},
"type": "IBD",
"ipPhoneUser": "",
"group": [
33,
85
],
"working": [
{
"wDays": [
"MON",
"TUE",
"WED",
"THU",
"FRI",
"SAT",
"SUN"
],
"from": 180,
"to": 1380,
"agentId": 21
}
],
"groupNames": [
{
"33": "test double id"
},
{
"85": "abhi android"
}
],
"roleName": "supervisor bbx",
"parentName": "devansh"
},
{
"name": "vijay Ji testing",
"favorite": "",
"email": "vijayji@sarv.com",
"phone": "919376162321",
"address": "E 14 15",
"dest_type": "MOBILE",
"dest_value": "919694730287",
"call_pass": "2192378",
"role": "1",
"password": "bQT9m4EcDfY4Uxd",
"parent": ",START,",
"create_date": 1733899508,
"create_by": "29791451",
"create_by_type": "",
"user_id": "29791451",
"unique_id": 24,
"allowBusinessNum": [],
"status": 1,
"isDeleted": 0,
"preDeleted": 0,
"offTimeDest": {},
"type": "Both",
"ipPhoneUser": "",
"group": [
95,
67,
85
],
"working": [
{
"wDays": [
"MON",
"TUE",
"WED",
"THU",
"FRI",
"SAT",
"SUN"
],
"from": 60,
"to": 1439,
"agentId": 24
}
],
"groupNames": [
{
"95": "bbx"
},
{
"67": "ctc with ivr group"
},
{
"85": "abhi android"
}
],
"roleName": "test",
"parentName": "ROOT"
},
{
"name": "testing final",
"favorite": "",
"email": "test.final@gmail.com",
"phone": "918442021533",
"address": "from jaipur",
"dest_type": "WEBRTC",
"dest_value": "123123",
"call_pass": "76439212",
"role": "27",
"password": "o9Rknlw23ZINs41",
"parent": ",START,21,",
"create_date": 1746771764,
"create_by": "29791451",
"create_by_type": "",
"user_id": "29791451",
"unique_id": 26,
"allowBusinessNum": [],
"status": 1,
"isDeleted": 0,
"preDeleted": 0,
"offTimeDest": {
"type": "MOBILE",
"destination": "8442021533"
},
"type": "Both",
"ipPhoneUser": "89898",
"group": [
85
],
"working": [
{
"wDays": [
"MON",
"TUE",
"WED",
"THU",
"FRI",
"SAT",
"SUN"
],
"from": 0,
"to": 1320,
"agentId": 26
}
],
"groupNames": [
{
"85": "abhi android"
}
],
"roleName": "First Role",
"parentName": "New Agent 15 bhawesh"
},
{
"name": "devansh_IBD",
"favorite": "",
"email": "devansh.dev@sarv.com",
"phone": "916277619877",
"address": "sitapura",
"dest_type": "MOBILE",
"dest_value": "9588937501",
"call_pass": "21918545",
"role": "26",
"password": "lSAJ5KIi5sinCgQr",
"parent": ",START,25,",
"create_date": 1749723973,
"create_by": "29791451",
"create_by_type": "",
"user_id": "29791451",
"unique_id": 30,
"allowBusinessNum": [
"+919797775278"
],
"status": 1,
"isDeleted": 0,
"preDeleted": 0,
"offTimeDest": {
"type": "MOBILE",
"destination": "9588937501"
},
"type": "IBD",
"ipPhoneUser": "9588937501",
"group": [
85,
31
],
"working": [
{
"wDays": [
"MON",
"TUE",
"WED",
"THU",
"FRI",
"SAT",
"SUN"
],
"from": 1,
"to": 1439,
"agentId": 30
}
],
"groupNames": [
{
"85": "abhi android"
},
{
"31": "D-testG"
}
],
"roleName": "Test me",
"parentName": "D-Test"
},
{
"name": "mahipall",
"favorite": "",
"email": "mp@sarv.com",
"phone": "919024702505",
"address": "jpr",
"dest_type": "WEBRTC",
"dest_value": "10003",
"call_pass": "3881516",
"role": "1",
"password": "BmmiOKhjZ3KyolNN",
"parent": ",START,",
"create_date": 1752226792,
"create_by": "29791451",
"create_by_type": "",
"user_id": "29791451",
"unique_id": 33,
"allowBusinessNum": [],
"status": 1,
"isDeleted": 0,
"preDeleted": 0,
"offTimeDest": {
"type": "MOBILE",
"destination": "919024702505"
},
"type": "Both",
"ipPhoneUser": "",
"group": [
85,
29,
67,
28
],
"working": [
{
"wDays": [
"MON",
"TUE",
"WED",
"THU",
"FRI",
"SAT",
"SUN"
],
"from": 0,
"to": 1439,
"agentId": 33
}
],
"groupNames": [
{
"85": "abhi android"
},
{
"29": "Mahipal singh"
},
{
"67": "ctc with ivr group"
},
{
"28": "Mahipal "
}
],
"roleName": "test",
"parentName": "ROOT"
},
{
"name": "Voice AI Bot Suraj",
"favorite": "",
"email": "suraj.j@sarv.com",
"phone": "916378630703",
"address": "Jaipur",
"dest_type": "WEBRTC",
"dest_value": "111111",
"call_pass": "735956",
"role": "27",
"password": "ck1sUk61DblHyMF",
"parent": ",START,",
"create_date": 1753257588,
"create_by": "29791451",
"create_by_type": "",
"user_id": "29791451",
"unique_id": 34,
"allowBusinessNum": "",
"status": 1,
"isDeleted": 0,
"preDeleted": 0,
"offTimeDest": {},
"type": "Both",
"ipPhoneUser": "",
"group": [
85
],
"working": [
{
"wDays": [
"MON",
"TUE",
"WED",
"THU",
"FRI",
"SAT",
"SUN"
],
"from": 0,
"to": 1439,
"agentId": 34
}
],
"groupNames": [
{
"85": "abhi android"
}
],
"roleName": "First Role",
"parentName": "ROOT"
},
{
"name": "Devansh testing",
"favorite": "",
"email": "devansh@mail.com",
"phone": "916375802837",
"address": "jaipur",
"dest_type": "MOBILE",
"dest_value": "6375802837",
"call_pass": "22678679",
"role": "41",
"password": "BN9pcupFNFtqnHdn",
"parent": ",START,",
"create_date": 1754372170,
"create_by": "29791451",
"create_by_type": "",
"user_id": "29791451",
"unique_id": 39,
"allowBusinessNum": "",
"status": 1,
"isDeleted": 0,
"preDeleted": 0,
"offTimeDest": {},
"type": "IBD",
"ipPhoneUser": "",
"group": [
85
],
"working": [
{
"wDays": [
"MON",
"TUE",
"WED",
"THU",
"FRI",
"SAT"
],
"from": 480,
"to": 1260,
"agentId": 39
}
],
"groupNames": [
{
"85": "abhi android"
}
],
"roleName": "Devansh Test",
"parentName": "ROOT"
},
{
"name": "Abhimanyu Sharma",
"favorite": "",
"email": "abhimanyu@snet.in",
"phone": "919782888889",
"address": "100",
"dest_type": "MOBILE",
"dest_value": "919782888889",
"call_pass": "933345",
"role": "28",
"password": "5UaZWewOBYBVqix",
"parent": ",START,",
"create_date": 1754511647,
"create_by": "29791451",
"create_by_type": "",
"user_id": "29791451",
"unique_id": 40,
"allowBusinessNum": [],
"status": 1,
"isDeleted": 0,
"preDeleted": 0,
"offTimeDest": {},
"type": "Both",
"ipPhoneUser": "",
"group": [
85
],
"working": [
{
"wDays": [
"MON",
"TUE",
"WED",
"THU",
"FRI",
"SAT",
"SUN"
],
"from": 0,
"to": 1380,
"agentId": 40
}
],
"groupNames": [
{
"85": "abhi android"
}
],
"roleName": "New Test Role",
"parentName": "ROOT"
},
{
"name": "Devansh Test-1",
"favorite": "",
"email": "devasnh@gamil.com",
"phone": "916375802837",
"address": "jaipur",
"dest_type": "MOBILE",
"dest_value": "6375802837",
"call_pass": "669675",
"role": "41",
"password": "wGbrGMyN8gwjqUA",
"parent": ",START,",
"create_date": 1754544787,
"create_by": "29791451",
"create_by_type": "",
"user_id": "29791451",
"unique_id": 41,
"allowBusinessNum": "",
"status": 1,
"isDeleted": 0,
"preDeleted": 0,
"offTimeDest": {},
"type": "Both",
"ipPhoneUser": "",
"group": [
85
],
"working": [
{
"wDays": [
"MON",
"TUE",
"WED",
"THU",
"FRI",
"SAT",
"SUN"
],
"from": 480,
"to": 1380,
"agentId": 41
}
],
"groupNames": [
{
"85": "abhi android"
}
],
"roleName": "Devansh Test",
"parentName": "ROOT"
}
],
"agtLimit": 180,
"currentPage": 1,
"totalPages": 3,
"totalRecords": 29,
"status": "success",
"code": 200
}