Задача
Создать заявку: «Не работает сервер X». Пометить её тегом “monitoring”
Решение
Продемонстрируем решение в общеизвестной программе тестирования API - Postman.
Для начала в разделе Настройки -> Теги создайте тег “monitoring”. В нашем примере система присвоила ему ID=33290.
Post запрос будет вида:
POST https://apigw.intradesk.ru/changes/tasks?ApiKey=1B42B8691ABB40AA961451D9ACЗначение Apikey можно получить в системе в разделе: Настройки -> Интеграции -> Apikey
Тело запроса:
{
"blocks": {
"name": "{\"value\":\"Не работает сервер X1. Просьба починить.\"}",
"description": "{\"value\":\"Даже не запускается. Лампочки не горят.\"}",
"tags": "{\"value\":[33290]}"
},
"Channel": "web"
}
Скопируйте тело запроса в программу Postman. Пункт меню: Body -> raw как на рисунке ниже:
Также на закладке Headers задайте Content-Type равным «application/json» как на рисунке ниже, и нажмите кнопку Send:
Всё! Заявка создана.
См. также изменение заявки.
Полная документация к методу в формате swagger (ChangeService API)
Задача
Поменять у заявки статус на «В работе», назначить сервис/тип: «Сервера, компьютеры (железо)” / ”инцидент”, назначить исполнителя «Первая линия поддержки»/«Мастерков А.А.», установить плановый срок выполнения «15.03.2022 18:00», установить теги, добавить комментарий «Постараемся сделать до обеда» (полный список полей, которых можно поменять одним запросом на заявке).
Решение
Put запрос будет вида:
PUT https://apigw.intradesk.ru/changes/tasks/?ApiKey=65247DBDE14C45A6A275DC1FC0
Значение Apikey можно получить в системе в разделе: Настройки -> Интеграции -> Apikey
Установить Content-Type = «application/json»
Тело запроса:
{
"number": 272,
"blocks": {
"status": "{\"value\": 22058}",
"service": "{\"value\": \"23097/\"}",
"tasktype": "{\"value\": 7805}",
"executor": "{\"value\":{\"userid\":109747,\"groupid\":31974}}",
"resolutiondateplan": "{\"value\": \"2022-03-15T15:00:00.0000000Z\"}",
"tags": "{\"value\": [32887,32893]}",
"comment": "{\"value\":\"Постараемся сделать до обеда.\"}",
"evaluation": "{\"value\":{\"value\":3,\"text\":\"Удовлетворительно\"}}"
},
"Channel": "api"
}
status Статус заявки. См: Настройки->Справочники ->Статусы . см. поле ID на списке
service Сервис. См: Настройки->Сервисы см. поле «путь сервиса» на карточке сервиса
tasktype Тип заявки. См: Настройки->Заявки->Типы заявок . см. поле ID на списке
tags Теги по заявки. См: Настройки->Теги . см. поле ID на списке
executor Исполнители. Составное поле. Можно указать Группу исполнителей, можно конкретного Исполнителя, можно и Группу и Исполнителя из этой группы одновременно. Что и продемонстриовано. Смотри раздел Сотрудники-Люди и Сотрудники-Группы. см. поле ID на списке
comment Добавление комментария
evaluation Оценка заявки
Список всех полей, которых можно изменить одним запросом см. здесь.
Полная документация к методу в формате swagger (ChangeService API)
Задача
Получить первые 5 заявок в статусах «открыта» и «в работе», с группой исполнителей «менеджеры», в сервисе «Программное обеспечение» (и дочерних сервисах). Отсортированные по дате изменения.
Решение
Get запрос будет вида:
https://apigw.intradesk.ru/tasklist/odata/tasks?ApiKey=65247DBDE14C45A6A275DC1FC0&$filter=(status eq 22055 or status eq 22058) and executorgroup eq 31973 and servicepath eq '3974/'&$orderby=updatedat desc&$top=5
Значение Apikey можно получить в системе в разделе: Настройки -> Интеграции -> Apikey
status Статус «открыта» id: 22055 См: Настройки->Справочники->Статусы . см. поле ID на списке
Статус «в работе» id: 22058
executorgroup Группа исполнители «менеджеры» id: 31973. см. Сотрудники -> Группы
servicepath Сервис «Программное обеспечение» servicepath: 3974 см. Настройки -> Сервисы
Любое из условий фильтрации вы можете опустить (не использовать), а также добавить другие условия фильтрации. См. также Описание полей заявки.
Полная документация к методу в формате swagger (TaskList API)
Задача
Понять какие поля есть у заявки, что они означают для использования в API.
Решение
"id": 4702781, // Служебное. Общий идентификатор заявки
"tasknumber": 31, // номер заявки
"customerid": 19359, // Служебное. идентификатор “катомера»
"status": 120570, // ID Статуса.
// Можно посмотреть в разделе Настройки->Справочники->Статусы
"priority": 75708, //ID Приоритета.
// Можно посмотреть в разделе Настройки->Справочники->Приоритеты
"name": "Проблемы с принтером", //Название заявки
"description": “Зажевал бумагу», //Описание
"initiator", //Заявитель (инициатор заявки).
При создании и изменении (POST, PUT) можно указать одно из трех:
1) Пользователя-Сотрудника
"initiator": "{\"value\":{\"userid\":109747}}"
2) Клиента
"initiator": "{\"value\":{\"groupid\":109747}}"
3) Клиента и пользователя клиента одновременно
"initiator": "{\"value\":{\"groupid\":109747,\"userid\":31974}}"
При получении (GET) возвращается всегда либо Пользователь-сотрудник, либо Пользователь клиента.
"initiatorclient", // Клиент заявитель.
Только для получения данных. Возвращается Клиент. Для изменения см. поле initiator
"executor",: //Исполнители по заявки.
При создании и изменении (POST, PUT) можно указать одно из трех:
1) Пользователя-Сотрудника
"executor": "{\"value\":{\"userid\":109747}}"
2) Группу сотрудников
"executor": "{\"value\":{\"groupid\":109747}}"
3) Одновременно группу и сотрудника, входящего в эту группу
"executor": "{\"value\":{\"groupid\":109747,\"userid\":31974}}"
При получении (GET) возвращается всегда либо Пользователь-сотрудник, либо Пользователь клиента.
"executorgroup" // Группа исполнителей.
Только для получения данных. Возвращается группа исполнителей
"creator": 583427, //ID пользователя, создавшего заявку. Заполняется всегда автоматически. Может отличаться от Заявителя (инициатора). Например, если на форме создания заявки изменить поле «Заявитель» (По звонку оператор выставляет Заявителем, того кто звонит),
"createdby": "Супервизор участка №15 ", //имя пользователя, создавшего заявку, только чтение.
"createdat": "2021-03-17T09:04:31.1095880Z", //дата создания заявки, только чтение
"updatedat": "2021-04-09T13:16:40.8114620Z", //дата последнего изменения заявки, только чтение
"updatedby": "Супервизор участка №15 ", //имя последнего изменившего заявку пользователя, только чтение
"service": 115438, // ID cервиса к которому относится заявка. Заявка может быть только в одном сервисе. В ответе (метод GET) возвращается идентификатор сервиса. Для методов POST и PUT (создание и изменение заявки) надо передавать не ID, а путь к сервису, см. Настройки->Сервисы, поле «Путь сервиса» на карточке сервиса. См. пример Изменения заявки
"servicename": "Орг.техника", //имя сервиса, в котором создана заявка, только чтение
"tasktype": 36283, // идентификатор типа заявки
// Можно посмотреть в разделе Настройки->Заявки->Типы заявок
"evaluation": "{\"value\":{\"value\":3,\"text\":\"Удовлетворительно\"}}", //оценка заявки. Поле "Value" содержит объект с двумя полями, "Value", хранящий числовое значение оценки и "Text", хранящее текстовое значение оценки. Важно заполнять оба значения*
"clientid": // ID клиента к которому относится заявка.:
В интерфейсах Clientid будет заполняться автоматически значением Initiatorclient (заявитель) если заявку создает пользователь клиента (или сотрудник от имени клиента). Это заявка от клиента.
Если заявка создается на карточки клиента и заявителем выступает сотрудник, то Clientid будет соответствовать данному клиенту (а не заявителю). Это заявка по клиенту одного сотрудника другому.
"resolutiondateplan": // Плановое время решения. Пример «2021-03-17T09:04:00.0000000Z» //Дата. В формате IOS8601 “yyyy-MM-ddTHH:mm:ss.fffffffzzz” (UTC+0). Плановое время решения (срок выполнения заявки). Может быть задано на форме вручную, а может быть автоматически рассчитана на основе настроенного SLA.
см. пример Изменения заявки
"resolutiondatefact": // Фактическое время решения. Пример «2021-03-17T09:04:00.0000000Z»
//Дата. Фактическое время решения. Intradesk автоматически заполняет это поле когда заявка переходит в статус с признаком «Выполнено».
"reactiondateplan": // Плановое время реакции. Пример «2021-03-17T09:04:00.0000000Z»
//Дата. плановое время реагирования. Может быть рассчитано на основе SLA.
"reactiondatefact": // Фактическое время реакции. Пример «2021-03-17T09:04:00.0000000Z»
//Дата. Фактическое время решения. Intradesk автоматически заполняет это поле когда Сотрудник в заявке делает первый перевод статуса.
"tags": [ //массив идентификаторов тегов
279504,279508
], см. пример Изменения заявки
"servicepath": "115434/115438/", //полный путь к Сервису
"workflow": 26454, // идентификатор бизнес-процесса
"observerlist": [], //массив идентификаторов пользователей-наблюдателей
"observergrouplist": [], //массив идентификаторов пользовательских групп-наблюдателей
"closedat": "2021-03-17T09:04:00.0000000Z", //дата закрытия, когда заявка была переведена в статус с признаком "Статус конечный"
"notresponsibleexecutors": [], // массив идентификаторов не ответственных пользователей-исполнителей заявки (тех сотрудников, кто ранее был исполнителей на заявке)
"notresponsibleexecutorgroups": [], // массив идентификаторов не ответственных групп-исполнителей заявки (тех групп сотрудников, которые ранее были исполнителями на заявке)
"additionalfields": { //массив данных дополнительных полей заявки
"data": [
{
"alias": "addfield_stoimost", //алиас(псевдоним) доп.поля
"value": { //значения поля в зависимости от его типа
"numericvalue": 35, //если поле числового типа
"boolvalue": null, //если поле булева типа
"datevalue": null, //если поле типа дата
"stringvalue": null, //если поле строкового типа
"liststringvalue": null //если поле содержит несколько значений (выпадающий список)
}
}
],
"count": 1
},
"lifetime": null, //жизненный цикл заявки (не заполняется если в запросе передано excludelifetime=true)
"servicefullname": "Тех. проблемы>Орг.техника", //полное имя сервиса
"isserviceadmin": false, //признак, который указывает, является ли пользователь, от имени которого выполняется запрос, администратором сервиса заявки
"servicesettingadminid": 53035,
"attachments": //сериализованный массив данных о прикрепленных файлах
"createdchannel": строка //канал создания заявки. Например, "web"," api", "ios" и т.д..
"assets": {"value":[55,60]} //объект, содержащий массив идентификаторов активов
"[{\"Id\":\"611394333b320b000188066b\",\"Name\":\"page.html\",\"ContentType\":\"text/html\",\"Size\":1352,\"Target\":20,\"UploadedAt\":\"2021-08-11T09:11:15.9360000Z\",\"UploadedBy\":\"Супервизор участка №15 \"}]",
"weight": 0,
"filledfieldslist": null, //Служебное
"isreactionexpired": false, //признак того, что время реакции превышено
"isresolutionexpired": false, //признак того, что время решения превышено
"_searchhighlights": null, // Служебное, не используется.
"sla": null, // идентификатор SLA, см. Настройки->Справочники->SLA
"resolutionleftminutes": null, //оставшееся на выполнение время
"tasknumberpath": "31/", //путь номеров заявок в дереве (включая родительские заявки)
"taskbranchid": "ba8bc1cb-95f3-4d12-9829-66622ea57f1c", // идентификатор дерева заявок, заполнен только у заявок, которые являются частью дерева заявок, являются дочерней или родительской заявкой
"taskexpenses": null, //трудозатраты
"isvisited": false, //признак того, просмотрена ли заявка пользователем, от имени которого выполняется запрос
"isvisitedother": true, // Служебное
"privateattachments": "[]" //скрытые приложенные файлы
Для фильтрации списка заявок нужно использовать формат OData условий в параметре "$filter".
Доступны следующие возможности фильтрации по полям:
Сервис
- один из. Odata формат = (servicepath eq '{servicepathstring1}' or servicepath eq {servicepathstring2}' or .... or servicepath eq '{servicepathstringN}')
- кроме. Odata формат = (servicepath ne '{servicepathstring1}' and servicepath ne {servicepathstring2}' and .... and servicepath ne '{servicepathstringN}')
Тип заявки
- один из. Odata формат = (tasktype eq {id1} or tasktype eq {id2} or ....or tasktype eq {idN})
- кроме. Odata формат = (tasktype ne {id1} and tasktype ne {id2} and ....and tasktype ne {idN})
Заявитель
- один из. Odata формат = как тип заявки, только поле initiator
- кроме. Odata формат = как тип заявки, только поле initiator
Исполнитель
- один из. Odata формат = как тип заявки, только поле executor
- кроме. Odata формат = как тип заявки, только поле executor
- задан. Odata формат = (contains('_isfilled','executor'))
- не задан. Odata формат = (contains('_isnotfilled','executor'))
Группы исполнителей
- один из. Odata формат = как тип заявки, только поле executorgroup
- кроме. Odata формат = как тип заявки, только поле executorgroup
- задан. Odata формат = (contains('_isfilled','executorgroup'))
- не задан. Odata формат = (contains('_isnotfilled','executorgroup'))
Компания заявителя
- один из. Odata формат = как тип заявки, только поле initiatorgroup
- кроме. Odata формат = как тип заявки, только поле initiatorgroup
Наблюдатели (поиск по людям)
- один из. Odata формат = (observerlist/any(s: s eq {id1}) or observerlist/any(s: s eq {id2}) or .... observerlist/any(s: s eq {idN}))
- кроме. Odata формат = (observerlist/any(s: s ne {id1}) and observerlist/any(s: s ne {id2}) and .... observerlist/any(s: s ne {idN}))
- задан. Odata формат = (contains('_isfilled','observerlist'))
- не задан. Odata формат = (contains('_isnotfilled','observerlist'))
Название
- задан. Odata формат = (contains('_isfilled','name'))
- не задан. Odata формат = (contains('_isnotfilled','name'))
Описание
- задан. Odata формат = (contains('_isfilled','description'))
- не задан. Odata формат = (contains('_isnotfilled','description'))
Приоритет
- больше равно. Odata формат = (priority ge id1)
- меньше равно. Odata формат = (priority le id1)
- один из. Odata формат = (priority eq {id1} or priority eq {id2} or ....or priority eq {idN})
- кроме. Odata формат = (priority ne {id1} and priority ne {id2} and ....and priority ne {idN})
даты, примеры условий -
1) между: (({datefield} ge cast('{2019-11-01T21:00:00.000Z}', Edm.DateTimeOffset)) and ({datefield} le cast('{2019-12-01T21:00:00.000Z}', Edm.DateTimeOffset)))
2) равно - (({datefield} ge cast('{2019-12-01T21:00:00.000Z}', Edm.DateTimeOffset))
даты нужно указывать в формате iso - 2019-12-01T21:00:00.000Z
Статус
- один из. Odata формат = как тип заявки, только поле status
- кроме. Odata формат = как тип заявки, только поле status
Тег
- содержит любой из. Odata формат = (tags/any(s: s eq 3) or tags/any(s: s eq 7))
- не содержит любой из. Odata формат = (tags/any(s: s ne 3) or tags/any(s: s ne 7))
- содержат все из. Odata формат = (tags/any(s: s eq 3) and tags/any(s: s eq 7))
- не содержат все из. Odata формат = (tags/any(s: s ne 3) and tags/any(s: s ne 7))
- задан. Odata формат = (contains('_isfilled','tags'))
- не задан. Odata формат = (contains('_isnotfilled','tags'))
Вложения
- задан. Odata формат = (contains('_isfilled','attachments'))
- не задан. Odata формат = (contains('_isnotfilled','attachments'))
Доп. поле, дата - все как для дат, {datefield} - alias поля
- задан. Odata формат = (contains('_isfilled','alias_доп_поля'))
- не задан. Odata формат = (contains('_isnotfilled','alias_доп_поля'))
Доп. поле, многострочное поле (текст)
- задан. Odata формат = (contains('_isfilled','alias_доп_поля'))
- не задан. Odata формат = (contains('_isnotfilled','alias_доп_поля'))
Доп. поле, строка
- задан. Odata формат = (contains('_isfilled','alias_доп_поля'))
- не задан. Odata формат = (contains('_isnotfilled','alias_доп_поля'))
Доп. поле, Файл
- задан. Odata формат = (contains('_isfilled','alias_доп_поля'))
- не задан. Odata формат = (contains('_isnotfilled','alias_доп_поля'))
Доп. поле, чекбокс (да/нет)
- установлен. Odata формат = ({additionalFieldAlias} eq true)
- не установлен. Odata формат = ({additionalFieldAlias} eq false) - но это может быть не совсем верное условие, не учитывает Null
Доп. поле, число
- равно. Odata формат = {additionalFieldAlias} eq {numberValue}
- меньше или равно. Odata формат = {additionalFieldAlias} le {numberValue}
- больше или равно. Odata формат = {additionalFieldAlias} ge {numberValue}
- между. Odata формат = {additionalFieldAlias} eq {numberValue}
- задан. Odata формат = (contains('_isfilled','alias_доп_поля'))
- не задан. Odata формат = (contains('_isnotfilled','alias_доп_поля'))
Номер заявки
- между (интервал). Odata формат = (tasknumber ge {number1} and tasknumber le {number2})
- равно. Odata формат = tasknumber eq {number}
Sla
- один из - Odata = sla eq id1 or sla eq id2 or....or sla eq idN
- кроме - Odata = sla ne id1 and sla ne id2 and....and sla ne idN
- задан. Odata формат = (contains('_isfilled','sla'))
- не задан. Odata формат = (contains('_isnotfilled','sla'))
Канал создания
- любое из - Odata = createdchannel eq val1 or createdchannel eq val2 or...or createdchannel eq valN
- задан. Odata формат = (contains('_isfilled','createdchannel'))
- не задан. Odata формат = (contains('_isnotfilled','createdchannel'))
См. также Описание полей заявки, Получение списка заявок
Задача
Получить данные заявки c номером 31.
Решение
Get запрос будет вида:
https://apigw.intradesk.ru/tasklist/odata/tasks?ApiKey=65247DBDE14C45A6A275DC1FC0&$filter=tasknumber eq 31
См. также Описание полей заявки.
Получить данные по заявке (или по заявкам) со всей основной информацией можно не только по номеру, но у путём фильтрации списка заявок. См пример Получение списка заявок.
Полная документация к методу в формате swagger (TaskList API)
Задача
Получим список сервисов.
Решение
POST https://apigw.intradesk.ru/rules/api/rules?ApiKey=65247DBDE14C45A6A275DC1FC0
Тело запроса:
{
"chainName":"ShowServiceListChainV2"
}
Ответ сервера:
{
"r_servicelist":
{ "services":[ //массив сервисов
{
"id":4380, // идентификатор сервиса
"name":"IntraDesk", //имя сервиса
"fullname":"IntraDesk", //полное имя сервиса, включая родительские сервисы
"description":null, //описание сервиса
"path":"4380/", //путь сервиса, включая родительские сервисы
"parentid":null, //идентификатор родительского сервиса, если таковой существует
"tasktypes":[ //идентификаторы типов заявок используемые в данном сервисе
],
"sortorder":"03", //значение для сортировки на списке сервисов
"adminsettingid":1236, //идентификатор настроек администратора
"denied":true,
"isarchived":false //признак того, является ли сервис удаленным(в архиве)
},
{
"id":4349,
"name":"Поддержка",
"fullname":"IntraDesk > Поддержка",
"description":null,
"path":"4380/4349/",
"parentid":4380,
"tasktypes":[
57
],
"sortorder":"03/001",
"adminsettingid":1236,
"denied":false,
"isarchived":false
}
],
"tasktypes":[ //массив типов заявок
{
"id":55, //идентификатор типа завки
"name":"Бронирование переговорных" //название
},
{
"id":57,
"name":"Заявка"
}
]
}
}
Сервисы имеют древовидную структуру, каждый сервис имеет поле "path", в котором через "/" указаны id всех родительских сервисов этого сервиса.
Создание заявок доступно только в "конечных сервисах", в тех, которые не имеют дочерних сервисов.
Для каждого сервиса в поле "tasktypes" указаны id типов заявок в которых доступно создание заявки.
Полная документация к методу в формате swagger (Rules API)
Задача
По телефонному звонку создать заявку. К заявке приложить запись телефонного разговора.
Решение
Для решения данной задачи достаточной в метод создания заявки просто передать номер телефона. IntraDesk по номеру телефона сам попытается найти Заявителя и от его имени создать заявку. Если по телефону клиент (пользователь клиента, сотрудник) не был найден, то заявка все равно будет создана, но заявитель указан не будет. Подробный пример простейшего создания заявки написан здесь. Краткий пример c указанием номера телефона:
Тело запроса:
{
"blocks": {
"name": "{\"value\":\"Телефонный звонок.\"}",
"userphonenumber": "{\"value\":\"+78001234567\"}",
"description": "{\"value\":\" Запись разговора https://asterisk.ru/records/uid_разговора\"}"
}
}
Задача
Получим список полей для типа заявок «Общие» - id = 88
Решение
GET https://apigw.intradesk.ru/taskform/api/tasktypes/88/fields?ApiKey=65247DBDE14C45A6A275DC1FC0
Ответ сервера:
[
{
"id": 1228, // идентификатор поля
"taskTypeId": 88, // идентификатор типа заявки. Тот, который был указан в строке запроса
"alias": "description", // алиас поля. Именно это название нужно использовать для получения и установки значения поля. Для всех дополнительных полей название алиаса начинается с "addfield"
"type": 7, // тип поля. 1 - число, 2 - строка, 3 - выпадающий список, 4 - дата/время, 5 - да/нет, 7 - текст
"name": "Описание", // название поля
"isAdditional": false, // признак. true - доп. поле, false - основное поле
"description": "Подсказка Описание", //описание поля
"sortOrder": null // текстовое поле для сортировки полей на форме
}
{
"id": 1285,
"taskTypeId": 88,
"alias": "addfield_tekstText",
"type": 7,
"name": "текст",
"isAdditional": true,
"description": null,
"sortOrder": "0000000003"
},
{
"id": 1287,
"taskTypeId": 88,
"alias": "addfield_da_netBoolean",
"type": 5,
"name": "да_нет",
"isAdditional": true,
"description": null,
"sortOrder": "0000000004"
},
{
"id": 1284,
"taskTypeId": 88,
"alias": "addfield_strokaString",
"type": 2,
"name": "KPANCH_строка",
"isAdditional": true,
"description": null,
"sortOrder": "0000000002"
},
{
"id": 1286,
"taskTypeId": 88,
"alias": "addfield_dataDateTime",
"type": 4,
"name": "дата",
"isAdditional": true,
"description": null,
"sortOrder": "00000000031"
},rtOrder": null
},
{
"id": 1283,
"taskTypeId": 88,
"alias": "addfield_chisloNumber",
"type": 1,
"name": "число",
"isAdditional": true,
"description": "12",
"sortOrder": "0000000001"
}
]
Полная документация к методу в формате swagger (TaskForm API)
Задача
Установим значение полю "Стоимость" с алиасом "addfield_stoimostNumber" равное 10.
Номер изменяемой заявки равен 31 (это значение получили в ответе на запрос создания заявки).
Доступные для изменения поля заявок можно получить по типу заявки см. в статье «Получение списка полей заявки»
Решение
PUT https://apigw.intradesk.ru/changes/tasks?ApiKey=65247DBDE14C45A6A275DC1FC0
Тело запроса:
{
"number": 31,
"blocks": {
"addfield_stoimostNumber": "{\"value\":10}"
}
}
Ответ сервера:
{
"Id": 4702781, //идентификатор заявки
"Number": 31, //номер заявки
"UpdatedAt": "2021-08-11T12:55:30.0266429Z", //дата последнего изменения заявки
"Messages": {}, //оповещения, возникшие при обновлении заявки
"ErrorMessage": null,
"TaskProcessType": 1,
"Rules": {},
"Fields": {
"additionaldata": null,
"attachments": [ // массив данных о прикрепленных файлах
{
"Id": "611394333b320b000188066b", //идентификатор файла
"Name": "page.html", //имя файла
"ContentType": "text/html", //тип файла
"Size": 1352, //размер файла
"Target": 20, //перечисление к чему относится файл. 20-описание, 30-комментарий,40-прикрепленный файл
"UploadedAt": "2021-08-11T09:11:15.9360000Z", //дата загрузки
"UploadedBy": "Супервизор1 admin " //пользователь, загрузивший файл
}
],
"comment": "Поднял приоритет.", //последний комментарий
"createdchannel": "web", //способ, по которому была создана заявка. Web – заявка создана через web-интерфейс приложения
"description": "Не срабатывает электронный ключ от двери", //описание заявки
"executor": {
"UserId": null, //идентификатор пользователя-исполнителя
"GroupId": 176286 //идентификатор группы-исполнителя
},
"executornotlist": [ //идентификаторы пользователей-исполнителей, которые ранее были назначены на текущую заявку
583438,
583427
],
"executornotgrouplist": [], //идентификаторы пользовательских групп-исполнителей, которые ранее были назначены на текущую заявку
"initiator": {
"UserId": 583427, //идентификатор заявителя
"GroupId": null //идентификатор группы(компании)-заявителя
},
"macros": null,
"name": "Требуется ремонт дверного замка", //название заявки
"observerlist": null, //массив идентификаторов пользователей-наблюдателей
"observergrouplist": null, //массив идентификаторов пользовательских групп-наблюдателей
"priority": 75707, //идентификатор приоритета
"privateattachments": [], //массив приватных приложенных файлов
"privatecomment": null, //приватный комментарий
"rulesescalations": null, //идентификаторы правил эскалации
"service": {
"Path": "115434/115438/", //путь сервиса (включая родительские сервисы)
"AdministratorsSettingId": 53035 //идентификатор настроек администраторов сервиса
},
"status": 120570, //идентификатор статуса заявки
"tags": [ //массив идентификаторов тегов
279504
],
"taskpath": {
"TaskBranchId": "ba8bc1cb-95f3-4d12-9829-66622ea57f1c", //идентификатор дерава заявок. Если заявка является дочерней или родительской относительно другой заявки
"TaskNumberPathParent": "31/" //номер заявки в дереве
},
"tasktype": 36283, //идентификатор типа заявки
"updatedchannel": "api", //способ, по которому была обновлена заявка. Api – заявка обновлена через api
"workflow": 26454, //идентификатор бизнес-процесса
"clientid": null,
"closedat": "2021-03-17T09:04:00.0000000Z", //дата закрытия заявки, т.е. перевоза в статус с признаком «конечный»
"reactiondatefact": "2021-03-17T09:04:00.0000000Z", //фактическое время реагирования
"resolutiondatefact": null, //фактическое время решения
"sla": null, //идентификатор SLA
"reactiondateplan": null, //плановое время реагирования
"resolutionleftminutes": null, //оставшееся на выполнение время
"isreactionexpired": false, //признак того, что время реакции превышено
"resolutiondateplan": null, //плановое время решения
"isresolutionexpired": false, //признак того, что время решения превышено
"addfield_ stoimostNumber ": 10, //доп.поле «Стоимость», то, которое было обновлено в этом запросе
"createdat": "2021-03-17T09:04:31.1095880Z", //дата создания
"createdby": 583427, //идентификатор пользователя, создавшего заявку
"updatedat": "2021-08-11T12:55:30.0266429Z", //дата последнего обновления
"updatedby": "customer_19359" //идентификатор пользователя, обновившего заявку
},
"UsersDictionary": { //массив пользователей связанных с заявкой
"583427": "Супервизор1 admin "
},
"UserGroupsDictionary": { //массив групп пользователей связанных с заявкой
"176286": "ГруппаМенежд1"
},
"TaskHistoryUid": "03697c01-0f93-4ce9-9b9a-1e0b10794fe1",
"IsSuccess": true, //признак того, что запрос прошел успешно
"Message": null,
"ErrorType": null,
"CorrelationId": "38cbe3ae-2e36-42d1-afcb-2e02c53804b8",
"Data": null
}
Полная документация к методу в формате swagger (ChangeService API)
Задача
Получим заявки, связанные с заявкой №4453300
Решение
GET https://apigw.intradesk.ru/taskform/api/taskrelations/4453300?ApiKey=65247DBDE14C45A6A275DC1FC0
Ответ сервера:
[{
"id": 136998, // идентификатор дерева заявок
"updatedAt": "2021-03-17T10:52:27.5054670Z", //дата обновления
"tree": {
"number": 4453300, //номер заявки (родительской)
"children": [{ //список дочерних заявок
"number": 4455783, //номер заявки (дочерней)
"children": []
}
]
}
}
]
Для получения подробной информации по каждой заявке нужно использовать запрос описанный в статье «Получение списка заявок», указывая фильтр по номеру заявки "tasknumber".
Полная документация к методу в формате swagger (TaskForm API)
Задача
Укажем, что заявка с номером 44 является дочерней к заявке с номером 46.
Решение
PUT https://apigw.intradesk.ru/changes/taskrelations?ApiKey=65247DBDE14C45A6A275DC1FC0
Тело запроса:
{
"Tree": {
"Number": 46, //номер заявки, которая выше в структуре дерева
"Children": [ //список дочерних заявок
{
"Number": 44, //номер(а) заявок, которые ниже по структуре дерева
"Children": [] //для дочерней заявки тоже можно указать свои дочерние
}
]
}
}
Ответ сервера:
{
"Id": 156682, // идентификатор созданного дерева заявок
"UpdatedAt": "2021-07-29T12:00:11.1399774Z", //время создания
"IsSuccess": true,
"Message": null,
"ErrorType": null,
"CorrelationId": "00000000-0000-0000-0000-000000000000",
"Data": null
}
Для того чтобы "связать" в дереве сразу несколько заявок, нужно отправить аналогичный запрос в "Tree" указать все нужные связи.
Полная документация к методу в формате swagger (ChangeService API)
Задача
Получим информацию о пользователе Иванове Петре Семеновиче, id которого равен 583427
Решение
GET https://apigw.intradesk.ru/taskform/api/users/583427/info/short?ApiKey=65247DBDE14C45A6A275DC1FC0
Ответ сервера:
{
"userType": 10, //тип пользователя, 10 – сотрудник, 20 – клиент
"id": 583427, // идентификатор пользователя
"name": "Иванов Петр Семенович ", // имя пользователя, состоит из фамилии, имени и отчества
"email": "ips@intra5.ru", // электронная почта
"additionalEmails": "[\"mysupport@mail.ru\"]", // массив дополнительных адресов электронных почт
"phoneNumbers": [ // массив телефонных номеров
{
"phoneNumber": "+78001234567", //номер телефона
"default": true, //признак того, что это основной номер пользователя
"phoneExt": null, //добавочный номер
"phoneInternational": "+7 800 123-45-67" //номер телефона в международном формате
},
{
"phoneNumber": "+78009876543",
"default": false,
"phoneExt": null,
"phoneInternational": "+7 800 987-65-43"
}
],
"activeTaskNumber": null, // номер активной заявки, если такая есть в данный момент
"activeTaskStartTime": null, // начало выполнение активной заявки, если такая есть
"groups": "[{\"id\" : 176287, \"name\" : \"Администраторы\", \"type\" : 30, \"isdefault\" : false}]", //сериализованный массив объектов, описывающий в каких группах состоит пользователь
"tags": " Информирование, Массовый инцидент ", //строка с тегами пользователя
"userFields": "[{\"Name\": \"Режим\", \"Type\": 3, \"Value\": \"2\"}]", //сериализованный массив объектов, описывающий значения настраиваемых полей пользователей
"emailConfirmed": false //признак, подтверждена ли электронная почта
}
Полная документация к методу в формате swagger (TaskForm API)
Задача
Получим информацию о компании "Второе бюро", Id которой равен 583427
Решение
GET https://apigw.intradesk.ru/taskform/api/clientcompanys/31972?ApiKey=65247DBDE14C45A6A275DC1FC0
Ответ сервера:
{
"id": 176282, // идентификатор компании
"name": "Второе бюро", //имя компании
"description": "", //описание компании
"additionalInfo": "дополнительная информация", //дополнительная информация
"domains": "[\"maintech\"]", //массив доменов компании
"address": "ул. Ленина 30б", //адрес компании
"web": "", //сайт компании
"phoneNumbers": [ //массив телефонных номеров
{
"phoneNumber": "+78001234567", //номер телефона
"default": true, //признак того, что это основной номер компании
"phoneExt": null, //добавочный номер
"phoneInternational": "+7 800 123-45-67" //номер телефона в международном формате
},
{
"phoneNumber": "+74992342134",
"default": false,
"phoneExt": null,
"phoneInternational": "+7 499 234-21-34"
}
],
"email": "", // электронная почта
"tags": "Информирование", //теги, которыми отмечена компания
"companyFields": "[{\"Name\": \"Режим\", \"Type\": 3, \"Value\": \"two\"}]", //значения доп. полей компании
"groupType": 10, //тип группы. 10 – компания(клиентская), 20 – группа сотрудников
"users": [ //пользователи в текущей группе
{
"id": 583440,
"name": "Иванов Николай Алексеевич "
}
]
}
Полная документация к методу в формате swagger (TaskForm API)
Задача
Установим пользователя-исполнителя с id равным 583437 и группу исполнителей с id равным 176284.
Номер изменяемой заявки = 35 (это значение получили в ответе на запрос создания заявки)
Решение
PUT https://apigw.intradesk.ru/changes/tasks?ApiKey=65247DBDE14C45A6A275DC1FC0
Тело запроса:
{
"number": 35,
"blocks": {
"executor": "{\"value\":{\"userid\":583437,\"groupid\":176284}}"
}
}
Ответ сервера:
Получаем статус ответа 200, значит изменение прошло успешно. В теле ответа поступили данные о заявке.
Полная документация к методу в формате swagger (ChangeService API)
Задача
Получим исполнителей, имя которых содержит подстроку «менедж», за исключение группы с id 61276 и за исключением пользователя с id 583432
Решение
GET https://apigw.intradesk.ru/hints/api/hints/executors?ApiKey=65247DBDE14C45A6A275DC1FC0&str=мен&excludeUserIds=583432&excludeGroupIds=61276
Ответ сервера:
[
{
"id": 583433, //идентификатор пользователя
"name": "Менеджер ночной смены", //имя пользователя
"hasgroupid": false, //признак того, что сотрудник состоит в группе, указанной в параметре "groupId"
"highlight": "[{\"field\":\"searchstring.standard\",\"value\":[\" Менеджер ночной смены nm@intra5\"]}]",
"type": 1, //тип, 1 - пользователь, 2 - группа
"isclient": false,
"isArchived": false //признак того, что пользователь удален (в архиве)
},
{
"id": 176286, //идентификатор группы
"name": "Группа Менеждеров", //имя группы
"hasgroupid": false, //признак того, что группа указана в параметре "groupId"
"highlight": "[{\"field\":\"searchstring.standard\",\"value\":[\"Группа Менеджеров \"]}]",
"type": 2, //тип, 1 - пользователь, 2 - группа
"isclient": false,
"isArchived": false //признак того, что группа удалена (в архиве)
}
]
Полная документация к методу в формате swagger (Hints API)
Другие возможные параметры
"str" - поисковая строка
"excludeUserIds" - в результатах поиска исключает указанные идентификаторы пользователей
"excludeGroupIds" - в результатах поиска исключает указанные идентификаторы групп сотрудников
"groupId" - идентификатор группы текущего назначенного Исполнителя пользователя (для поиска пользователей только внутри этой группы)
"top" - количество результатов в выдаче. По умолчанию 7
Задача
Получим жизненный цикл заявки с id = 4703096, который отсортирован по убыванию, первые 15 записей, в заданном промежутке дат, а события, произошедшие на заявке: добавление комментария (50), смена исполнителя (30) или смена статуса (10)
Решение
Ответ сервера:
{
"data": [
{
"id": 1055669, // идентификатор записи
"eventat": "2021-03-15T11:54:36.9286522Z", //дата события
"lifetimetype": 20, //тип события. 10 - заявка создана; 20 - заявка изменена; 30 - заявка эскалирована
"userid": 7387, // идентификатор пользователя, автора изменений
"username": "Иванова Настя", //имя пользователя, автора изменений
"events": {
"data": [
{
"isautomatic": false,
"blockname": "comment", //название блока заявки, в котором произошли изменения
"type": 50, //тип произошедшего на заявке события
"commentupdatedate": null,
"stringvalue": "В правой области карточки заявки появился скролл, причем он отображается наполовину. Его нужно либо скрыть совсем (как сейчас на Prod), либо отображать целиком", //поле для хранения измененного строкового значения
"datevalue": null, //поле для хранения измененного значения даты
"entityvalue": null, //поле для хранения измененного значения сложного типа, например, исполнителя заявки
"entitylanguagevalue": null,
"additionalfieldvalue": null
},
{
"isautomatic": false,
"blockname": "executor",
"type": 30,
"commentupdatedate": null,
"stringvalue": null,
"datevalue": null,
"entityvalue": {
"valuenew": {
"id": 8452,
"name": "Сидорин Иван"
},
"valueold": {
"id": 10037,
"name": "Крутов Кирилл"
}
},
"entitylanguagevalue": null,
"additionalfieldvalue": null
}
],
"count": 2
},
"correlationid": "e72ffca5-37d5-e35b-70a1-9d21c53dffee",
"uid": "be956567-45e9-4ce7-b4d4-b444df8e8e88"
},
{
"id": 1048384,
"eventat": "2021-03-11T12:41:30.3355437Z",
"lifetimetype": 20,
"userid": 0,
"username": "Система",
"events": {
"data": [
{
"isautomatic": false,
"blockname": "status",
"type": 10,
"commentupdatedate": null,
"stringvalue": null,
"datevalue": null,
"entityvalue": null,
"entitylanguagevalue": {
"valuenew": {
"id": 96,
"name": {
"ru": "ВыполнStage",
"en": null
}
},
"valueold": {
"id": 83,
"name": {
"ru": "ВыполнTest",
"en": null
}
}
},
"additionalfieldvalue": null
}
],
"count": 1
},
"correlationid": "9981080e-293a-4cd6-85fe-8e1eece66238",
"uid": "303f6bff-0726-4c45-99eb-23c9d051c5d5"
},
]
}
Полная документация к методу в формате swagger (TaskHistory API)
Другие возможные параметры
sortDirection - не обязательный; возможные значения Asc, Desc, по умолчанию Desc
top - не обязательный; по умолчанию 100
dateStart, dateEnd - не обязательны, используются для фильтрации по дате; если указаны, возвращают записи из истории с датой больше dateStart и меньше dateEnd
events - тип произошедшего на заявке события, возможно несколько значений через амперсанд. По умолчанию - все.
Доступные события для фильтрации:
ChangeStatus = 10,
ChangePriority = 20,
ChangeRating = 25,
ChangeExecutor = 30,
ChangeExecutorGroup = 40,
ChangeAdditionalData = 45,
AddComment = 50,
AddPrivateComment = 55,
AddObserver = 60,
AddCoordinator = 61,
AddObserverGroup = 65,
DeleteObserver = 70,
DeleteObserverGroup = 75,
AddFile = 80,
AddPrivateFile = 85,
DeleteFile = 90,
DeletePrivateFile = 95,
AddTag = 100,
AddAsset = 105,
DeleteTag = 110,
DeleteAsset = 115,
ChangeResolutionDatePlan = 120,
ChangeResolutionDateFact = 125,
ChangeResolutionLeftMinutes = 126,
ChangeReactionDatePlan = 130,
ChangeReactionDateFact = 135,
ResolutionTimeExpired = 136,
ReactionTimeExpired = 137,
ChangeClosedAt = 138,
ChangeService = 140,
ChangeTaskType = 150,
ChangeInitiator = 160,
ChangeClientId = 161,
ChangeInitiatorGroup = 165,
ChangeAdditionalField = 170,
ChangeCreatedAt = 180,
ChangeUpdatedAt = 185,
ChangeCreatedBy = 190,
ChangeUpdatedBy = 195,
ChangeName = 200,
ChangeDescription = 205,
ChangeWorkflow = 210,
AddExecutorNot = 220,
AddExecutorNotGroup = 225,
DeleteExecutorNot = 230,
DeleteExecutorNotGroup = 235,
ChangeSla=240,
ChangeLifetime = 250,
ChangeCreatedChannel = 260,
ChangeUpdatedChannel = 270,
Archive = 280,
AddedCoordinates = 290,
ExecutedMacrosOnTask = 300,
ChangeIsMassIncidentActive = 310,
ChangeMassIncident = 320,
ChangeCoordination = 330,
ChangePriorityCriticality = 340,
ChangePriorityInfluence = 350,
TaskEscalation = 400
Задача
Получим список переходов статусов, кнопок для перевода статуса и макросы
Решение
POST https://apigw.intradesk.ru/rules/api/rules/?ApiKey=65247DBDE14C45A6A275DC1FC0
Тело запроса:
{
"input":{
"p_workflow":43,
"p_tasktype":68,
"p_status":80,
"p_tag":[
4497,
14760,
14999
],
"p_service":"1985/1707/",
"p_service_settingadminid":123,
"p_priority":31,
"p_initiator":9116,
"p_initiatorgroup": 3242,
"p_observer":[
9116
],
"p_observergroup":[
3197
],
"p_executor":9687,
"p_executorgroup":2356,
"p_creator":9116,
"p_usagecondition":[
4
]
},
"chainName":"EditTaskFormChain"
}
Ответ сервера:
{
"r_accesslist":[
{
"blockNames":[ // список названий полей для которых нужно использовать указанное ниже право доступа. Если для поля правило не найдено, то нужно использовать полномочия из правила где указана "*"
"tasktype"
],
"access":3, // 1 - запрещено, 2 - просмотр, 3 - изменение, 4 - не показывать на карточке, 60 - управление своими трудозатратами
"required":false, //поля, перечисленные в blockNames, обязательны для заполнения
"validationData":null,
"ruleId":"92"
},
{
"blockNames":[
"name"
],
"access":3,
"required":false,
"validationData":null,
"ruleId":"516"
},
{
"blockNames":[
"*"
],
"access":3,
"required":false,
"validationData":null,
"ruleId":null
}
],
"r_tostatus":[ //список статусов в которые можно перевести заявку
{
"statusId":73, //идентификатор статуса
"buttonName":"Открыта", //название для кнопки перехода
"buttonLegend":"", //подсказка, всплывающая на кнопке
"validationData":null,
"locationButton":20, //расположение кнопки. 20 - в меню заявки, 30 - вынести на панель, 10 - не показывать
"ruleId":"1235", //идентификатор правила
"duplicatebuttononpanel":false //признак, дублировать ли кнопку на панель
},
{
"statusId":84,
"buttonName":"Вынести на обработку",
"buttonLegend":"",
"validationData":null,
"locationButton":30,
"ruleId":"1239",
"duplicatebuttononpanel":true
}
],
"r_macroslist":[ //список макросов
{
"ruleId":"379", //идентификатор правила
"name":"Вернуть в \"открыта\" !", //название макроса
"description":null, //подсказка, всплывающая на кнопке
"duplicatebuttononpanel":true, //признак, дублировать ли кнопку на панель
"type":10, //тип макросв. 10 - произвольный макрос. 20 - для взятия в работу, 30 - для завершения выполнения работ по заявки
"forcesavetask":true, //признак автоматического сохранения заявки
"forcetostatus":73, //идентификатор статуса, в который будет переведена заявка
"data":{
"r_status_bymacros":{
"data":"73", //Id статуса в который нужно перевести заявку
"replace":true
}
}
}
]
}
Полная документация к методу в формате swagger (Rules API)
Другие возможные параметры
Тело запроса:
{
"input":{
"p_workflow", //число, идентификатор бизнес-процесса заявки, для которой получаем правила
"p_tasktype", // число, идентификатор типа заявки
"p_status", // число, идентификатор статуса заявки
"p_tag":[ ], //массив, идентификаторы тегов заявки
"p_service", //строка, путь сервиса заявки
"p_service_settingadminid", // число, идентификатор настройки админов сервиса (запрос дерева возвращает этот Id для каждого сервиса)
"p_priority", // число, идентификатор приоритета
"p_initiator", // число, идентификатор заявителя заявки
"p_initiatorgroup", // число, идентификатор компании заявителя
"p_observer":[ ], //массив, идентификаторы наблюдателей заявки
"p_observergroup":[ ], //массив, идентификаторы групп наблюдателей заявки
"p_executor", // число, идентификатор исполнителя заявки
"p_executorgroup", // число, идентификатор группы исполнителей заявки
"p_creator", // число, идентификатор создателя заявки
"p_usagecondition":[ ]
// перечисление, 4 - если заявка уже создана, 3 - если заявку только создаём
},
"chainName", // строка, "EditTaskFormChain" - если заявка уже существует, "CreateTaskFormChain" - если заявку только создаём
}
Задача
Получим трудозатраты для заявки с id равным 4703096
Решение
GET https://apigw.intradesk.ru/taskform/api/taskexpense/4703096?ApiKey=65247DBDE14C45A6A275DC1FC0
Ответ сервера:
[{
"id": 1905733, //идентификатор записи о списанных трудозатратах
"userId": 390724, //идентификатор пользователя, выполнявшего работу
"userName": "Васильев Александр", //имя пользователя, выполнявшего работу
"date": "2021-03-15T00:00:00.0000000Z", //дата выполнения работ
"minutes": 599, //списанное время (в минутах)
"comment": "Автоматически", //комментарий
"createdAt": "2021-03-15T06:58:55.6534430Z", //дата создания записи
"createdBy": "Система", //автор записи
"updatedAt": "2021-03-15T06:58:55.6534430Z", //дата изменения записи
"updatedBy": "Система", //автор изменения записи
"isArchived": false, //признак, удалена ли запись
"taskExpenseLog": []
}, {
"id": 1905732,
"userId": 390724,
"userName": "Васильев Александр",
"date": "2021-03-14T00:00:00.0000000Z",
"minutes": 1440,
"comment": "Автоматически",
"createdAt": "2021-03-15T06:58:55.6534360Z",
"createdBy": "Система",
"updatedAt": "2021-03-15T06:58:55.6534360Z",
"updatedBy": "Система",
"isArchived": false,
"taskExpenseLog": []
}, {
"id": 1905731,
"userId": 390724,
"userName": "Васильев Александр",
"date": "2021-03-13T00:00:00.0000000Z",
"minutes": 1440,
"comment": "Автоматически",
"createdAt": "2021-03-15T06:58:55.6534290Z",
"createdBy": "Система",
"updatedAt": "2021-03-15T06:58:55.6534290Z",
"updatedBy": "Система",
"isArchived": false,
"taskExpenseLog": []
}, {
"id": 1905730,
"userId": 390724,
"userName": "Васильев Александр",
"date": "2021-03-12T00:00:00.0000000Z",
"minutes": 428,
"comment": "Автоматически",
"createdAt": "2021-03-15T06:58:55.6534180Z",
"createdBy": "Система",
"updatedAt": "2021-03-15T06:58:55.6534180Z",
"updatedBy": "Система",
"isArchived": false,
"taskExpenseLog": []
}
]
Полная документация к методу в формате swagger (TaskForm API)
Задача
Отправим файл на сервер, получим его идентификатор и прикрепим этот файл к описанию новой заявки.
Решение
Для примера будем использовать приложение Postman. Выполним необходимые настройки и отправим файл.
POST https://apigw.intradesk.ru/files/api/tasks/0/files/target/Description?ApiKey=65247DBDE14C45A6A275DC1FC0
Ответ сервера:
[
{
"id":"604b6c742d34af0001f26723", //идентификатор загруженного файла
"entityType":"task", //тип объекта, к которому приложен файл. Task – заявка, kb - статья базы знаний
"entityId":0, //идентификатор объекта, к которому прикрепляется файл. Для отдельно загружаемых файлов – 0.
"name":"ButAtt (2).jpg", //имя файла
"contentType":"image/png", //тип файла
"size":15581, //размер файла в байтах
"target":20, //куда прикладывается файл. 20 – комментарий, 30 – описание, 40 – доп.поле с типой «файл»
"uploadedAt":"2021-03-12T13:28:20.435Z", //дата загрузки
"uploadedBy":"Супервизор" //автор загрузки
}
]
Далее создаем заявку, прикладываем отправленные на сервер файлы.
POST https://apigw.intradesk.ru/changes/v3/tasks?ApiKey=65247DBDE14C45A6A275DC1FC0
Тело запроса:
{
"blocks":{
"tasktype":"{\"value\":36283}",
"name":"{\"value\":\"Почистить снег\"}",
"priority":"{\"value\":75707}",
"description":"{\"value\":\"Ночью выпало много снега, нужно почистить двор 25 дома\"}",
"service":"{\"value\":\"115434/115438/\"}",
"attachments":"{\"value\":{\"addFiles\":[{\"name\":\"ButAtt.jpg\",\"id\":\"604b6c742d34af0001f26723\",\"contentType\":\"image/jpeg\",\"size\":43558,\"target\":20,\"uploadedAt\":\"2021-03-12T13:28:20.435Z \",\"uploadedBy\":\" Супервизор \"}],\"deleteFileIds\":[]}}"
}
}
Ответ сервера:
Получаем статус-код 201 (успешное создание) и данные о только что созданной заявке
Далее можем зайти на клиентский портал и убедиться, что была создана новая заявка, а к её описанию прикреплен файл
Полная документация к методу в формате swagger (Files API)
Другие возможные параметры
Для загрузки файлов для описания:
POST https://apigw.intradesk.ru/files/api/tasks/0/files/target/Description?ApiKey=65247DBDE14C45A6A275DC1FC0
Нужно использовать multipart-запросы.
Все загруженные файлы нужно указать в запросе создания/изменения заявки в теле, в блоке "attachments". Выполнить запрос к API для создания/изменения заявок. Подробнее о создании и изменении заявок в статьях.
POST https://apigw.intradesk.ru/changes/v3/tasks- для новых заявок
PUT https://apigw.intradesk.ru/changes/v3/tasks - для существующих заявок
Задача
Добавим комментарий и прикрепим файл к заявке номер 130.
Решение
Для примера будем использовать приложение Postman. Выполним необходимые настройки для отправки файла для заявки на сервер. Её id равен 4732344.
POST https://apigw.intradesk.ru/files/api/tasks/4732344/files/target/Comment?ApiKey=65247DBDE14C45A6A275DC1FC0
Ответ сервера:
[
{
"id":"611d0061bb982c0001b3ddf5", //идентификатор загруженного файла
"entityType":"task", //тип объекта, к которому приложен файл. Task – заявка, kb - статья базы знаний
"entityId":4732344, //идентификатор объекта, к которому прикрепляется файл.
"name":" ButAtt (2).jpg ", //имя файла
"contentType":"image/png", //тип файла
"size":15581, //размер файла в байтах
"target":30, //куда прикладывается файл. 20 – комментарий, 30 – описание, 40 – доп.поле с типой «файл»
"uploadedAt":"2021-08-18T12:43:14.147Z ", //дата загрузки
"uploadedBy":"customer_19359" //автор загрузки
}
]
Все загруженные для заявки файлы нужно указать в запросе на изменение, сериализовав массив в строку и разместив в блоке "attachments".
Добавим файлы к заявке.
PUT https://apigw.intradesk.ru/changes/v3/tasks?ApiKey=65247DBDE14C45A6A275DC1FC0
Тело запроса:
{
"number": 130,
"blocks":{
"comment":"{\"value\":\"Посмотрите приложенные изображения.\"}",
"attachments":"{\"value\":{\"addFiles\":[{\"name\":\"ButAtt.jpg\",\"id\":\"611d0061bb982c0001b3ddf5\",\"contentType\":\"image/jpeg\",\"size\":43558,\"target\":30,\"uploadedAt\":\"2021-08-18T12:43:14.147Z\",\"uploadedBy\":\"customer_19359\"}],\"deleteFileIds\":[]}}"
}
}
Ответ сервера:
Видим статус-код 200 (успех) и данные об измененной заявке
Зайдя на клиентский портал, видим новый комментарий с приложенным файломе
Полная документация к методу в формате swagger (Files API)
Другие возможные параметры
Для загрузки файлов для комментариев:
POST https://apigw.intradesk.ru/files/api/tasks/{идентификатор заявки}/files/target/Comment?ApiKey=65247DBDE14C45A6A275DC1FC0
Нужно использовать multipart-запросы.
Для изменения заявки:
PUT https://apigw.intradesk.ru/changes/v3/tasks?ApiKey=65247DBDE14C45A6A275DC1FC0. Подробнее в статье «Изменение заявки»