Я использую Chrome Advanced Rest Client для тестирования API AtTask. Я узнал много вещей, но также получил неожиданные результаты. Последнее происходит при добавлении новых записей в календарь времени отключения AtTask.
Я могу легко добавить выходной в календарь. Я использую метод POST со следующим URL:
https://COMPANY.attasksandbox.com/attask/api/v4.0/resvt?sessionID=SESSIONIDGOESHERE&userID=USERIDGOESHERE&startDate=2014-11-24T00:00:00&endDate=2014-11-28T23:59:59
Это означает, что все дни с 11/24 по 11/28 выходной. Отлично, пока. Проблема в том, что он удаляет все другие записи об отключении для указанного пользователя. Я не выпускаю УДАЛИТЬ, поэтому я не понимаю, почему записи удаляются. Что еще более важно, я не понимаю, как предотвратить их удаление.
Еще раз спасибо заранее.
Тайм-аут в attask сохраняется как коллекция, и когда вы вносите изменения в коллекцию, она заменяет данные коллекции датой, указанной в обновлении. Вот почему ваш звонок удаляет существующие данные.
Чтобы добавить новый выходной, вам нужно сделать 2 звонка: 1, чтобы получить существующий выходной, и один, чтобы ввести данные обратно с новыми датами.
примечание — я использую свои собственные данные, поэтому даты немного отличаются для меня, но концепция та же
Ваш звонок будет
GET /api/resvt/search?userID=[userID]&fields=endDate,startDate,ID
который возвращает что-то вроде
{
"data": [
{
"ID": "547debb6000dea62198bd66b7c73e174",
"objCode": "RESVT",
"endDate": "2014-07-08T23:59:00:163-0600",
"startDate": "2014-07-08T00:00:00:163-0600"},
{
"ID": "547debb6000dea61b8c695ba24918fe8",
"objCode": "RESVT",
"endDate": "2014-02-13T23:59:00:329-0700",
"startDate": "2014-02-13T00:00:00:329-0700"}
]
}
Получив это, вы можете добавить новое время в коллекцию, используя команду updates для объекта пользователя. Обратите внимание, что вы предоставляете идентификаторы на время, которое уже есть в системе, и новое время, которое вы не предоставляете.
PUT /attask/api/v4.0/user/[userID]?&sessionID=[sessionID]&updates={reservedTimes: [ { "ID": "547debb6000dea62198bd66b7c73e174", "objCode": "RESVT", "endDate": "2014-07-08T23:59:00:163-0600", "startDate": "2014-07-08T00:00:00:163-0600" }, { "ID": "547debb6000dea61b8c695ba24918fe8", "objCode": "RESVT", "endDate": "2014-02-13T23:59:00:329-0700", "startDate": "2014-02-13T00:00:00:329-0700" }, { "objCode": "RESVT", "endDate": "2014-02-14T23:59:00:329-0700", "startDate": "2014-02-14T00:00:00:329-0700" } ] }
Это немного громоздко и сложно, но на данный момент это единственный способ сделать это в API.
Других решений пока нет …