You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by ro...@apache.org on 2019/04/23 14:54:38 UTC
[sling-org-apache-sling-committer-cli] 29/39: SLING-8337 - Create
sub-command to manage the Jira update when promoting a release
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 <ro...@apache.org>
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
+ }
+]