Получить историю изменений конкретного поля в Issue

Здравствуйте! Как с помощью REST API получить историю изменений некоторого конкретного поля в Issue и только его?

То, что я смог найти (например, в https://www.jetbrains.com/help/youtrack/devportal/resource-api-issues-issueID-activitiesPage.html), возвращает историю изменений полей из некоторой категории (категорий), но я бы хотел получить это именно для конкретного заданного поля (или полей), т.к. прочие часто изменяющиеся поля сильно мешают в ответе: их приходится отфильтровывать и, что самое неудобное, - тратить много времени на получение очередных страниц с "мусором".

1
5 comments

Здравствуйте!

К сожалению, возможности получить историю конкретного поля через REST API у нас нет. Вы можете проголосовать за реквест на добавление фильтрации в истории задачи в нашем трекере (он включает в себя и возможность фильтрации через REST API).

0

Спасибо, Алиса! Проголосовал.

У меня, после нескольких успешных, но тормозных попыток чтения страниц с использованием afterCursor, запрос падал с 500-й ошибкой для особо богатой на события Issue. Я нашел способ избавиться от использования afterCursor, вычисляя и дробя интервал истории на более мелкие куски. Падать перестало, но работает куда медленнее, чем это было в старом REST API. Здесь возможность фильтрации сразу по конкретному полю была бы очень кстати. Это и побудило обратиться сюда.

0

@Alexey Radionov
Понимаю Вас, в задачах с большой историей действительно было бы удобно иметь возможность фильтрации ответа.
А как Вы сейчас делите историю на куски? С помощью $top?

0

Нет. Пробовал с $start и $top в

/api/issues/{issueID}/activities

- тоже падает с 500-й при очередной итерации. 

Сделал так: для заданного диапазона start..end я читаю первую страницу по

/api/issues/{issueID}/activitiesPage

не запрашивая afterCursor, но запрашивая hasAfter. Если hasAfter = false, то все прочитано. 

Иначе, после  получения страницы, у меня есть набор timeStamp из пришедших Activities. Я беру максимальный из них и получаю новую левую границу для диапазона newStart..end. Если на вдаваться в граничные случаи, то далее этот новый диапазон делится пополам и для каждой из половинок повторяется вышеописанное. В результате получается, что границы диапазона уменьшаются до тех пор, пока их содержимое не поместится полностью в страницу.  Общее количество запросов отсюда не особо возрастает (ведь и так, и так все читаем постранично), но зато получается уйти от использования курсора и есть возможность распараллеливания чтения половинок, что значительно ускоряет весь этот костыль :)

0

Алексей,

Извините за долгое ожидание ответа.

Подскажите, пожалуйста, у Вас YouTrack Standalone или InCloud? Если Standalone, то можете, пожалуйста, загрузить логи инстанса на https://uploads.jetbrains.com? Если InCloud - скажите, пожалуйста, имя инстанса. Хочу проверить логи и попробовать воспроизвести ошибку, возможно, возникшая у Вас 500 ошибка - это баг.

Заранее спасибо!

0

Please sign in to leave a comment.