Some Jira Cloud endpoint resources return paged results. This script is an example of how to handle these paged results.
import java.math.BigDecimal
import java.math.RoundingMode
// Specify what API to call
String url = "/rest/api/2/search"
Integer startAt = 0
Integer resultsPerPage = 50
// Make the API call
HttpResponse response = get(url)
.queryString("maxResults", resultsPerPage)
.queryString("startAt", startAt)
.asObject(Map)
assert response.status == 200
Map result = response.body
Integer totalIssues = (Integer) result.total
// confirm pagination is working
assert resultsPerPage == result.maxResults
// Save the search results as a Map
List issues = result.issues as List
// calculate total pages we expect, minus the one we're currently on
Integer totalPages = (totalIssues / resultsPerPage ).setScale(0, RoundingMode.UP).intValueExact()
Integer currentPage = 1
logger.info("Expecting ${totalPages} pages")
logger.info("Got page ${currentPage}")
while (currentPage < totalPages) {
startAt = resultsPerPage * currentPage
response = get(url)
.queryString("maxResults", resultsPerPage)
.queryString("startAt", startAt)
.asObject(Map)
assert response.status == 200
result = response.body
logger.info("Got page ${currentPage + 1}")
issues.addAll(result.issues)
currentPage += 1
}
logger.info("Got ${issues.size()} issues")
return issues