Задача
Получим самую первую запись, отсортировав по убыванию по id, отфильтровав только не архивные (не удаленные) записи, у которых не задано расписание
Решение
GET https://apigw.intradesk.ru/settings/odata/Employees?ApiKey=65247DBDE14C45A6A275DC1FC0&$skip=0&$top=1&$orderby= id desc&$filter=(isarchived eq false) and (workingScheduleId eq null)
Ответ сервера:
{
"@odata.count": 16, //кол-во совпадений (игнорируя skip и top)
"value": [ //массив соответствующих запросу пользователей
{
"id": 583439, //идентификатор
"updatedAt": "2021-08-15T15:28:33.4985050Z", //дата последнего изменения
"name": "Тракторенко Петр Семенович ", //ФИО (автоматически составляется из 3х полей: имя, фамилия отчество)
"firstName": " Петр", //имя сотрудника
"lastName": " Тракторенко ", //фамилия сотрудника
"middleName": " Семенович", //отчество сотрудника
"email": "tps@company.ru", //эл.почта
"userName": " tps@company.ru ", //логин для входа в систему
"type": 10, //тип пользователя. 10 – сотрудник(исполнитель), 20 - клиент
"roles": [
{
"roleId": 145639 //идентификатор роли
}
],
"groups": [ //массив групп, в которых состоит пользователь
{
"id": 431890,
"userGroupId": 176286, //идентификатор группы
"userId": 583439, //идентификатор сотрудника
"userGroup": {
"id": 176286,
"name": "Менеджеры"
},
"isDefault": false //признак, является ли группа основной
}
],
"userTags": [ //теги, закрепленные за сотрудником
{
"userId": 583439, //идентификатор сотрудника
"tagId": 279504, //идентификатор тега
"tag": {
"id": 279504,
"name": "Информирование" //название тега
}
},
{
"userId": 583439,
"tagId": 279503,
"tag": {
"id": 279503,
"name": "Важное"
}
}
],
"sortDirection": 0,
"isArchived": false, //признал, удален ли сотрудник (заархивирован)
"phoneNumbers": [ //тел.номера сотрудника
{
"phoneNumber": "+78001234567", //номер телефона
"default": true, //признак того, что это основной номер пользователя
"phoneExt": null, //добавочный номер
"phoneInternational": "+7 800 123-45-67" //номер телефона в международном формате
}
],
"workingScheduleId": null, //идентификатор рабочего расписания
"phoneNumber": "+78001234567", //номер телефона
"userFieldValues": [ //значения доп.полей (по id)
{
"userFieldId": 690, //идентификатор доп.поля
"value": "2" //значение
}
],
"userClientFieldValues": [], //значения доп.полей (по алиасу)
"fields": {
"addfield_rejimSingleSelect": "2"
},
"fotoImage": ": "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD…", // строка с фото сотрудника.
"activeTaskNumber": null, //идентификатор текущей заявки в работе
"updatedBy": "Супервизор ", //автор последних изменений по сотруднику
"timeZoneCode": "Europe/Moscow", //часовой пояс
"emailConfirmed": false, //признак, подтверждена ли эл.почта
"additionalEmails": [ //массив дополнительных эл.почт
"tps@mymail.ru"
]
}
]
}
Полная документация к методу в формате swagger (Settings API)
Другие возможные параметры
GET https://apigw.intradesk.ru/settings/odata/Employees?ApiKey=65247DBDE14C45A6A275DC1FC0
GET https://apigw.intradesk.ru/settings/odata/v2/Employees?ApiKey=65247DBDE14C45A6A275DC1FC0
Параметры запроса:
$skip - количество пользователей-сотрудников, которое нужно пропустить, используется для постраничного листания сотрудников
$top - количество пользователей-сотрудников, которое нужно вернуть, используется для постраничного листания сотрудников
$orderby - название поля для сортировки в списке
$filter - используется для фильтрации списка пользователей-сотрудников. “$filter=(isArchived eq false)" для вывода всех не удаленных записей (не архивных)
$count - true - будет подсчитано количество пользователей-сотрудников, удовлетворяющих запросу
Фильтрация списка
Аналог строки поиска (поиск совпадения строки в полях ФИО, телефоны, email, дополнительных полях типа текст и строка)
$filter=(contains(searchField, 'строка поиска'))
Теги
содержит любое из: $filter=((tags/any(s: s/tagId eq {tagid}))
Телефоны
- заданы - $filter=(PhoneNumberList/any())
- не заданы- $filter=(not PhoneNumberList/any())
Роль
содержит любое из: $filter=((roles/any(s: s/roleId eq {roleId})))
Удален
- да - $filter=(isArchived eq true)
- нет - $filter=(isArchived eq false)