This is an automated email from the ASF dual-hosted git repository. rombert pushed a commit to branch feature/SLING-8337 in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-committer-cli.git
commit 0ec8b05aed0c59bd821bb94195e407ba67d1b29f Author: Robert Munteanu <[email protected]> AuthorDate: Fri Apr 19 17:40:12 2019 +0300 SLING-8337 - Create sub-command to manage the Jira update when promoting a release Initial work on read-only Jira release command. --- .../org/apache/sling/cli/impl/jira/Version.java | 6 + .../apache/sling/cli/impl/jira/VersionFinder.java | 134 +- .../cli/impl/release/PrepareVoteEmailCommand.java | 2 +- .../org/apache/sling/cli/impl/release/Release.java | 50 + .../sling/cli/impl/release/UpdateJiraCommand.java | 65 + .../sling/cli/impl/jira/VersionFinderTest.java | 93 + .../apache/sling/cli/impl/release/ReleaseTest.java | 15 + src/test/resources/README.md | 11 + .../jira/relatedIssueCounts/12329667.json | 6 + .../jira/relatedIssueCounts/12329844.json | 6 + src/test/resources/jira/versions.json | 2087 ++++++++++++++++++++ 11 files changed, 2447 insertions(+), 28 deletions(-) diff --git a/src/main/java/org/apache/sling/cli/impl/jira/Version.java b/src/main/java/org/apache/sling/cli/impl/jira/Version.java index 7cce8d5..173971e 100644 --- a/src/main/java/org/apache/sling/cli/impl/jira/Version.java +++ b/src/main/java/org/apache/sling/cli/impl/jira/Version.java @@ -44,4 +44,10 @@ public class Version { public void setRelatedIssuesCount(int relatedIssuesCount) { this.issuesFixedCount = relatedIssuesCount; } + + @Override + public String toString() { + + return "Version: " + name + " (id=" + id+", fixed issues="+issuesFixedCount+")"; + } } diff --git a/src/main/java/org/apache/sling/cli/impl/jira/VersionFinder.java b/src/main/java/org/apache/sling/cli/impl/jira/VersionFinder.java index a752be0..2c2be18 100644 --- a/src/main/java/org/apache/sling/cli/impl/jira/VersionFinder.java +++ b/src/main/java/org/apache/sling/cli/impl/jira/VersionFinder.java @@ -21,7 +21,9 @@ import java.io.InputStream; import java.io.InputStreamReader; import java.lang.reflect.Type; import java.util.List; -import java.util.stream.Collectors; +import java.util.Optional; +import java.util.function.Function; +import java.util.function.Predicate; import org.apache.http.client.methods.CloseableHttpResponse; import org.apache.http.client.methods.HttpGet; @@ -33,14 +35,25 @@ import org.osgi.service.component.annotations.Component; import com.google.gson.Gson; import com.google.gson.reflect.TypeToken; +/** + * Access the ASF <em>Jira</em> instance and looks up project version data. + */ @Component(service = VersionFinder.class) public class VersionFinder { - public Version find(String versionName) { + /** + * Finds a Jira version which matches the specified release + * + * @param release the release + * @return the version + * @throws IllegalArgumentException when no matching Jira release is found + */ + public Version find(Release release) { Version version; try (CloseableHttpClient client = HttpClients.createDefault()) { - version = findVersion(versionName, client); + version = findVersion( v -> release.getName().equals(v.getName()), client) + .orElseThrow( () -> new IllegalArgumentException("No version found with name " + release.getName())); populateRelatedIssuesCount(client, version); } catch ( IOException e ) { throw new RuntimeException(e); @@ -49,48 +62,115 @@ public class VersionFinder { return version; } - private Version findVersion(String versionName, CloseableHttpClient client) throws IOException { + /** + * Finds a version that is the successor of the version of the specified + * <tt>release</tt> + * + * <p> + * A successor has the same base name but a higher version. For instance, the + * <em>XSS Protection API 2.1.6</em> is succeeded by <em>XSS Protection API + * 2.1.8</em>. + * </p> + * + * <p> + * If multiple successors are found the one which is closest in terms of + * versioning is returned. + * </p> + * + * @param release the release to find a successor for + * @return the successor version, possibly <code>null</code> + * @throws IOException in case of communication errors with Jira + */ + public Version findSuccessorVersion(Release release) { Version version; - HttpGet get = new HttpGet("https://issues.apache.org/jira/rest/api/2/project/SLING/versions"); - get.addHeader("Accept", "application/json"); + + try ( CloseableHttpClient client = HttpClients.createDefault() ) { + Optional<Version> opt = findVersion ( + v -> { + Release releaseFromVersion = Release.fromString(v.getName()).get(0); + return + releaseFromVersion.getComponent().equals(release.getComponent()) + && new org.osgi.framework.Version(releaseFromVersion.getVersion()).compareTo(new org.osgi.framework.Version(release.getVersion())) > 0; + },client); + if ( !opt.isPresent() ) + return null; + version = opt.get(); + populateRelatedIssuesCount(client, version); + } catch ( IOException e ) { + throw new RuntimeException(e); + } + + return version; + } + + private Optional<Version> findVersion(Predicate<Version> matcher, CloseableHttpClient client) throws IOException { + + return doWithJiraVersions(client, reader -> { + Gson gson = new Gson(); + Type collectionType = TypeToken.getParameterized(List.class, Version.class).getType(); + List<Version> versions = gson.fromJson(reader, collectionType); + return versions.stream() + .filter( v -> v.getName().length() > 1) // avoid old '3' release + .filter(matcher) + .sorted(VersionFinder::compare) + .findFirst(); + }); + } + + protected <T> T doWithJiraVersions(CloseableHttpClient client, Function<InputStreamReader, T> parserCallback) throws IOException { + HttpGet get = newGet("project/SLING/versions"); try (CloseableHttpResponse response = client.execute(get)) { try (InputStream content = response.getEntity().getContent(); InputStreamReader reader = new InputStreamReader(content)) { if (response.getStatusLine().getStatusCode() != 200) throw new IOException("Status line : " + response.getStatusLine()); - Gson gson = new Gson(); - Type collectionType = TypeToken.getParameterized(List.class, Version.class).getType(); - List<Version> versions = gson.fromJson(reader, collectionType); - List<String> filter = Release.fromString(versionName) - .stream() - .map( Release::getName ) - .collect(Collectors.toList()); - version = versions.stream() - .filter(v -> filter.contains(v.getName())) - .findFirst() - .orElseThrow( () -> new IllegalArgumentException("No version found with name " + versionName)); + return parserCallback.apply(reader); } } - return version; } - - private void populateRelatedIssuesCount(CloseableHttpClient client, Version version) throws IOException { - - HttpGet get = new HttpGet("https://issues.apache.org/jira/rest/api/2/version/" + version.getId() +"/relatedIssueCounts"); - get.addHeader("Accept", "application/json"); + + protected <T> T doWithRelatedIssueCounts(CloseableHttpClient client, Version version, Function<InputStreamReader, T> parserCallback) throws IOException { + + HttpGet get = newGet("version/" + version.getId() +"/relatedIssueCounts"); try (CloseableHttpResponse response = client.execute(get)) { try (InputStream content = response.getEntity().getContent(); InputStreamReader reader = new InputStreamReader(content)) { if (response.getStatusLine().getStatusCode() != 200) throw new IOException("Status line : " + response.getStatusLine()); - Gson gson = new Gson(); - VersionRelatedIssuesCount issuesCount = gson.fromJson(reader, VersionRelatedIssuesCount.class); - - version.setRelatedIssuesCount(issuesCount.getIssuesFixedCount()); + return parserCallback.apply(reader); } } } + + private HttpGet newGet(String suffix) { + HttpGet get = new HttpGet("https://issues.apache.org/jira/rest/api/2/" + suffix); + get.addHeader("Accept", "application/json"); + return get; + } + + private void populateRelatedIssuesCount(CloseableHttpClient client, Version version) throws IOException { + + doWithRelatedIssueCounts(client, version, reader -> { + Gson gson = new Gson(); + VersionRelatedIssuesCount issuesCount = gson.fromJson(reader, VersionRelatedIssuesCount.class); + + version.setRelatedIssuesCount(issuesCount.getIssuesFixedCount()); + + return null; + }); + } + + private static int compare(Version v1, Version v2) { + // version names will never map to multiple release names + Release r1 = Release.fromString(v1.getName()).get(0); + Release r2 = Release.fromString(v2.getName()).get(0); + + org.osgi.framework.Version ver1 = new org.osgi.framework.Version(r1.getVersion()); + org.osgi.framework.Version ver2 = new org.osgi.framework.Version(r2.getVersion()); + + return ver1.compareTo(ver2); + } static class VersionRelatedIssuesCount { diff --git a/src/main/java/org/apache/sling/cli/impl/release/PrepareVoteEmailCommand.java b/src/main/java/org/apache/sling/cli/impl/release/PrepareVoteEmailCommand.java index 4cc4222..8656362 100644 --- a/src/main/java/org/apache/sling/cli/impl/release/PrepareVoteEmailCommand.java +++ b/src/main/java/org/apache/sling/cli/impl/release/PrepareVoteEmailCommand.java @@ -89,7 +89,7 @@ public class PrepareVoteEmailCommand implements Command { StagingRepository repo = repoFinder.find(repoId); List<Release> releases = Release.fromString(repo.getDescription()); List<Version> versions = releases.stream() - .map( r -> versionFinder.find(r.getName())) + .map( r -> versionFinder.find(r)) .collect(Collectors.toList()); String releaseName = releases.stream() diff --git a/src/main/java/org/apache/sling/cli/impl/release/Release.java b/src/main/java/org/apache/sling/cli/impl/release/Release.java index 95786b3..2428996 100644 --- a/src/main/java/org/apache/sling/cli/impl/release/Release.java +++ b/src/main/java/org/apache/sling/cli/impl/release/Release.java @@ -22,6 +22,9 @@ import java.util.Objects; import java.util.regex.Matcher; import java.util.regex.Pattern; +/** + * Provides structured access to the components of a release name. + */ public final class Release { /* @@ -70,22 +73,69 @@ public final class Release { } + /** + * Returns the full name, e.g. <em>Apache Sling Foo 1.0.2</em> + * + * @return the full name + */ public String getFullName() { return fullName; } + /** + * Returns the name, e.g. <em>Foo 1.0.2</em> + * + * @return the name + */ public String getName() { return name; } + /** + * Returns the version, e.g. <em>1.0.2</em> + * + * @return the version + */ public String getVersion() { return version; } + /** + * Returns the component, e.g. <tt>Foo</tt> + * + * @return the component + */ public String getComponent() { return component; } + /** + * Creates a new Release object that corresponds to the next release name + * + * <p>The next object is identical to <tt>this</tt> object, except the fact that the + * micro component of the version is increased by two.</P> + * + * <p>For instance, the next version of <tt>Apache Sling Foo 1.0.2</tt> is <tt>Apache Sling Foo 1.0.4</tt>.</p> + * + * @return the next release + */ + public Release next() { + + // assumption is that the release object is well-formed + int lastSeparator = fullName.lastIndexOf('.'); // Apache Sling Foo 1.0.2 -> 1.0.4 + int increment = 2; + if ( lastSeparator == -1 ) { + lastSeparator = fullName.lastIndexOf(' '); // Apache Sling Bar 2 -> 3 + increment = 1; + } + + int componentToIncrement = Integer.parseInt(fullName.substring(lastSeparator + 1)); + + String unchangedPart = fullName.substring(0, lastSeparator + 1); + + return Release.fromString(unchangedPart + ( componentToIncrement + increment )).get(0); + } + @Override public int hashCode() { return fullName.hashCode(); diff --git a/src/main/java/org/apache/sling/cli/impl/release/UpdateJiraCommand.java b/src/main/java/org/apache/sling/cli/impl/release/UpdateJiraCommand.java new file mode 100644 index 0000000..20d2acc --- /dev/null +++ b/src/main/java/org/apache/sling/cli/impl/release/UpdateJiraCommand.java @@ -0,0 +1,65 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.sling.cli.impl.release; + +import java.io.IOException; + +import org.apache.sling.cli.impl.Command; +import org.apache.sling.cli.impl.jira.Version; +import org.apache.sling.cli.impl.jira.VersionFinder; +import org.apache.sling.cli.impl.nexus.StagingRepository; +import org.apache.sling.cli.impl.nexus.StagingRepositoryFinder; +import org.osgi.service.component.annotations.Component; +import org.osgi.service.component.annotations.Reference; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +@Component(service = Command.class, property = { + Command.PROPERTY_NAME_COMMAND+"=release", + Command.PROPERTY_NAME_SUBCOMMAND+"=update-jira", + Command.PROPERTY_NAME_SUMMARY+"=Releases the current version, closes versions fixed in the current version and creates a new version if needed" + }) +public class UpdateJiraCommand implements Command { + + @Reference + private StagingRepositoryFinder repoFinder; + + @Reference + private VersionFinder versionFinder; + + private final Logger logger = LoggerFactory.getLogger(getClass()); + + @Override + public void execute(String target) { + try { + StagingRepository repo = repoFinder.find(Integer.parseInt(target)); + for (Release release : Release.fromString(repo.getDescription()) ) { + Version version = versionFinder.find(release); + logger.info("Found version {}", version); + Version successorVersion = versionFinder.findSuccessorVersion(release); + logger.info("Found successor version {}", successorVersion); + if ( successorVersion == null ) { + Release next = release.next(); + logger.info("Would create version {}", next); + } + + } + } catch (IOException e) { + logger.warn("Failed executing command", e); + } + } +} diff --git a/src/test/java/org/apache/sling/cli/impl/jira/VersionFinderTest.java b/src/test/java/org/apache/sling/cli/impl/jira/VersionFinderTest.java new file mode 100644 index 0000000..04a97bd --- /dev/null +++ b/src/test/java/org/apache/sling/cli/impl/jira/VersionFinderTest.java @@ -0,0 +1,93 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.sling.cli.impl.jira; + +import static org.hamcrest.Matchers.equalTo; +import static org.hamcrest.Matchers.notNullValue; +import static org.hamcrest.Matchers.nullValue; +import static org.junit.Assert.assertThat; + +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.util.function.Function; + +import org.apache.http.impl.client.CloseableHttpClient; +import org.apache.sling.cli.impl.release.Release; +import org.junit.Test; + +public class VersionFinderTest { + + private VersionFinder finder = new StubVersionFinder(); + + @Test + public void findMatchingVersion() { + + finder = new StubVersionFinder(); + Version version = finder.find(Release.fromString("XSS Protection API 1.0.2").get(0)); + + assertThat("version", version, notNullValue()); + assertThat("version.name", version.getName(), equalTo("XSS Protection API 1.0.2")); + assertThat("version.id", version.getId(), equalTo(12329667)); + assertThat("version.issuesFixedCount", version.getIssuesFixedCount(), equalTo(1)); + } + + @Test(expected = IllegalArgumentException.class) + public void missingVersionNotFound() { + + finder.find(Release.fromString("XSS Protection API 1.0.3").get(0)); + } + + @Test + public void findSuccessorVersion() { + Version successor = finder.findSuccessorVersion(Release.fromString("XSS Protection API 1.0.2").get(0)); + + assertThat("successor", successor, notNullValue()); + assertThat("successor.name", successor.getName(), equalTo("XSS Protection API 1.0.4")); + } + + @Test + public void noSuccessorVersion() { + Version successor = finder.findSuccessorVersion(Release.fromString("XSS Protection API 1.0.16").get(0)); + + assertThat("successor", successor, nullValue()); + } + + private static final class StubVersionFinder extends VersionFinder { + @Override + protected <T> T doWithJiraVersions(CloseableHttpClient client, Function<InputStreamReader, T> parserCallback) + throws IOException { + + try ( InputStreamReader reader = new InputStreamReader(getClass().getResourceAsStream("/jira/versions.json")) ) { + return parserCallback.apply(reader); + } + } + + @Override + protected <T> T doWithRelatedIssueCounts(CloseableHttpClient client, Version version, + Function<InputStreamReader, T> parserCallback) throws IOException { + + InputStream stream = getClass().getResourceAsStream("/jira/relatedIssueCounts/" + version.getId()+".json"); + if ( stream == null ) + throw new IllegalArgumentException("No related issues count for version " + version.getId() + " (" + version.getName() + ")"); + + try ( InputStreamReader reader = new InputStreamReader(stream) ) { + return parserCallback.apply(reader); + } + } + } +} diff --git a/src/test/java/org/apache/sling/cli/impl/release/ReleaseTest.java b/src/test/java/org/apache/sling/cli/impl/release/ReleaseTest.java index 8d16905..d6d9c51 100644 --- a/src/test/java/org/apache/sling/cli/impl/release/ReleaseTest.java +++ b/src/test/java/org/apache/sling/cli/impl/release/ReleaseTest.java @@ -91,5 +91,20 @@ public class ReleaseTest { reader.close(); } + @Test + public void nextVersion() { + Release release = Release.fromString("Apache Sling Foo 1.0.2").get(0); + Release next = release.next(); + + assertEquals("Apache Sling Foo 1.0.4", next.getFullName()); + } + + @Test + public void nextVersionWithSingleNumber() { + Release release = Release.fromString("Apache Sling Bar 2").get(0); + Release next = release.next(); + + assertEquals("Apache Sling Bar 3", next.getFullName()); + } } diff --git a/src/test/resources/README.md b/src/test/resources/README.md new file mode 100644 index 0000000..3158b2f --- /dev/null +++ b/src/test/resources/README.md @@ -0,0 +1,11 @@ +# Test resources + +These resources are downloaded from remote servers and maybe slightly tweaked to make them usable for testing. + +## Jira + +``` +http https://issues.apache.org/jira/rest/api/2/project/SLING/versions | jq '.[0:199]' > src/test/resources/jira/versions.json +http https://issues.apache.org/jira/rest/api/2/version/12329667/relatedIssueCounts | jq '.' > src/test/resources/jira/relatedIssueCounts/12329667.json +http https://issues.apache.org/jira/rest/api/2/version/12329844/relatedIssueCounts | jq '.' > src/test/resources/jira/relatedIssueCounts/12329844.json +``` \ No newline at end of file diff --git a/src/test/resources/jira/relatedIssueCounts/12329667.json b/src/test/resources/jira/relatedIssueCounts/12329667.json new file mode 100644 index 0000000..ac7b4e9 --- /dev/null +++ b/src/test/resources/jira/relatedIssueCounts/12329667.json @@ -0,0 +1,6 @@ +{ + "self": "https://issues.apache.org/jira/rest/api/2/version/12329667", + "issuesFixedCount": 1, + "issuesAffectedCount": 4, + "issueCountWithCustomFieldsShowingVersion": 0 +} diff --git a/src/test/resources/jira/relatedIssueCounts/12329844.json b/src/test/resources/jira/relatedIssueCounts/12329844.json new file mode 100644 index 0000000..3f9c8aa --- /dev/null +++ b/src/test/resources/jira/relatedIssueCounts/12329844.json @@ -0,0 +1,6 @@ +{ + "self": "https://issues.apache.org/jira/rest/api/2/version/12329844", + "issuesFixedCount": 4, + "issuesAffectedCount": 2, + "issueCountWithCustomFieldsShowingVersion": 0 +} diff --git a/src/test/resources/jira/versions.json b/src/test/resources/jira/versions.json new file mode 100644 index 0000000..d7e5226 --- /dev/null +++ b/src/test/resources/jira/versions.json @@ -0,0 +1,2087 @@ +[ + { + "self": "https://issues.apache.org/jira/rest/api/2/version/12329024", + "id": "12329024", + "description": "Initial release", + "name": "XSS Protection API 1.0.0", + "archived": false, + "released": true, + "releaseDate": "2015-03-20", + "userReleaseDate": "20/Mar/15", + "projectId": 12310710 + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/version/12329667", + "id": "12329667", + "name": "XSS Protection API 1.0.2", + "archived": false, + "released": true, + "releaseDate": "2015-03-30", + "userReleaseDate": "30/Mar/15", + "projectId": 12310710 + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/version/12329844", + "id": "12329844", + "name": "XSS Protection API 1.0.4", + "archived": false, + "released": true, + "releaseDate": "2015-08-03", + "userReleaseDate": "03/Aug/15", + "projectId": 12310710 + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/version/12333112", + "id": "12333112", + "name": "XSS Protection API 1.0.6", + "archived": false, + "released": true, + "releaseDate": "2015-10-12", + "userReleaseDate": "12/Oct/15", + "projectId": 12310710 + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/version/12333775", + "id": "12333775", + "name": "XSS Protection API 1.0.8", + "archived": false, + "released": true, + "releaseDate": "2016-02-02", + "userReleaseDate": "02/Feb/16", + "projectId": 12310710 + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/version/12338062", + "id": "12338062", + "name": "XSS Protection API 1.0.12", + "archived": false, + "released": true, + "releaseDate": "2016-08-19", + "userReleaseDate": "19/Aug/16", + "projectId": 12310710 + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/version/12338105", + "id": "12338105", + "description": "Maintenance Release", + "name": "XSS Protection API 1.0.14", + "archived": false, + "released": true, + "releaseDate": "2016-08-29", + "userReleaseDate": "29/Aug/16", + "projectId": 12310710 + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/version/12338187", + "id": "12338187", + "name": "XSS Protection API 1.0.16", + "archived": false, + "released": true, + "releaseDate": "2016-10-31", + "userReleaseDate": "31/Oct/16", + "projectId": 12310710 + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/version/12323492", + "id": "12323492", + "description": "First public release", + "name": "Tenant 1.0.0", + "archived": false, + "released": true, + "releaseDate": "2013-04-26", + "userReleaseDate": "26/Apr/13", + "projectId": 12310710 + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/version/12324350", + "id": "12324350", + "name": "Tenant 1.0.2", + "archived": false, + "released": true, + "releaseDate": "2014-08-18", + "userReleaseDate": "18/Aug/14", + "projectId": 12310710 + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/version/12327647", + "id": "12327647", + "name": "Tenant 1.1.0", + "archived": false, + "released": true, + "releaseDate": "2017-01-16", + "userReleaseDate": "16/Jan/17", + "projectId": 12310710 + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/version/12339163", + "id": "12339163", + "description": "Maintenance release", + "name": "Tenant 1.1.2", + "archived": false, + "released": true, + "startDate": "2017-01-17", + "releaseDate": "2018-09-02", + "userStartDate": "17/Jan/17", + "userReleaseDate": "02/Sep/18", + "projectId": 12310710 + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/version/12316002", + "id": "12316002", + "description": "First public release", + "name": "Scripting JST 2.0.4", + "archived": false, + "released": true, + "releaseDate": "2010-12-20", + "userReleaseDate": "20/Dec/10", + "projectId": 12310710 + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/version/12316003", + "id": "12316003", + "description": "Maintenance Release", + "name": "Scripting JST 2.0.6", + "archived": false, + "released": true, + "releaseDate": "2012-08-16", + "userReleaseDate": "16/Aug/12", + "projectId": 12310710 + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/version/12322940", + "id": "12322940", + "description": "Maintenance Release", + "name": "Scripting JST 2.0.8", + "archived": false, + "released": false, + "projectId": 12310710 + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/version/12324674", + "id": "12324674", + "description": "First public release", + "name": "Service User Mapper 1.0.0", + "archived": false, + "released": true, + "releaseDate": "2014-02-06", + "userReleaseDate": "06/Feb/14", + "projectId": 12310710 + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/version/12326146", + "id": "12326146", + "name": "Service User Mapper 1.0.2", + "archived": false, + "released": true, + "releaseDate": "2014-06-02", + "userReleaseDate": "02/Jun/14", + "projectId": 12310710 + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/version/12327057", + "id": "12327057", + "name": "Service User Mapper 1.0.4", + "archived": false, + "released": true, + "releaseDate": "2014-07-14", + "userReleaseDate": "14/Jul/14", + "projectId": 12310710 + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/version/12327372", + "id": "12327372", + "name": "Service User Mapper 1.1.0", + "archived": false, + "released": true, + "releaseDate": "2015-03-02", + "userReleaseDate": "02/Mar/15", + "projectId": 12310710 + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/version/12329544", + "id": "12329544", + "name": "Service User Mapper 1.2.0", + "archived": false, + "released": true, + "releaseDate": "2015-03-16", + "userReleaseDate": "16/Mar/15", + "projectId": 12310710 + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/version/12329687", + "id": "12329687", + "name": "Service User Mapper 1.2.2", + "archived": false, + "released": true, + "releaseDate": "2015-11-11", + "userReleaseDate": "11/Nov/15", + "projectId": 12310710 + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/version/12334454", + "id": "12334454", + "name": "Service User Mapper 1.2.4", + "archived": false, + "released": true, + "releaseDate": "2016-12-22", + "userReleaseDate": "22/Dec/16", + "projectId": 12310710 + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/version/12338907", + "id": "12338907", + "name": "Service User Mapper 1.2.6", + "archived": false, + "released": true, + "releaseDate": "2017-03-30", + "userReleaseDate": "30/Mar/17", + "projectId": 12310710 + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/version/12340275", + "id": "12340275", + "name": "Service User Mapper 1.3.0", + "archived": false, + "released": true, + "releaseDate": "2017-05-01", + "userReleaseDate": "01/May/17", + "projectId": 12310710 + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/version/12340324", + "id": "12340324", + "name": "Service User Mapper 1.3.2", + "archived": false, + "released": true, + "releaseDate": "2017-05-22", + "userReleaseDate": "22/May/17", + "projectId": 12310710 + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/version/12340608", + "id": "12340608", + "name": "Service User Mapper 1.3.4", + "archived": false, + "released": true, + "releaseDate": "2017-07-21", + "userReleaseDate": "21/Jul/17", + "projectId": 12310710 + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/version/12313245", + "id": "12313245", + "description": "First public release", + "name": "Servlets Resolver 2.0.4", + "archived": false, + "released": true, + "releaseDate": "2008-06-23", + "userReleaseDate": "23/Jun/08", + "projectId": 12310710 + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/version/12313376", + "id": "12313376", + "description": "Maintenance Release", + "name": " Servlets Resolver 2.0.6", + "archived": false, + "released": true, + "releaseDate": "2009-05-14", + "userReleaseDate": "14/May/09", + "projectId": 12310710 + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/version/12314051", + "id": "12314051", + "description": "Maintenance Release", + "name": "Servlets Resolver 2.0.8", + "archived": false, + "released": true, + "releaseDate": "2009-10-10", + "userReleaseDate": "10/Oct/09", + "projectId": 12310710 + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/version/12314292", + "id": "12314292", + "description": "New Feature Release", + "name": "Servlets Resolver 2.1.0", + "archived": false, + "released": true, + "releaseDate": "2010-10-08", + "userReleaseDate": "08/Oct/10", + "projectId": 12310710 + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/version/12315301", + "id": "12315301", + "description": "Maintenance Release", + "name": "Servlets Resolver 2.1.2", + "archived": false, + "released": true, + "releaseDate": "2012-01-30", + "userReleaseDate": "30/Jan/12", + "projectId": 12310710 + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/version/12319517", + "id": "12319517", + "description": "Maintenance Release", + "name": "Servlets Resolver 2.2.0", + "archived": false, + "released": true, + "releaseDate": "2012-11-15", + "userReleaseDate": "15/Nov/12", + "projectId": 12310710 + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/version/12323497", + "id": "12323497", + "name": "Servlets Resolver 2.2.4", + "archived": false, + "released": true, + "releaseDate": "2013-04-18", + "userReleaseDate": "18/Apr/13", + "projectId": 12310710 + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/version/12324330", + "id": "12324330", + "name": "Servlets Resolver 2.3.0", + "archived": false, + "released": true, + "releaseDate": "2014-02-24", + "userReleaseDate": "24/Feb/14", + "projectId": 12310710 + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/version/12326267", + "id": "12326267", + "name": "Servlets Resolver 2.3.2", + "archived": false, + "released": true, + "releaseDate": "2014-03-31", + "userReleaseDate": "31/Mar/14", + "projectId": 12310710 + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/version/12326701", + "id": "12326701", + "name": "Servlets Resolver 2.3.4", + "archived": false, + "released": true, + "releaseDate": "2014-11-14", + "userReleaseDate": "14/Nov/14", + "projectId": 12310710 + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/version/12328993", + "id": "12328993", + "name": "Servlets Resolver 2.3.6", + "archived": false, + "released": true, + "releaseDate": "2014-11-18", + "userReleaseDate": "18/Nov/14", + "projectId": 12310710 + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/version/12329016", + "id": "12329016", + "name": "Servlets Resolver 2.3.8", + "archived": false, + "released": true, + "releaseDate": "2015-10-05", + "userReleaseDate": "05/Oct/15", + "projectId": 12310710 + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/version/12333753", + "id": "12333753", + "description": "New Resource Provider API (2.11.0)", + "name": "Servlets Resolver 2.4.0", + "archived": false, + "released": true, + "releaseDate": "2016-02-08", + "userReleaseDate": "08/Feb/16", + "projectId": 12310710 + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/version/12334794", + "id": "12334794", + "name": "Servlets Resolver 2.4.2", + "archived": false, + "released": true, + "releaseDate": "2016-02-19", + "userReleaseDate": "19/Feb/16", + "projectId": 12310710 + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/version/12334853", + "id": "12334853", + "name": "Servlets Resolver 2.4.4", + "archived": false, + "released": true, + "releaseDate": "2016-07-13", + "userReleaseDate": "13/Jul/16", + "projectId": 12310710 + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/version/12337881", + "id": "12337881", + "description": "Maintenance Release", + "name": "Servlets Resolver 2.4.6", + "archived": false, + "released": true, + "releaseDate": "2016-10-22", + "userReleaseDate": "22/Oct/16", + "projectId": 12310710 + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/version/12338547", + "id": "12338547", + "name": "Servlets Resolver 2.4.8", + "archived": false, + "released": true, + "releaseDate": "2016-12-06", + "userReleaseDate": "06/Dec/16", + "projectId": 12310710 + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/version/12338893", + "id": "12338893", + "name": "Servlets Resolver 2.4.10", + "archived": false, + "released": true, + "releaseDate": "2016-12-24", + "userReleaseDate": "24/Dec/16", + "projectId": 12310710 + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/version/12338894", + "id": "12338894", + "name": "Servlets Resolver 2.4.12", + "archived": false, + "released": true, + "releaseDate": "2017-05-09", + "userReleaseDate": "09/May/17", + "projectId": 12310710 + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/version/12340523", + "id": "12340523", + "name": "Servlets Resolver 2.4.14", + "archived": false, + "released": true, + "releaseDate": "2017-08-28", + "userReleaseDate": "28/Aug/17", + "projectId": 12310710 + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/version/12313247", + "id": "12313247", + "description": "First public release", + "name": "Servlets Post 2.0.2", + "archived": false, + "released": true, + "releaseDate": "2008-06-23", + "userReleaseDate": "23/Jun/08", + "projectId": 12310710 + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/version/12313275", + "id": "12313275", + "description": "Maintenance Release", + "name": "Servlets Post 2.0.4", + "archived": false, + "released": true, + "releaseDate": "2009-05-14", + "userReleaseDate": "14/May/09", + "projectId": 12310710 + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/version/12314180", + "id": "12314180", + "description": "New feature release", + "name": "Servlets Post 2.1.0", + "archived": false, + "released": true, + "releaseDate": "2010-10-08", + "userReleaseDate": "08/Oct/10", + "projectId": 12310710 + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/version/12315287", + "id": "12315287", + "description": "Maintenance Release", + "name": "Servlets Post 2.1.2", + "archived": false, + "released": true, + "releaseDate": "2012-06-28", + "userReleaseDate": "28/Jun/12", + "projectId": 12310710 + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/version/12319641", + "id": "12319641", + "description": "Maintenance Release", + "name": "Servlets Post 2.2.0", + "archived": false, + "released": true, + "releaseDate": "2012-11-15", + "userReleaseDate": "15/Nov/12", + "projectId": 12310710 + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/version/12323498", + "id": "12323498", + "name": "Servlets Post 2.3.0", + "archived": false, + "released": true, + "releaseDate": "2013-05-10", + "userReleaseDate": "10/May/13", + "projectId": 12310710 + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/version/12324380", + "id": "12324380", + "name": "Servlets Post 2.3.2", + "archived": false, + "released": true, + "releaseDate": "2013-07-18", + "userReleaseDate": "18/Jul/13", + "projectId": 12310710 + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/version/12324747", + "id": "12324747", + "name": "Servlets Post 2.3.4", + "archived": false, + "released": true, + "releaseDate": "2014-03-07", + "userReleaseDate": "07/Mar/14", + "projectId": 12310710 + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/version/12328043", + "id": "12328043", + "name": "Servlets Post 2.3.8", + "archived": false, + "released": true, + "releaseDate": "2015-06-15", + "userReleaseDate": "15/Jun/15", + "projectId": 12310710 + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/version/12326357", + "id": "12326357", + "name": "Servlets Post 2.3.6", + "archived": false, + "released": true, + "releaseDate": "2014-08-28", + "userReleaseDate": "28/Aug/14", + "projectId": 12310710 + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/version/12332788", + "id": "12332788", + "name": "Servlets Post 2.3.10", + "archived": false, + "released": true, + "releaseDate": "2016-04-10", + "userReleaseDate": "10/Apr/16", + "projectId": 12310710 + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/version/12335544", + "id": "12335544", + "name": "Servlets Post 2.3.12", + "archived": false, + "released": true, + "releaseDate": "2016-06-01", + "userReleaseDate": "01/Jun/16", + "projectId": 12310710 + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/version/12335856", + "id": "12335856", + "name": "Servlets Post 2.3.14", + "archived": false, + "released": true, + "releaseDate": "2016-09-13", + "userReleaseDate": "13/Sep/16", + "projectId": 12310710 + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/version/12338346", + "id": "12338346", + "name": "Servlets Post 2.3.16", + "archived": false, + "released": true, + "releaseDate": "2017-05-11", + "userReleaseDate": "11/May/17", + "projectId": 12310710 + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/version/12340585", + "id": "12340585", + "name": "Servlets Post 2.3.18", + "archived": false, + "released": true, + "releaseDate": "2017-05-19", + "userReleaseDate": "19/May/17", + "projectId": 12310710 + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/version/12340584", + "id": "12340584", + "name": "Servlets Post 2.3.20", + "archived": false, + "released": true, + "releaseDate": "2017-05-29", + "userReleaseDate": "29/May/17", + "projectId": 12310710 + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/version/12341089", + "id": "12341089", + "name": "Servlets Post 2.3.22", + "archived": false, + "released": true, + "releaseDate": "2017-08-14", + "userReleaseDate": "14/Aug/17", + "projectId": 12310710 + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/version/12341348", + "id": "12341348", + "name": "Servlets Post 2.3.24", + "archived": false, + "released": true, + "releaseDate": "2018-01-23", + "userReleaseDate": "23/Jan/18", + "projectId": 12310710 + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/version/12313246", + "id": "12313246", + "description": "First public release", + "name": "Servlets Get 2.0.2", + "archived": false, + "released": true, + "releaseDate": "2008-06-23", + "userReleaseDate": "23/Jun/08", + "projectId": 12310710 + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/version/12313374", + "id": "12313374", + "description": "Maintenance Release", + "name": "Servlets Get 2.0.4", + "archived": false, + "released": true, + "releaseDate": "2009-05-14", + "userReleaseDate": "14/May/09", + "projectId": 12310710 + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/version/12313969", + "id": "12313969", + "description": "Maintenance Release", + "name": "Servlets Get 2.0.6", + "archived": false, + "released": true, + "releaseDate": "2009-10-02", + "userReleaseDate": "02/Oct/09", + "projectId": 12310710 + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/version/12314257", + "id": "12314257", + "description": "Maintenance Release", + "name": "Servlets Get 2.0.8", + "archived": false, + "released": true, + "releaseDate": "2009-12-21", + "userReleaseDate": "21/Dec/09", + "projectId": 12310710 + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/version/12314473", + "id": "12314473", + "description": "New Feature Release", + "name": "Servlets Get 2.1.0", + "archived": false, + "released": true, + "releaseDate": "2010-10-08", + "userReleaseDate": "08/Oct/10", + "projectId": 12310710 + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/version/12315299", + "id": "12315299", + "description": "Maintenance Release", + "name": "Servlets Get 2.1.2", + "archived": false, + "released": true, + "releaseDate": "2011-02-18", + "userReleaseDate": "18/Feb/11", + "projectId": 12310710 + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/version/12316181", + "id": "12316181", + "description": "Maintenance Release", + "name": "Servlets Get 2.1.4", + "archived": false, + "released": true, + "releaseDate": "2012-11-15", + "userReleaseDate": "15/Nov/12", + "projectId": 12310710 + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/version/12323496", + "id": "12323496", + "name": "Servlets Get 2.1.6", + "archived": false, + "released": true, + "releaseDate": "2014-03-07", + "userReleaseDate": "07/Mar/14", + "projectId": 12310710 + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/version/12326356", + "id": "12326356", + "name": "Servlets Get 2.1.8", + "archived": false, + "released": true, + "releaseDate": "2014-03-31", + "userReleaseDate": "31/Mar/14", + "projectId": 12310710 + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/version/12326700", + "id": "12326700", + "name": "Servlets Get 2.1.10", + "archived": false, + "released": true, + "releaseDate": "2014-09-01", + "userReleaseDate": "01/Sep/14", + "projectId": 12310710 + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/version/12328240", + "id": "12328240", + "name": "Servlets Get 2.1.12", + "archived": false, + "released": true, + "releaseDate": "2015-07-17", + "userReleaseDate": "17/Jul/15", + "projectId": 12310710 + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/version/12333051", + "id": "12333051", + "name": "Servlets Get 2.1.14", + "archived": false, + "released": true, + "releaseDate": "2015-12-21", + "userReleaseDate": "21/Dec/15", + "projectId": 12310710 + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/version/12334386", + "id": "12334386", + "name": "Servlets Get 2.1.18", + "archived": false, + "released": true, + "releaseDate": "2016-08-25", + "userReleaseDate": "25/Aug/16", + "projectId": 12310710 + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/version/12338170", + "id": "12338170", + "name": "Servlets Get 2.1.20", + "archived": false, + "released": true, + "releaseDate": "2017-02-03", + "userReleaseDate": "03/Feb/17", + "projectId": 12310710 + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/version/12339353", + "id": "12339353", + "name": "Servlets Get 2.1.22", + "archived": false, + "released": true, + "releaseDate": "2017-02-09", + "userReleaseDate": "09/Feb/17", + "projectId": 12310710 + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/version/12339558", + "id": "12339558", + "name": "Servlets Get 2.1.24", + "archived": false, + "released": true, + "releaseDate": "2017-05-11", + "userReleaseDate": "11/May/17", + "projectId": 12310710 + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/version/12340578", + "id": "12340578", + "name": "Servlets Get 2.1.26", + "archived": false, + "released": true, + "releaseDate": "2017-05-19", + "userReleaseDate": "19/May/17", + "projectId": 12310710 + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/version/12340579", + "id": "12340579", + "name": "Servlets Get 2.1.28", + "archived": false, + "released": true, + "releaseDate": "2017-11-02", + "userReleaseDate": "02/Nov/17", + "projectId": 12310710 + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/version/12315438", + "id": "12315438", + "description": "Initial Version", + "name": "Servlet Archetype 1.0.0", + "archived": false, + "released": true, + "releaseDate": "2010-10-19", + "userReleaseDate": "19/Oct/10", + "projectId": 12310710 + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/version/12315454", + "id": "12315454", + "description": "Maintenance Release", + "name": "Servlet Archetype 1.0.2", + "archived": false, + "released": true, + "releaseDate": "2014-06-04", + "userReleaseDate": "04/Jun/14", + "projectId": 12310710 + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/version/12317347", + "id": "12317347", + "description": "First Release", + "name": "Bundle Archetype 1.0.0", + "archived": false, + "released": true, + "releaseDate": "2011-09-15", + "userReleaseDate": "15/Sep/11", + "projectId": 12310710 + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/version/12326805", + "id": "12326805", + "name": "Bundle Archetype 1.0.2", + "archived": false, + "released": true, + "releaseDate": "2014-06-04", + "userReleaseDate": "04/Jun/14", + "projectId": 12310710 + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/version/12317548", + "id": "12317548", + "name": "JCRInstall Bundle Archetype 1.0.0", + "archived": false, + "released": true, + "releaseDate": "2011-09-15", + "userReleaseDate": "15/Sep/11", + "projectId": 12310710 + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/version/12326806", + "id": "12326806", + "name": "JCRInstall Bundle Archetype 1.0.2", + "archived": false, + "released": true, + "releaseDate": "2014-06-04", + "userReleaseDate": "04/Jun/14", + "projectId": 12310710 + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/version/12315320", + "id": "12315320", + "description": "First public release", + "name": "Scripting Velocity 2.0.0", + "archived": false, + "released": false, + "projectId": 12310710 + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/version/12315321", + "id": "12315321", + "description": "Maintenance Release", + "name": "Scripting Velocity 2.0.2", + "archived": false, + "released": false, + "projectId": 12310710 + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/version/12315484", + "id": "12315484", + "description": "First public release", + "name": "Scripting Scala 1.0.0", + "archived": false, + "released": false, + "projectId": 12310710 + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/version/12313252", + "id": "12313252", + "description": "First public release", + "name": "Scripting JSP-Taglib 2.0.2", + "archived": false, + "released": true, + "releaseDate": "2008-06-23", + "userReleaseDate": "23/Jun/08", + "projectId": 12310710 + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/version/12313375", + "id": "12313375", + "description": "Maintenance Release", + "name": "Scripting JSP-Taglib 2.0.4", + "archived": false, + "released": true, + "releaseDate": "2009-05-14", + "userReleaseDate": "14/May/09", + "projectId": 12310710 + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/version/12314125", + "id": "12314125", + "description": "Maintenance Release", + "name": "Scripting JSP-Taglib 2.0.6", + "archived": false, + "released": true, + "releaseDate": "2009-11-28", + "userReleaseDate": "28/Nov/09", + "projectId": 12310710 + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/version/12314408", + "id": "12314408", + "description": "Feature Release", + "name": "Scripting JSP-Taglib 2.1.0", + "archived": false, + "released": true, + "releaseDate": "2010-10-19", + "userReleaseDate": "19/Oct/10", + "projectId": 12310710 + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/version/12315450", + "id": "12315450", + "description": "Maintenance release", + "name": "Scripting JSP-Taglib 2.1.2", + "archived": false, + "released": true, + "releaseDate": "2011-05-03", + "userReleaseDate": "03/May/11", + "projectId": 12310710 + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/version/12316405", + "id": "12316405", + "description": "Maintenance Release", + "name": "Scripting JSP-Taglib 2.1.6", + "archived": false, + "released": true, + "releaseDate": "2012-01-30", + "userReleaseDate": "30/Jan/12", + "projectId": 12310710 + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/version/12319471", + "id": "12319471", + "description": "Maintenance Release", + "name": "Scripting JSP-Taglib 2.1.8", + "archived": false, + "released": true, + "releaseDate": "2012-10-29", + "userReleaseDate": "29/Oct/12", + "projectId": 12310710 + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/version/12323463", + "id": "12323463", + "description": "Maintenance/Enhancement Release", + "name": "Scripting JSP-Taglib 2.2.0", + "archived": false, + "released": true, + "releaseDate": "2013-08-08", + "userReleaseDate": "08/Aug/13", + "projectId": 12310710 + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/version/12324863", + "id": "12324863", + "description": "Maintenance release", + "name": "Scripting JSP-Taglib 2.2.2", + "archived": false, + "released": true, + "releaseDate": "2014-09-12", + "userReleaseDate": "12/Sep/14", + "projectId": 12310710 + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/version/12328648", + "id": "12328648", + "name": "Scripting JSP-Taglib 2.2.4", + "archived": false, + "released": true, + "releaseDate": "2014-09-25", + "userReleaseDate": "25/Sep/14", + "projectId": 12310710 + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/version/12328732", + "id": "12328732", + "description": "Maintenance Release", + "name": "Scripting JSP-Taglib 2.2.6", + "archived": false, + "released": true, + "releaseDate": "2016-04-21", + "userReleaseDate": "21/Apr/16", + "projectId": 12310710 + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/version/12314339", + "id": "12314339", + "description": "First public release", + "name": "Scripting JSP-Atom-Taglib 1.0.0", + "archived": false, + "released": false, + "projectId": 12310710 + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/version/12313251", + "id": "12313251", + "description": "First public release", + "name": "Scripting JSP 2.0.2", + "archived": true, + "released": true, + "releaseDate": "2008-06-23", + "userReleaseDate": "23/Jun/08", + "projectId": 12310710 + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/version/12313356", + "id": "12313356", + "description": "Maintenance Release", + "name": "Scripting JSP 2.0.6", + "archived": true, + "released": true, + "releaseDate": "2009-05-14", + "userReleaseDate": "14/May/09", + "projectId": 12310710 + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/version/12314069", + "id": "12314069", + "description": "Maintenance Release", + "name": "Scripting JSP 2.0.8", + "archived": true, + "released": true, + "releaseDate": "2009-11-28", + "userReleaseDate": "28/Nov/09", + "projectId": 12310710 + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/version/12314407", + "id": "12314407", + "description": "Maintenance Release", + "name": "Scripting JSP 2.0.10", + "archived": true, + "released": true, + "releaseDate": "2010-10-25", + "userReleaseDate": "25/Oct/10", + "projectId": 12310710 + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/version/12315449", + "id": "12315449", + "description": "Maintenance release", + "name": "Scripting JSP 2.0.12", + "archived": true, + "released": true, + "releaseDate": "2010-12-20", + "userReleaseDate": "20/Dec/10", + "projectId": 12310710 + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/version/12316005", + "id": "12316005", + "description": "Maintenance Release", + "name": "Scripting JSP 2.0.14", + "archived": true, + "released": true, + "releaseDate": "2011-01-24", + "userReleaseDate": "24/Jan/11", + "projectId": 12310710 + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/version/12316083", + "id": "12316083", + "description": "Maintenance Release", + "name": "Scripting JSP 2.0.16", + "archived": true, + "released": true, + "releaseDate": "2011-05-03", + "userReleaseDate": "03/May/11", + "projectId": 12310710 + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/version/12316404", + "id": "12316404", + "description": "Maintenance Release", + "name": "Scripting JSP 2.0.18", + "archived": true, + "released": true, + "releaseDate": "2011-08-15", + "userReleaseDate": "15/Aug/11", + "projectId": 12310710 + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/version/12317602", + "id": "12317602", + "description": "Maintenance Release", + "name": "Scripting JSP 2.0.20", + "archived": true, + "released": true, + "releaseDate": "2012-01-16", + "userReleaseDate": "16/Jan/12", + "projectId": 12310710 + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/version/12319472", + "id": "12319472", + "description": "Maintenance Release", + "name": "Scripting JSP 2.0.22", + "archived": true, + "released": true, + "releaseDate": "2012-05-18", + "userReleaseDate": "18/May/12", + "projectId": 12310710 + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/version/12321295", + "id": "12321295", + "description": "Maintenance Release", + "name": "Scripting JSP 2.0.24", + "archived": true, + "released": true, + "releaseDate": "2012-06-28", + "userReleaseDate": "28/Jun/12", + "projectId": 12310710 + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/version/12321864", + "id": "12321864", + "description": "Maintenance Release", + "name": "Scripting JSP 2.0.26", + "archived": true, + "released": true, + "releaseDate": "2012-11-30", + "userReleaseDate": "30/Nov/12", + "projectId": 12310710 + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/version/12323580", + "id": "12323580", + "name": "Scripting JSP 2.0.28", + "archived": false, + "released": true, + "releaseDate": "2013-05-16", + "userReleaseDate": "16/May/13", + "projectId": 12310710 + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/version/12324445", + "id": "12324445", + "description": "Java 8 Support", + "name": "Scripting JSP 2.1.0", + "archived": false, + "released": true, + "releaseDate": "2014-05-20", + "userReleaseDate": "20/May/14", + "projectId": 12310710 + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/version/12326855", + "id": "12326855", + "name": "Scripting JSP 2.1.4", + "archived": false, + "released": true, + "releaseDate": "2014-07-12", + "userReleaseDate": "12/Jul/14", + "projectId": 12310710 + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/version/12327194", + "id": "12327194", + "name": "Scripting JSP 2.1.6", + "archived": false, + "released": true, + "releaseDate": "2014-11-06", + "userReleaseDate": "06/Nov/14", + "projectId": 12310710 + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/version/12328955", + "id": "12328955", + "name": "Scripting JSP 2.1.8", + "archived": false, + "released": true, + "releaseDate": "2016-01-03", + "userReleaseDate": "03/Jan/16", + "projectId": 12310710 + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/version/12334593", + "id": "12334593", + "name": "Scripting JSP 2.2.0", + "archived": false, + "released": true, + "releaseDate": "2016-10-20", + "userReleaseDate": "20/Oct/16", + "projectId": 12310710 + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/version/12338545", + "id": "12338545", + "name": "Scripting JSP 2.2.2", + "archived": false, + "released": true, + "releaseDate": "2016-12-16", + "userReleaseDate": "16/Dec/16", + "projectId": 12310710 + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/version/12338860", + "id": "12338860", + "name": "Scripting JSP 2.2.4", + "archived": false, + "released": true, + "releaseDate": "2017-01-10", + "userReleaseDate": "10/Jan/17", + "projectId": 12310710 + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/version/12338978", + "id": "12338978", + "name": "Scripting JSP 2.2.6", + "archived": false, + "released": true, + "releaseDate": "2017-01-30", + "userReleaseDate": "30/Jan/17", + "projectId": 12310710 + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/version/12339340", + "id": "12339340", + "description": "Maintenance Release", + "name": "Scripting JSP 2.3.0", + "archived": false, + "released": true, + "releaseDate": "2017-03-20", + "userReleaseDate": "20/Mar/17", + "projectId": 12310710 + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/version/12340247", + "id": "12340247", + "description": "Maintenance Release", + "name": "Scripting JSP 2.3.2", + "archived": false, + "released": true, + "releaseDate": "2017-08-24", + "userReleaseDate": "24/Aug/17", + "projectId": 12310710 + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/version/12341395", + "id": "12341395", + "name": "Scripting JSP 2.3.4", + "archived": false, + "released": true, + "releaseDate": "2017-12-04", + "userReleaseDate": "04/Dec/17", + "projectId": 12310710 + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/version/12313250", + "id": "12313250", + "description": "First public release", + "name": "Scripting JavaScript 2.0.2", + "archived": true, + "released": true, + "releaseDate": "2008-06-23", + "userReleaseDate": "23/Jun/08", + "projectId": 12310710 + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/version/12313390", + "id": "12313390", + "description": "Feature Release", + "name": " Scripting JavaScript 2.0.4", + "archived": true, + "released": true, + "releaseDate": "2009-05-14", + "userReleaseDate": "14/May/09", + "projectId": 12310710 + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/version/12314110", + "id": "12314110", + "description": "Maintenance Release", + "name": "Scripting JavaScript 2.0.6", + "archived": true, + "released": true, + "releaseDate": "2009-11-28", + "userReleaseDate": "28/Nov/09", + "projectId": 12310710 + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/version/12314406", + "id": "12314406", + "description": "Maintenance Release", + "name": "Scripting JavaScript 2.0.8", + "archived": true, + "released": true, + "releaseDate": "2010-10-25", + "userReleaseDate": "25/Oct/10", + "projectId": 12310710 + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/version/12315448", + "id": "12315448", + "description": "Maintenance release", + "name": "Scripting JavaScript 2.0.10", + "archived": true, + "released": true, + "releaseDate": "2010-12-20", + "userReleaseDate": "20/Dec/10", + "projectId": 12310710 + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/version/12316006", + "id": "12316006", + "description": "Maintenance Release", + "name": "Scripting JavaScript 2.0.12", + "archived": true, + "released": true, + "releaseDate": "2011-02-26", + "userReleaseDate": "26/Feb/11", + "projectId": 12310710 + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/version/12316243", + "id": "12316243", + "description": "Maintenance Release", + "name": "Scripting JavaScript 2.0.14", + "archived": true, + "released": true, + "releaseDate": "2014-06-23", + "userReleaseDate": "23/Jun/14", + "projectId": 12310710 + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/version/12327183", + "id": "12327183", + "description": "Maintenance Release", + "name": "Scripting JavaScript 2.0.16", + "archived": true, + "released": true, + "releaseDate": "2015-04-20", + "userReleaseDate": "20/Apr/15", + "projectId": 12310710 + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/version/12332071", + "id": "12332071", + "description": "Maintenance Release", + "name": "Scripting JavaScript 2.0.18", + "archived": true, + "released": true, + "releaseDate": "2015-07-02", + "userReleaseDate": "02/Jul/15", + "projectId": 12310710 + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/version/12332966", + "id": "12332966", + "description": "Maintenance Release", + "name": "Scripting JavaScript 2.0.20", + "archived": true, + "released": true, + "releaseDate": "2015-07-21", + "userReleaseDate": "21/Jul/15", + "projectId": 12310710 + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/version/12333080", + "id": "12333080", + "name": "Scripting JavaScript 2.0.22", + "archived": true, + "released": true, + "releaseDate": "2015-08-13", + "userReleaseDate": "13/Aug/15", + "projectId": 12310710 + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/version/12333276", + "id": "12333276", + "name": "Scripting JavaScript 2.0.24", + "archived": true, + "released": true, + "releaseDate": "2015-09-07", + "userReleaseDate": "07/Sep/15", + "projectId": 12310710 + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/version/12333370", + "id": "12333370", + "name": "Scripting JavaScript 2.0.26", + "archived": true, + "released": true, + "releaseDate": "2015-10-12", + "userReleaseDate": "12/Oct/15", + "projectId": 12310710 + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/version/12333862", + "id": "12333862", + "name": "Scripting JavaScript 2.0.28", + "archived": false, + "released": true, + "releaseDate": "2016-01-08", + "userReleaseDate": "08/Jan/16", + "projectId": 12310710 + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/version/12334627", + "id": "12334627", + "description": "Maintenance Release", + "name": "Scripting JavaScript 2.0.30", + "archived": false, + "released": true, + "releaseDate": "2016-06-22", + "userReleaseDate": "22/Jun/16", + "projectId": 12310710 + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/version/12336745", + "id": "12336745", + "name": "Scripting JavaScript 3.0.0", + "archived": false, + "released": true, + "releaseDate": "2017-05-11", + "userReleaseDate": "11/May/17", + "projectId": 12310710 + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/version/12340536", + "id": "12340536", + "name": "Scripting JavaScript 3.0.2", + "archived": false, + "released": true, + "releaseDate": "2017-09-04", + "userReleaseDate": "04/Sep/17", + "projectId": 12310710 + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/version/12313605", + "id": "12313605", + "description": "First public release", + "name": "Scripting Java 1.0.0", + "archived": false, + "released": true, + "releaseDate": "2009-12-02", + "userReleaseDate": "02/Dec/09", + "projectId": 12310710 + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/version/12314418", + "id": "12314418", + "description": "New feature release", + "name": "Scripting Java 2.0.0", + "archived": false, + "released": true, + "releaseDate": "2010-12-20", + "userReleaseDate": "20/Dec/10", + "projectId": 12310710 + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/version/12316001", + "id": "12316001", + "description": "Maintenance Release", + "name": "Scripting Java 2.0.2", + "archived": false, + "released": true, + "releaseDate": "2012-01-16", + "userReleaseDate": "16/Jan/12", + "projectId": 12310710 + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/version/12319473", + "id": "12319473", + "description": "Maintenance Release", + "name": "Scripting Java 2.0.4", + "archived": false, + "released": true, + "releaseDate": "2012-05-18", + "userReleaseDate": "18/May/12", + "projectId": 12310710 + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/version/12321294", + "id": "12321294", + "description": "Maintenance Release", + "name": "Scripting Java 2.0.6", + "archived": false, + "released": true, + "releaseDate": "2012-06-28", + "userReleaseDate": "28/Jun/12", + "projectId": 12310710 + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/version/12321863", + "id": "12321863", + "description": "Maintenance Release", + "name": "Scripting Java 2.0.10", + "archived": false, + "released": true, + "releaseDate": "2014-07-12", + "userReleaseDate": "12/Jul/14", + "projectId": 12310710 + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/version/12326856", + "id": "12326856", + "description": "Maintenance Release", + "name": "Scripting Java 2.0.12", + "archived": false, + "released": true, + "releaseDate": "2014-09-30", + "userReleaseDate": "30/Sep/14", + "projectId": 12310710 + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/version/12328674", + "id": "12328674", + "description": "Maintenance Release", + "name": "Scripting Java 2.0.14", + "archived": false, + "released": true, + "releaseDate": "2015-12-20", + "userReleaseDate": "20/Dec/15", + "projectId": 12310710 + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/version/12334385", + "id": "12334385", + "description": "Maintenance Release", + "name": "Scripting Java 2.1.0", + "archived": false, + "released": true, + "releaseDate": "2016-10-20", + "userReleaseDate": "20/Oct/16", + "projectId": 12310710 + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/version/12338546", + "id": "12338546", + "name": "Scripting Java 2.1.2", + "archived": false, + "released": true, + "releaseDate": "2016-12-16", + "userReleaseDate": "16/Dec/16", + "projectId": 12310710 + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/version/12338861", + "id": "12338861", + "name": "Scripting Java 2.1.4", + "archived": false, + "released": false, + "projectId": 12310710 + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/version/12313249", + "id": "12313249", + "description": "First public release", + "name": "Scripting Core 2.0.2", + "archived": false, + "released": true, + "releaseDate": "2008-06-23", + "userReleaseDate": "23/Jun/08", + "projectId": 12310710 + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/version/12313366", + "id": "12313366", + "description": "Maintenance Release", + "name": "Scripting Core 2.0.4", + "archived": false, + "released": true, + "releaseDate": "2009-05-14", + "userReleaseDate": "14/May/09", + "projectId": 12310710 + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/version/12314072", + "id": "12314072", + "description": "Maintenance Release", + "name": "Scripting Core 2.0.6", + "archived": false, + "released": true, + "releaseDate": "2009-10-10", + "userReleaseDate": "10/Oct/09", + "projectId": 12310710 + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/version/12314291", + "id": "12314291", + "description": "Maintenance Release", + "name": "Scripting Core 2.0.8", + "archived": false, + "released": true, + "releaseDate": "2009-11-28", + "userReleaseDate": "28/Nov/09", + "projectId": 12310710 + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/version/12314403", + "id": "12314403", + "description": "Maintenance Release", + "name": "Scripting Core 2.0.10", + "archived": false, + "released": true, + "releaseDate": "2010-03-01", + "userReleaseDate": "01/Mar/10", + "projectId": 12310710 + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/version/12314797", + "id": "12314797", + "description": "Maintenance release", + "name": "Scripting Core 2.0.14", + "archived": false, + "released": true, + "releaseDate": "2010-11-02", + "userReleaseDate": "02/Nov/10", + "projectId": 12310710 + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/version/12315447", + "id": "12315447", + "description": "Maintenance release", + "name": "Scripting Core 2.0.16", + "archived": false, + "released": true, + "releaseDate": "2011-01-29", + "userReleaseDate": "29/Jan/11", + "projectId": 12310710 + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/version/12316110", + "id": "12316110", + "description": "Maintenance Release", + "name": "Scripting Core 2.0.18", + "archived": false, + "released": true, + "releaseDate": "2011-08-15", + "userReleaseDate": "15/Aug/11", + "projectId": 12310710 + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/version/12317582", + "id": "12317582", + "description": "Maintenance Release", + "name": "Scripting Core 2.0.20", + "archived": false, + "released": true, + "releaseDate": "2012-01-16", + "userReleaseDate": "16/Jan/12", + "projectId": 12310710 + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/version/12319469", + "id": "12319469", + "description": "Maintenance Release", + "name": "Scripting Core 2.0.22", + "archived": false, + "released": true, + "releaseDate": "2012-05-26", + "userReleaseDate": "26/May/12", + "projectId": 12310710 + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/version/12321447", + "id": "12321447", + "description": "Maintenance Release", + "name": "Scripting Core 2.0.24", + "archived": false, + "released": true, + "releaseDate": "2012-06-28", + "userReleaseDate": "28/Jun/12", + "projectId": 12310710 + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/version/12321862", + "id": "12321862", + "description": "Maintenance Release", + "name": "Scripting Core 2.0.26", + "archived": false, + "released": true, + "releaseDate": "2014-03-07", + "userReleaseDate": "07/Mar/14", + "projectId": 12310710 + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/version/12326347", + "id": "12326347", + "name": "Scripting Core 2.0.28", + "archived": false, + "released": true, + "releaseDate": "2014-09-22", + "userReleaseDate": "22/Sep/14", + "projectId": 12310710 + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/version/12328697", + "id": "12328697", + "name": "Scripting Core 2.0.30", + "archived": false, + "released": true, + "releaseDate": "2015-07-21", + "userReleaseDate": "21/Jul/15", + "projectId": 12310710 + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/version/12333079", + "id": "12333079", + "name": "Scripting Core 2.0.32", + "archived": false, + "released": true, + "releaseDate": "2015-07-26", + "userReleaseDate": "26/Jul/15", + "projectId": 12310710 + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/version/12333099", + "id": "12333099", + "name": "Scripting Core 2.0.34", + "archived": false, + "released": true, + "releaseDate": "2015-08-13", + "userReleaseDate": "13/Aug/15", + "projectId": 12310710 + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/version/12333275", + "id": "12333275", + "name": "Scripting Core 2.0.36", + "archived": false, + "released": true, + "releaseDate": "2016-02-12", + "userReleaseDate": "12/Feb/16", + "projectId": 12310710 + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/version/12334860", + "id": "12334860", + "name": "Scripting Core 2.0.38", + "archived": false, + "released": true, + "releaseDate": "2016-07-13", + "userReleaseDate": "13/Jul/16", + "projectId": 12310710 + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/version/12337945", + "id": "12337945", + "name": "Scripting Core 2.0.40", + "archived": false, + "released": true, + "releaseDate": "2016-10-17", + "userReleaseDate": "17/Oct/16", + "projectId": 12310710 + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/version/12338776", + "id": "12338776", + "name": "Scripting Core 2.0.44", + "archived": false, + "released": true, + "releaseDate": "2016-12-15", + "userReleaseDate": "15/Dec/16", + "projectId": 12310710 + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/version/12339253", + "id": "12339253", + "description": "Maintenance Release", + "name": "Scripting Core 2.0.46", + "archived": false, + "released": true, + "releaseDate": "2017-03-08", + "userReleaseDate": "08/Mar/17", + "projectId": 12310710 + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/version/12339953", + "id": "12339953", + "description": "Maintenance Release", + "name": "Scripting Core 2.0.48", + "archived": false, + "released": true, + "releaseDate": "2017-09-29", + "userReleaseDate": "29/Sep/17", + "projectId": 12310710 + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/version/12341679", + "id": "12341679", + "name": "Scripting Core 2.0.50", + "archived": false, + "released": true, + "releaseDate": "2017-10-23", + "userReleaseDate": "23/Oct/17", + "projectId": 12310710 + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/version/12313248", + "id": "12313248", + "description": "First public release", + "name": "Scripting API 2.0.2", + "archived": false, + "released": true, + "releaseDate": "2008-06-23", + "userReleaseDate": "23/Jun/08", + "projectId": 12310710 + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/version/12314561", + "id": "12314561", + "description": "Feature Release", + "name": "Scripting API 2.1.0", + "archived": false, + "released": true, + "releaseDate": "2010-02-19", + "userReleaseDate": "19/Feb/10", + "projectId": 12310710 + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/version/12314784", + "id": "12314784", + "description": "Maintenance release", + "name": "Scripting API 2.1.2", + "archived": false, + "released": true, + "releaseDate": "2010-12-20", + "userReleaseDate": "20/Dec/10", + "projectId": 12310710 + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/version/12316004", + "id": "12316004", + "description": "Maintenance Release", + "name": "Scripting API 2.1.4", + "archived": false, + "released": true, + "releaseDate": "2012-01-16", + "userReleaseDate": "16/Jan/12", + "projectId": 12310710 + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/version/12319470", + "id": "12319470", + "description": "Maintenance Release", + "name": "Scripting API 2.1.6", + "archived": false, + "released": true, + "releaseDate": "2014-03-07", + "userReleaseDate": "07/Mar/14", + "projectId": 12310710 + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/version/12326346", + "id": "12326346", + "name": "Scripting API 2.1.8", + "archived": false, + "released": true, + "releaseDate": "2015-07-21", + "userReleaseDate": "21/Jul/15", + "projectId": 12310710 + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/version/12338775", + "id": "12338775", + "name": "Scripting API 2.1.12", + "archived": false, + "released": true, + "releaseDate": "2016-12-15", + "userReleaseDate": "15/Dec/16", + "projectId": 12310710 + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/version/12340474", + "id": "12340474", + "name": "Scripting API 2.2.0", + "archived": false, + "released": true, + "releaseDate": "2017-05-01", + "userReleaseDate": "01/May/17", + "projectId": 12310710 + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/version/12340480", + "id": "12340480", + "name": "Scripting API 2.2.2", + "archived": false, + "released": false, + "projectId": 12310710 + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/version/12313260", + "id": "12313260", + "description": "First public release", + "name": "Samples Simple Demo 2.0.2", + "archived": false, + "released": true, + "releaseDate": "2008-06-23", + "userReleaseDate": "23/Jun/08", + "projectId": 12310710 + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/version/12313262", + "id": "12313262", + "description": "First public release", + "name": "Samples Webloader Service 2.0.2", + "archived": false, + "released": true, + "releaseDate": "2008-06-23", + "userReleaseDate": "23/Jun/08", + "projectId": 12310710 + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/version/12313263", + "id": "12313263", + "description": "First public release", + "name": "Samples Webloader UI 2.0.2", + "archived": false, + "released": true, + "releaseDate": "2008-06-23", + "userReleaseDate": "23/Jun/08", + "projectId": 12310710 + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/version/12325043", + "id": "12325043", + "description": "First public release", + "name": "Request Analyzer 1.0.0", + "archived": false, + "released": false, + "projectId": 12310710 + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/version/12313261", + "id": "12313261", + "description": "First public release", + "name": "Path Based RTP 2.0.2", + "archived": false, + "released": true, + "releaseDate": "2008-06-23", + "userReleaseDate": "23/Jun/08", + "projectId": 12310710 + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/version/12314787", + "id": "12314787", + "description": "Maintenance release", + "name": "Path based RTP 2.0.4", + "archived": false, + "released": false, + "projectId": 12310710 + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/version/12313662", + "id": "12313662", + "description": "Maintenance Release", + "name": "Parent 5", + "archived": true, + "released": true, + "releaseDate": "2009-05-14", + "userReleaseDate": "14/May/09", + "projectId": 12310710 + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/version/12313945", + "id": "12313945", + "description": "Maintenance Release", + "name": "Parent 6", + "archived": true, + "released": true, + "releaseDate": "2009-07-03", + "userReleaseDate": "03/Jul/09", + "projectId": 12310710 + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/version/12314079", + "id": "12314079", + "description": "Maintenance Release", + "name": "Parent 7", + "archived": true, + "released": true, + "releaseDate": "2009-09-28", + "userReleaseDate": "28/Sep/09", + "projectId": 12310710 + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/version/12314251", + "id": "12314251", + "description": "Maintenance Release", + "name": "Parent 8", + "archived": true, + "released": true, + "releaseDate": "2009-11-28", + "userReleaseDate": "28/Nov/09", + "projectId": 12310710 + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/version/12314432", + "id": "12314432", + "description": "Maintenance Release", + "name": "Parent 9", + "archived": true, + "released": true, + "releaseDate": "2010-05-11", + "userReleaseDate": "11/May/10", + "projectId": 12310710 + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/version/12315011", + "id": "12315011", + "description": "Maintenance release", + "name": "Parent 10", + "archived": true, + "released": true, + "releaseDate": "2010-12-13", + "userReleaseDate": "13/Dec/10", + "projectId": 12310710 + } +]
