diff --git a/vendor/manifest b/vendor/manifest index 5a42e23..1735bb9 100644 --- a/vendor/manifest +++ b/vendor/manifest @@ -7,6 +7,12 @@ "revision": "a283a10442df8dc09befd873fab202bf8a253d6a", "branch": "master" }, + { + "importpath": "github.com/andygrunwald/go-jira", + "repository": "https://github.com/andygrunwald/go-jira", + "revision": "ae45380959ecd26b9c0adcae4c194b7e2253e214", + "branch": "master" + }, { "importpath": "github.com/google/go-github/github", "repository": "https://github.com/google/go-github", diff --git a/vendor/src/github.com/andygrunwald/go-jira/LICENSE b/vendor/src/github.com/andygrunwald/go-jira/LICENSE new file mode 100644 index 0000000..692f6be --- /dev/null +++ b/vendor/src/github.com/andygrunwald/go-jira/LICENSE @@ -0,0 +1,22 @@ +The MIT License (MIT) + +Copyright (c) 2015 Andy Grunwald + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + diff --git a/vendor/src/github.com/andygrunwald/go-jira/README.md b/vendor/src/github.com/andygrunwald/go-jira/README.md new file mode 100644 index 0000000..f9a92c9 --- /dev/null +++ b/vendor/src/github.com/andygrunwald/go-jira/README.md @@ -0,0 +1,172 @@ +# go-jira + +[![GoDoc](https://godoc.org/github.com/andygrunwald/go-jira?status.svg)](https://godoc.org/github.com/andygrunwald/go-jira) +[![Build Status](https://travis-ci.org/andygrunwald/go-jira.svg?branch=master)](https://travis-ci.org/andygrunwald/go-jira) +[![Go Report Card](https://goreportcard.com/badge/github.com/andygrunwald/go-jira)](https://goreportcard.com/report/github.com/andygrunwald/go-jira) +[![Coverage Status](https://coveralls.io/repos/github/andygrunwald/go-jira/badge.svg?branch=master)](https://coveralls.io/github/andygrunwald/go-jira?branch=master) + +[Go](https://golang.org/) client library for [Atlassian JIRA](https://www.atlassian.com/software/jira). + +![Go client library for Atlassian JIRA](./img/go-jira-compressed.png "Go client library for Atlassian JIRA.") + +## Features + +* Authentication (HTTP Basic, OAuth, Session Cookie) +* Create and receive issues +* Create and retrieve issue transitions (status updates) +* Call every API endpoint of the JIRA, even it is not directly implemented in this library + +This package is not JIRA API complete (yet), but you can call every API endpoint you want. See [Call a not implemented API endpoint](#call-a-not-implemented-api-endpoint) how to do this. For all possible API endpoints of JRIA have a look at [latest JIRA REST API documentation](https://docs.atlassian.com/jira/REST/latest/). + +## Compatible JIRA versions + +This package was tested against JIRA v6.3.4 and v7.1.2. + +## Installation + +It is go gettable + + $ go get github.com/andygrunwald/go-jira + +(optional) to run unit / example tests: + + $ cd $GOPATH/src/github.com/andygrunwald/go-jira + $ go test -v ./... + +## API + +Please have a look at the [GoDoc documentation](https://godoc.org/github.com/andygrunwald/go-jira) for a detailed API description. + +The [latest JIRA REST API documentation](https://docs.atlassian.com/jira/REST/latest/) was the base document for this package. + +## Examples + +Further a few examples how the API can be used. +A few more examples are available in the [GoDoc examples section](https://godoc.org/github.com/andygrunwald/go-jira#pkg-examples). + +### Get a single issue + +Lets retrieve [MESOS-3325](https://issues.apache.org/jira/browse/MESOS-3325) from the [Apache Mesos](http://mesos.apache.org/) project. + +```go +package main + +import ( + "fmt" + "github.com/andygrunwald/go-jira" +) + +func main() { + jiraClient, _ := jira.NewClient(nil, "https://issues.apache.org/jira/") + issue, _, _ := jiraClient.Issue.Get("MESOS-3325") + + fmt.Printf("%s: %+v\n", issue.Key, issue.Fields.Summary) + fmt.Printf("Type: %s\n", issue.Fields.Type.Name) + fmt.Printf("Priority: %s\n", issue.Fields.Priority.Name) + + // MESOS-3325: Running mesos-slave@0.23 in a container causes slave to be lost after a restart + // Type: Bug + // Priority: Critical +} +``` + +### Authenticate with session cookie + +Some actions require an authenticated user. +Here is an example with a session cookie authentification. + +```go +package main + +import ( + "fmt" + "github.com/andygrunwald/go-jira" +) + +func main() { + jiraClient, err := jira.NewClient(nil, "https://your.jira-instance.com/") + if err != nil { + panic(err) + } + + res, err := jiraClient.Authentication.AcquireSessionCookie("username", "password") + if err != nil || res == false { + fmt.Printf("Result: %v\n", res) + panic(err) + } + + issue, _, err := jiraClient.Issue.Get("SYS-5156") + if err != nil { + panic(err) + } + + fmt.Printf("%s: %+v\n", issue.Key, issue.Fields.Summary) +} +``` + +### Call a not implemented API endpoint + +Not all API endpoints of the JIRA API are implemented into *go-jira*. +But you can call them anyway: +Lets get all public projects of [Atlassian`s JIRA instance](https://jira.atlassian.com/). + +```go +package main + +import ( + "fmt" + "github.com/andygrunwald/go-jira" +) + +func main() { + jiraClient, _ := jira.NewClient(nil, "https://jira.atlassian.com/") + req, _ := jiraClient.NewRequest("GET", "/rest/api/2/project", nil) + + projects := new([]jira.Project) + _, err := jiraClient.Do(req, projects) + if err != nil { + panic(err) + } + + for _, project := range *projects { + fmt.Printf("%s: %s\n", project.Key, project.Name) + } + + // ... + // BAM: Bamboo + // BAMJ: Bamboo JIRA Plugin + // CLOV: Clover + // CONF: Confluence + // ... +} +``` + +## Implementations + +* [andygrunwald/jitic](https://github.com/andygrunwald/jitic) - The JIRA Ticket Checker + +## Code structure + +The code structure of this package was inspired by [google/go-github](https://github.com/google/go-github). + +There is one main part (the client). +Based on this main client the other endpoints, like Issues or Authentication are extracted in services. E.g. `IssueService` or `AuthenticationService`. +These services own a responsibility of the single endpoints / usecases of JIRA. + +## Contribution + +Contribution, in any kind of way, is highly welcome! +It doesn't matter if you are not able to write code. +Creating issues or holding talks and help other people to use [go-jira](https://github.com/andygrunwald/go-jira) is contribution, too! +A few examples: + +* Correct typos in the README / documentation +* Reporting bugs +* Implement a new feature or endpoint +* Sharing the love if [go-jira](https://github.com/andygrunwald/go-jira) and help people to get use to it + +If you are new to pull requests, checkout [Collaborating on projects using issues and pull requests / Creating a pull request](https://help.github.com/articles/creating-a-pull-request/). + +## License + +This project is released under the terms of the [MIT license](http://en.wikipedia.org/wiki/MIT_License). \ No newline at end of file diff --git a/vendor/src/github.com/andygrunwald/go-jira/authentication.go b/vendor/src/github.com/andygrunwald/go-jira/authentication.go new file mode 100644 index 0000000..0b9a6cc --- /dev/null +++ b/vendor/src/github.com/andygrunwald/go-jira/authentication.go @@ -0,0 +1,81 @@ +package jira + +import ( + "fmt" + "net/http" +) + +// AuthenticationService handles authentication for the JIRA instance / API. +// +// JIRA API docs: https://docs.atlassian.com/jira/REST/latest/#authentication +type AuthenticationService struct { + client *Client +} + +// Session represents a Session JSON response by the JIRA API. +type Session struct { + Self string `json:"self,omitempty"` + Name string `json:"name,omitempty"` + Session struct { + Name string `json:"name"` + Value string `json:"value"` + } `json:"session,omitempty"` + LoginInfo struct { + FailedLoginCount int `json:"failedLoginCount"` + LoginCount int `json:"loginCount"` + LastFailedLoginTime string `json:"lastFailedLoginTime"` + PreviousLoginTime string `json:"previousLoginTime"` + } `json:"loginInfo"` + Cookies []*http.Cookie +} + +// AcquireSessionCookie creates a new session for a user in JIRA. +// Once a session has been successfully created it can be used to access any of JIRA's remote APIs and also the web UI by passing the appropriate HTTP Cookie header. +// The header will by automatically applied to every API request. +// Note that it is generally preferrable to use HTTP BASIC authentication with the REST API. +// However, this resource may be used to mimic the behaviour of JIRA's log-in page (e.g. to display log-in errors to a user). +// +// JIRA API docs: https://docs.atlassian.com/jira/REST/latest/#auth/1/session +func (s *AuthenticationService) AcquireSessionCookie(username, password string) (bool, error) { + apiEndpoint := "rest/auth/1/session" + body := struct { + Username string `json:"username"` + Password string `json:"password"` + }{ + username, + password, + } + + req, err := s.client.NewRequest("POST", apiEndpoint, body) + if err != nil { + return false, err + } + + session := new(Session) + resp, err := s.client.Do(req, session) + session.Cookies = resp.Cookies() + + if err != nil { + return false, fmt.Errorf("Auth at JIRA instance failed (HTTP(S) request). %s", err) + } + if resp != nil && resp.StatusCode != 200 { + return false, fmt.Errorf("Auth at JIRA instance failed (HTTP(S) request). Status code: %d", resp.StatusCode) + } + + s.client.session = session + + return true, nil +} + +// Authenticated reports if the current Client has an authenticated session with JIRA +func (s *AuthenticationService) Authenticated() bool { + if s != nil { + return s.client.session != nil + } + return false +} + +// TODO Missing API Call GET (Returns information about the currently authenticated user's session) +// See https://docs.atlassian.com/jira/REST/latest/#auth/1/session +// TODO Missing API Call DELETE (Logs the current user out of JIRA, destroying the existing session, if any.) +// See https://docs.atlassian.com/jira/REST/latest/#auth/1/session diff --git a/vendor/src/github.com/andygrunwald/go-jira/authentication_test.go b/vendor/src/github.com/andygrunwald/go-jira/authentication_test.go new file mode 100644 index 0000000..d6741a3 --- /dev/null +++ b/vendor/src/github.com/andygrunwald/go-jira/authentication_test.go @@ -0,0 +1,86 @@ +package jira + +import ( + "bytes" + "fmt" + "io/ioutil" + "net/http" + "testing" +) + +func TestAuthenticationService_AcquireSessionCookie_Failure(t *testing.T) { + setup() + defer teardown() + testMux.HandleFunc("/rest/auth/1/session", func(w http.ResponseWriter, r *http.Request) { + testMethod(t, r, "POST") + testRequestURL(t, r, "/rest/auth/1/session") + b, err := ioutil.ReadAll(r.Body) + if err != nil { + t.Errorf("Error in read body: %s", err) + } + if bytes.Index(b, []byte(`"username":"foo"`)) < 0 { + t.Error("No username found") + } + if bytes.Index(b, []byte(`"password":"bar"`)) < 0 { + t.Error("No password found") + } + + // Emulate error + w.WriteHeader(http.StatusInternalServerError) + }) + + res, err := testClient.Authentication.AcquireSessionCookie("foo", "bar") + if err == nil { + t.Errorf("Expected error, but no error given") + } + if res == true { + t.Error("Expected error, but result was true") + } + + if testClient.Authentication.Authenticated() != false { + t.Error("Expected false, but result was true") + } +} + +func TestAuthenticationService_AcquireSessionCookie_Success(t *testing.T) { + setup() + defer teardown() + testMux.HandleFunc("/rest/auth/1/session", func(w http.ResponseWriter, r *http.Request) { + testMethod(t, r, "POST") + testRequestURL(t, r, "/rest/auth/1/session") + b, err := ioutil.ReadAll(r.Body) + if err != nil { + t.Errorf("Error in read body: %s", err) + } + if bytes.Index(b, []byte(`"username":"foo"`)) < 0 { + t.Error("No username found") + } + if bytes.Index(b, []byte(`"password":"bar"`)) < 0 { + t.Error("No password found") + } + + fmt.Fprint(w, `{"session":{"name":"JSESSIONID","value":"12345678901234567890"},"loginInfo":{"failedLoginCount":10,"loginCount":127,"lastFailedLoginTime":"2016-03-16T04:22:35.386+0000","previousLoginTime":"2016-03-16T04:22:35.386+0000"}}`) + }) + + res, err := testClient.Authentication.AcquireSessionCookie("foo", "bar") + if err != nil { + t.Errorf("No error expected. Got %s", err) + } + if res == false { + t.Error("Expected result was true. Got false") + } + + if testClient.Authentication.Authenticated() != true { + t.Error("Expected true, but result was false") + } +} + +func TestAuthenticationService_Authenticated(t *testing.T) { + // Skip setup() because we don't want a fully setup client + testClient = new(Client) + + // Test before we've attempted to authenticate + if testClient.Authentication.Authenticated() != false { + t.Error("Expected false, but result was true") + } +} diff --git a/vendor/src/github.com/andygrunwald/go-jira/board.go b/vendor/src/github.com/andygrunwald/go-jira/board.go new file mode 100644 index 0000000..3072edf --- /dev/null +++ b/vendor/src/github.com/andygrunwald/go-jira/board.go @@ -0,0 +1,155 @@ +package jira + +import ( + "fmt" + "time" +) + +// BoardService handles Agile Boards for the JIRA instance / API. +// +// JIRA API docs: https://docs.atlassian.com/jira-software/REST/server/ +type BoardService struct { + client *Client +} + +// BoardsList reflects a list of agile boards +type BoardsList struct { + MaxResults int `json:"maxResults"` + StartAt int `json:"startAt"` + Total int `json:"total"` + IsLast bool `json:"isLast"` + Values []Board `json:"values"` +} + +// Board represents a JIRA agile board +type Board struct { + ID int `json:"id,omitempty"` + Self string `json:"self,omitempty"` + Name string `json:"name,omitempty"` + Type string `json:"type,omitempty"` + FilterID int `json:"filterId,omitempty"` +} + +// BoardListOptions specifies the optional parameters to the BoardService.GetList +type BoardListOptions struct { + // BoardType filters results to boards of the specified type. + // Valid values: scrum, kanban. + BoardType string `url:"boardType,omitempty"` + // Name filters results to boards that match or partially match the specified name. + Name string `url:"name,omitempty"` + // ProjectKeyOrID filters results to boards that are relevant to a project. + // Relevance meaning that the JQL filter defined in board contains a reference to a project. + ProjectKeyOrID string `url:"projectKeyOrId,omitempty"` + + SearchOptions +} + +// Wrapper struct for search result +type sprintsResult struct { + Sprints []Sprint `json:"values"` +} + +// Sprint represents a sprint on JIRA agile board +type Sprint struct { + ID int `json:"id"` + Name string `json:"name"` + CompleteDate *time.Time `json:"completeDate"` + EndDate *time.Time `json:"endDate"` + StartDate *time.Time `json:"startDate"` + OriginBoardID int `json:"originBoardId"` + Self string `json:"self"` + State string `json:"state"` +} + +// GetAllBoards will returns all boards. This only includes boards that the user has permission to view. +// +// JIRA API docs: https://docs.atlassian.com/jira-software/REST/cloud/#agile/1.0/board-getAllBoards +func (s *BoardService) GetAllBoards(opt *BoardListOptions) (*BoardsList, *Response, error) { + apiEndpoint := "rest/agile/1.0/board" + url, err := addOptions(apiEndpoint, opt) + req, err := s.client.NewRequest("GET", url, nil) + if err != nil { + return nil, nil, err + } + + boards := new(BoardsList) + resp, err := s.client.Do(req, boards) + if err != nil { + return nil, resp, err + } + + return boards, resp, err +} + +// GetBoard will returns the board for the given boardID. +// This board will only be returned if the user has permission to view it. +// +// JIRA API docs: https://docs.atlassian.com/jira-software/REST/cloud/#agile/1.0/board-getBoard +func (s *BoardService) GetBoard(boardID int) (*Board, *Response, error) { + apiEndpoint := fmt.Sprintf("rest/agile/1.0/board/%v", boardID) + req, err := s.client.NewRequest("GET", apiEndpoint, nil) + if err != nil { + return nil, nil, err + } + + board := new(Board) + resp, err := s.client.Do(req, board) + if err != nil { + return nil, resp, err + } + return board, resp, nil +} + +// CreateBoard creates a new board. Board name, type and filter Id is required. +// name - Must be less than 255 characters. +// type - Valid values: scrum, kanban +// filterId - Id of a filter that the user has permissions to view. +// Note, if the user does not have the 'Create shared objects' permission and tries to create a shared board, a private +// board will be created instead (remember that board sharing depends on the filter sharing). +// +// JIRA API docs: https://docs.atlassian.com/jira-software/REST/cloud/#agile/1.0/board-createBoard +func (s *BoardService) CreateBoard(board *Board) (*Board, *Response, error) { + apiEndpoint := "rest/agile/1.0/board" + req, err := s.client.NewRequest("POST", apiEndpoint, board) + if err != nil { + return nil, nil, err + } + + responseBoard := new(Board) + resp, err := s.client.Do(req, responseBoard) + if err != nil { + return nil, resp, err + } + + return responseBoard, resp, nil +} + +// DeleteBoard will delete an agile board. +// +// JIRA API docs: https://docs.atlassian.com/jira-software/REST/cloud/#agile/1.0/board-deleteBoard +func (s *BoardService) DeleteBoard(boardID int) (*Board, *Response, error) { + apiEndpoint := fmt.Sprintf("rest/agile/1.0/board/%v", boardID) + req, err := s.client.NewRequest("DELETE", apiEndpoint, nil) + if err != nil { + return nil, nil, err + } + + resp, err := s.client.Do(req, nil) + return nil, resp, err +} + +// GetAllSprints will returns all sprints from a board, for a given board Id. +// This only includes sprints that the user has permission to view. +// +// JIRA API docs: https://docs.atlassian.com/jira-software/REST/cloud/#agile/1.0/board/{boardId}/sprint +func (s *BoardService) GetAllSprints(boardID string) ([]Sprint, *Response, error) { + apiEndpoint := fmt.Sprintf("rest/agile/1.0/board/%s/sprint", boardID) + req, err := s.client.NewRequest("GET", apiEndpoint, nil) + if err != nil { + return nil, nil, err + } + + result := new(sprintsResult) + resp, err := s.client.Do(req, result) + return result.Sprints, resp, err +} diff --git a/vendor/src/github.com/andygrunwald/go-jira/board_test.go b/vendor/src/github.com/andygrunwald/go-jira/board_test.go new file mode 100644 index 0000000..454fc44 --- /dev/null +++ b/vendor/src/github.com/andygrunwald/go-jira/board_test.go @@ -0,0 +1,186 @@ +package jira + +import ( + "fmt" + "io/ioutil" + "net/http" + "testing" +) + +func TestBoardService_GetAllBoards(t *testing.T) { + setup() + defer teardown() + testAPIEdpoint := "/rest/agile/1.0/board" + + raw, err := ioutil.ReadFile("./mocks/all_boards.json") + if err != nil { + t.Error(err.Error()) + } + testMux.HandleFunc(testAPIEdpoint, func(w http.ResponseWriter, r *http.Request) { + testMethod(t, r, "GET") + testRequestURL(t, r, testAPIEdpoint) + fmt.Fprint(w, string(raw)) + }) + + projects, _, err := testClient.Board.GetAllBoards(nil) + if projects == nil { + t.Error("Expected boards list. Boards list is nil") + } + if err != nil { + t.Errorf("Error given: %s", err) + } +} + +// Test with params +func TestBoardService_GetAllBoards_WithFilter(t *testing.T) { + setup() + defer teardown() + testAPIEdpoint := "/rest/agile/1.0/board" + + raw, err := ioutil.ReadFile("./mocks/all_boards_filtered.json") + if err != nil { + t.Error(err.Error()) + } + testMux.HandleFunc(testAPIEdpoint, func(w http.ResponseWriter, r *http.Request) { + testMethod(t, r, "GET") + testRequestURL(t, r, testAPIEdpoint) + fmt.Fprint(w, string(raw)) + }) + + boardsListOptions := &BoardListOptions{ + BoardType: "scrum", + Name: "Test", + ProjectKeyOrID: "TE", + } + boardsListOptions.StartAt = 1 + boardsListOptions.MaxResults = 10 + + projects, _, err := testClient.Board.GetAllBoards(boardsListOptions) + if projects == nil { + t.Error("Expected boards list. Boards list is nil") + } + if err != nil { + t.Errorf("Error given: %s", err) + } +} + +func TestBoardService_GetBoard(t *testing.T) { + setup() + defer teardown() + testAPIEdpoint := "/rest/agile/1.0/board/1" + + testMux.HandleFunc(testAPIEdpoint, func(w http.ResponseWriter, r *http.Request) { + testMethod(t, r, "GET") + testRequestURL(t, r, testAPIEdpoint) + fmt.Fprint(w, `{"id":4,"self":"https://test.jira.org/rest/agile/1.0/board/1","name":"Test Weekly","type":"scrum"}`) + }) + + board, _, err := testClient.Board.GetBoard(1) + if board == nil { + t.Error("Expected board list. Board list is nil") + } + if err != nil { + t.Errorf("Error given: %s", err) + } +} + +func TestBoardService_GetBoard_WrongID(t *testing.T) { + setup() + defer teardown() + testAPIEndpoint := "/rest/api/2/board/99999999" + + testMux.HandleFunc(testAPIEndpoint, func(w http.ResponseWriter, r *http.Request) { + testMethod(t, r, "GET") + testRequestURL(t, r, testAPIEndpoint) + fmt.Fprint(w, nil) + }) + + board, resp, err := testClient.Board.GetBoard(99999999) + if board != nil { + t.Errorf("Expected nil. Got %s", err) + } + + if resp.Status == "404" { + t.Errorf("Expected status 404. Got %s", resp.Status) + } + if err == nil { + t.Errorf("Error given: %s", err) + } +} + +func TestBoardService_CreateBoard(t *testing.T) { + setup() + defer teardown() + testMux.HandleFunc("/rest/agile/1.0/board", func(w http.ResponseWriter, r *http.Request) { + testMethod(t, r, "POST") + testRequestURL(t, r, "/rest/agile/1.0/board") + + w.WriteHeader(http.StatusCreated) + fmt.Fprint(w, `{"id":17,"self":"https://test.jira.org/rest/agile/1.0/board/17","name":"Test","type":"kanban"}`) + }) + + b := &Board{ + Name: "Test", + Type: "kanban", + FilterID: 17, + } + issue, _, err := testClient.Board.CreateBoard(b) + if issue == nil { + t.Error("Expected board. Board is nil") + } + if err != nil { + t.Errorf("Error given: %s", err) + } +} + +func TestBoardService_DeleteBoard(t *testing.T) { + setup() + defer teardown() + testMux.HandleFunc("/rest/agile/1.0/board/1", func(w http.ResponseWriter, r *http.Request) { + testMethod(t, r, "DELETE") + testRequestURL(t, r, "/rest/agile/1.0/board/1") + + w.WriteHeader(http.StatusNoContent) + fmt.Fprint(w, `{}`) + }) + + _, resp, err := testClient.Board.DeleteBoard(1) + if resp.StatusCode != 204 { + t.Error("Expected board not deleted.") + } + if err != nil { + t.Errorf("Error given: %s", err) + } +} + +func TestBoardService_GetAllSprints(t *testing.T) { + setup() + defer teardown() + + testAPIEndpoint := "/rest/agile/1.0/board/123/sprint" + + raw, err := ioutil.ReadFile("./mocks/sprints.json") + if err != nil { + t.Error(err.Error()) + } + + testMux.HandleFunc(testAPIEndpoint, func(w http.ResponseWriter, r *http.Request) { + testMethod(t, r, "GET") + testRequestURL(t, r, testAPIEndpoint) + fmt.Fprint(w, string(raw)) + }) + + sprints, _, err := testClient.Board.GetAllSprints("123") + + if err != nil { + t.Errorf("Got error: %v", err) + } + + if sprints == nil { + t.Error("Expected sprint list. Got nil.") + } + + if len(sprints) != 4 { + t.Errorf("Expected 4 transitions. Got %d", len(sprints)) + } +} diff --git a/vendor/src/github.com/andygrunwald/go-jira/img/go-jira-compressed.png b/vendor/src/github.com/andygrunwald/go-jira/img/go-jira-compressed.png new file mode 100644 index 0000000..8fc584a Binary files /dev/null and b/vendor/src/github.com/andygrunwald/go-jira/img/go-jira-compressed.png differ diff --git a/vendor/src/github.com/andygrunwald/go-jira/issue.go b/vendor/src/github.com/andygrunwald/go-jira/issue.go new file mode 100644 index 0000000..b9c9610 --- /dev/null +++ b/vendor/src/github.com/andygrunwald/go-jira/issue.go @@ -0,0 +1,574 @@ +package jira + +import ( + "bytes" + "fmt" + "io" + "mime/multipart" + "net/url" + "strings" + "time" +) + +const ( + // AssigneeAutomatic represents the value of the "Assignee: Automatic" of JIRA + AssigneeAutomatic = "-1" +) + +// IssueService handles Issues for the JIRA instance / API. +// +// JIRA API docs: https://docs.atlassian.com/jira/REST/latest/#api/2/issue +type IssueService struct { + client *Client +} + +// Issue represents a JIRA issue. +type Issue struct { + Expand string `json:"expand,omitempty"` + ID string `json:"id,omitempty"` + Self string `json:"self,omitempty"` + Key string `json:"key,omitempty"` + Fields *IssueFields `json:"fields,omitempty"` +} + +// Attachment represents a JIRA attachment +type Attachment struct { + Self string `json:"self,omitempty"` + ID string `json:"id,omitempty"` + Filename string `json:"filename,omitempty"` + Author *User `json:"author,omitempty"` + Created string `json:"created,omitempty"` + Size int `json:"size,omitempty"` + MimeType string `json:"mimeType,omitempty"` + Content string `json:"content,omitempty"` + Thumbnail string `json:"thumbnail,omitempty"` +} + +// Epic represents the epic to which an issue is associated +// Not that this struct does not process the returned "color" value +type Epic struct { + ID int `json:"id"` + Key string `json:"key"` + Self string `json:"self"` + Name string `json:"name"` + Summary string `json:"summary"` + Done bool `json:"done"` +} + +// IssueFields represents single fields of a JIRA issue. +// Every JIRA issue has several fields attached. +type IssueFields struct { + // TODO Missing fields + // * "timespent": null, + // * "aggregatetimespent": null, + // * "workratio": -1, + // * "lastViewed": null, + // * "timeestimate": null, + // * "aggregatetimeoriginalestimate": null, + // * "timeoriginalestimate": null, + // * "timetracking": {}, + // * "aggregatetimeestimate": null, + // * "environment": null, + // * "duedate": null, + Type IssueType `json:"issuetype"` + Project Project `json:"project,omitempty"` + Resolution *Resolution `json:"resolution,omitempty"` + Priority *Priority `json:"priority,omitempty"` + Resolutiondate string `json:"resolutiondate,omitempty"` + Created string `json:"created,omitempty"` + Watches *Watches `json:"watches,omitempty"` + Assignee *User `json:"assignee,omitempty"` + Updated string `json:"updated,omitempty"` + Description string `json:"description,omitempty"` + Summary string `json:"summary"` + Creator *User `json:"Creator,omitempty"` + Reporter *User `json:"reporter,omitempty"` + Components []*Component `json:"components,omitempty"` + Status *Status `json:"status,omitempty"` + Progress *Progress `json:"progress,omitempty"` + AggregateProgress *Progress `json:"aggregateprogress,omitempty"` + Worklog *Worklog `json:"worklog,omitempty"` + IssueLinks []*IssueLink `json:"issuelinks,omitempty"` + Comments *Comments `json:"comment,omitempty"` + FixVersions []*FixVersion `json:"fixVersions,omitempty"` + Labels []string `json:"labels,omitempty"` + Subtasks []*Subtasks `json:"subtasks,omitempty"` + Attachments []*Attachment `json:"attachment,omitempty"` + Epic *Epic `json:"epic,omitempty"` +} + +// IssueType represents a type of a JIRA issue. +// Typical types are "Request", "Bug", "Story", ... +type IssueType struct { + Self string `json:"self,omitempty"` + ID string `json:"id,omitempty"` + Description string `json:"description,omitempty"` + IconURL string `json:"iconUrl,omitempty"` + Name string `json:"name,omitempty"` + Subtask bool `json:"subtask,omitempty"` + AvatarID int `json:"avatarId,omitempty"` +} + +// Resolution represents a resolution of a JIRA issue. +// Typical types are "Fixed", "Suspended", "Won't Fix", ... +type Resolution struct { + Self string `json:"self"` + ID string `json:"id"` + Description string `json:"description"` + Name string `json:"name"` +} + +// Priority represents a priority of a JIRA issue. +// Typical types are "Normal", "Moderate", "Urgent", ... +type Priority struct { + Self string `json:"self,omitempty"` + IconURL string `json:"iconUrl,omitempty"` + Name string `json:"name,omitempty"` + ID string `json:"id,omitempty"` +} + +// Watches represents a type of how many user are "observing" a JIRA issue to track the status / updates. +type Watches struct { + Self string `json:"self,omitempty"` + WatchCount int `json:"watchCount,omitempty"` + IsWatching bool `json:"isWatching,omitempty"` +} + +// User represents a user who is this JIRA issue assigned to. +type User struct { + Self string `json:"self,omitempty"` + Name string `json:"name,omitempty"` + Key string `json:"key,omitempty"` + EmailAddress string `json:"emailAddress,omitempty"` + AvatarUrls AvatarUrls `json:"avatarUrls,omitempty"` + DisplayName string `json:"displayName,omitempty"` + Active bool `json:"active,omitempty"` + TimeZone string `json:"timeZone,omitempty"` +} + +// AvatarUrls represents different dimensions of avatars / images +type AvatarUrls struct { + Four8X48 string `json:"48x48,omitempty"` + Two4X24 string `json:"24x24,omitempty"` + One6X16 string `json:"16x16,omitempty"` + Three2X32 string `json:"32x32,omitempty"` +} + +// Component represents a "component" of a JIRA issue. +// Components can be user defined in every JIRA instance. +type Component struct { + Self string `json:"self,omitempty"` + ID string `json:"id,omitempty"` + Name string `json:"name,omitempty"` +} + +// Status represents the current status of a JIRA issue. +// Typical status are "Open", "In Progress", "Closed", ... +// Status can be user defined in every JIRA instance. +type Status struct { + Self string `json:"self"` + Description string `json:"description"` + IconURL string `json:"iconUrl"` + Name string `json:"name"` + ID string `json:"id"` + StatusCategory StatusCategory `json:"statusCategory"` +} + +// StatusCategory represents the category a status belongs to. +// Those categories can be user defined in every JIRA instance. +type StatusCategory struct { + Self string `json:"self"` + ID int `json:"id"` + Name string `json:"name"` + Key string `json:"key"` + ColorName string `json:"colorName"` +} + +// Progress represents the progress of a JIRA issue. +type Progress struct { + Progress int `json:"progress"` + Total int `json:"total"` +} + +// Time represents the Time definition of JIRA as a time.Time of go +type Time time.Time + +// Wrapper struct for search result +type transitionResult struct { + Transitions []Transition `json:"transitions"` +} + +// Transition represents an issue transition in JIRA +type Transition struct { + ID string `json:"id"` + Name string `json:"name"` + Fields map[string]TransitionField `json:"fields"` +} + +// TransitionField represents the value of one Transistion +type TransitionField struct { + Required bool `json:"required"` +} + +// CreateTransitionPayload is used for creating new issue transitions +type CreateTransitionPayload struct { + Transition TransitionPayload `json:"transition"` +} + +// TransitionPayload represents the request payload of Transistion calls like DoTransition +type TransitionPayload struct { + ID string `json:"id"` +} + +// UnmarshalJSON will transform the JIRA time into a time.Time +// during the transformation of the JIRA JSON response +func (t *Time) UnmarshalJSON(b []byte) error { + ti, err := time.Parse("\"2006-01-02T15:04:05.999-0700\"", string(b)) + if err != nil { + return err + } + *t = Time(ti) + return nil +} + +// Worklog represents the work log of a JIRA issue. +// One Worklog contains zero or n WorklogRecords +// JIRA Wiki: https://confluence.atlassian.com/jira/logging-work-on-an-issue-185729605.html +type Worklog struct { + StartAt int `json:"startAt"` + MaxResults int `json:"maxResults"` + Total int `json:"total"` + Worklogs []WorklogRecord `json:"worklogs"` +} + +// WorklogRecord represents one entry of a Worklog +type WorklogRecord struct { + Self string `json:"self"` + Author User `json:"author"` + UpdateAuthor User `json:"updateAuthor"` + Comment string `json:"comment"` + Created Time `json:"created"` + Updated Time `json:"updated"` + Started Time `json:"started"` + TimeSpent string `json:"timeSpent"` + TimeSpentSeconds int `json:"timeSpentSeconds"` + ID string `json:"id"` + IssueID string `json:"issueId"` +} + +// Subtasks represents all issues of a parent issue. +type Subtasks struct { + ID string `json:"id"` + Key string `json:"key"` + Self string `json:"self"` + Fields IssueFields `json:"fields"` +} + +// IssueLink represents a link between two issues in JIRA. +type IssueLink struct { + ID string `json:"id,omitempty"` + Self string `json:"self,omitempty"` + Type IssueLinkType `json:"type"` + OutwardIssue *Issue `json:"outwardIssue"` + InwardIssue *Issue `json:"inwardIssue"` + Comment *Comment `json:"comment,omitempty"` +} + +// IssueLinkType represents a type of a link between to issues in JIRA. +// Typical issue link types are "Related to", "Duplicate", "Is blocked by", etc. +type IssueLinkType struct { + ID string `json:"id,omitempty"` + Self string `json:"self,omitempty"` + Name string `json:"name"` + Inward string `json:"inward"` + Outward string `json:"outward"` +} + +// Comments represents a list of Comment. +type Comments struct { + Comments []*Comment `json:"comments,omitempty"` +} + +// Comment represents a comment by a person to an issue in JIRA. +type Comment struct { + ID string `json:"id,omitempty"` + Self string `json:"self,omitempty"` + Name string `json:"name,omitempty"` + Author User `json:"author,omitempty"` + Body string `json:"body,omitempty"` + UpdateAuthor User `json:"updateAuthor,omitempty"` + Updated string `json:"updated,omitempty"` + Created string `json:"created,omitempty"` + Visibility CommentVisibility `json:"visibility,omitempty"` +} + +// FixVersion represents a software release in which an issue is fixed. +type FixVersion struct { + Archived *bool `json:"archived,omitempty"` + ID string `json:"id,omitempty"` + Name string `json:"name,omitempty"` + ProjectID int `json:"projectId,omitempty"` + ReleaseDate string `json:"releaseDate,omitempty"` + Released *bool `json:"released,omitempty"` + Self string `json:"self,omitempty"` + UserReleaseDate string `json:"userReleaseDate,omitempty"` +} + +// CommentVisibility represents he visibility of a comment. +// E.g. Type could be "role" and Value "Administrators" +type CommentVisibility struct { + Type string `json:"type,omitempty"` + Value string `json:"value,omitempty"` +} + +// SearchOptions specifies the optional parameters to various List methods that +// support pagination. +// Pagination is used for the JIRA REST APIs to conserve server resources and limit +// response size for resources that return potentially large collection of items. +// A request to a pages API will result in a values array wrapped in a JSON object with some paging metadata +// Default Pagination options +type SearchOptions struct { + // StartAt: The starting index of the returned projects. Base index: 0. + StartAt int `url:"startAt,omitempty"` + // MaxResults: The maximum number of projects to return per page. Default: 50. + MaxResults int `url:"maxResults,omitempty"` +} + +// searchResult is only a small wrapper arround the Search (with JQL) method +// to be able to parse the results +type searchResult struct { + Issues []Issue `json:"issues"` + StartAt int `json:"startAt"` + MaxResults int `json:"maxResults"` + Total int `json:"total"` +} + +// CustomFields represents custom fields of JIRA +// This can heavily differ between JIRA instances +type CustomFields map[string]string + +// Get returns a full representation of the issue for the given issue key. +// JIRA will attempt to identify the issue by the issueIdOrKey path parameter. +// This can be an issue id, or an issue key. +// If the issue cannot be found via an exact match, JIRA will also look for the issue in a case-insensitive way, or by looking to see if the issue was moved. +// +// JIRA API docs: https://docs.atlassian.com/jira/REST/latest/#api/2/issue-getIssue +func (s *IssueService) Get(issueID string) (*Issue, *Response, error) { + apiEndpoint := fmt.Sprintf("rest/api/2/issue/%s", issueID) + req, err := s.client.NewRequest("GET", apiEndpoint, nil) + if err != nil { + return nil, nil, err + } + + issue := new(Issue) + resp, err := s.client.Do(req, issue) + if err != nil { + return nil, resp, err + } + + return issue, resp, nil +} + +// DownloadAttachment returns a Response of an attachment for a given attachmentID. +// The attachment is in the Response.Body of the response. +// This is an io.ReadCloser. +// The caller should close the resp.Body. +func (s *IssueService) DownloadAttachment(attachmentID string) (*Response, error) { + apiEndpoint := fmt.Sprintf("secure/attachment/%s/", attachmentID) + req, err := s.client.NewRequest("GET", apiEndpoint, nil) + if err != nil { + return nil, err + } + + resp, err := s.client.Do(req, nil) + if err != nil { + return resp, err + } + + return resp, nil +} + +// PostAttachment uploads r (io.Reader) as an attachment to a given attachmentID +func (s *IssueService) PostAttachment(attachmentID string, r io.Reader, attachmentName string) (*[]Attachment, *Response, error) { + apiEndpoint := fmt.Sprintf("rest/api/2/issue/%s/attachments", attachmentID) + + b := new(bytes.Buffer) + writer := multipart.NewWriter(b) + + fw, err := writer.CreateFormFile("file", attachmentName) + if err != nil { + return nil, nil, err + } + + if r != nil { + // Copy the file + if _, err = io.Copy(fw, r); err != nil { + return nil, nil, err + } + } + writer.Close() + + req, err := s.client.NewMultiPartRequest("POST", apiEndpoint, b) + if err != nil { + return nil, nil, err + } + + req.Header.Set("Content-Type", writer.FormDataContentType()) + + // PostAttachment response returns a JSON array (as multiple attachments can be posted) + attachment := new([]Attachment) + resp, err := s.client.Do(req, attachment) + if err != nil { + return nil, resp, err + } + + return attachment, resp, nil +} + +// Create creates an issue or a sub-task from a JSON representation. +// Creating a sub-task is similar to creating a regular issue, with two important differences: +// The issueType field must correspond to a sub-task issue type and you must provide a parent field in the issue create request containing the id or key of the parent issue. +// +// JIRA API docs: https://docs.atlassian.com/jira/REST/latest/#api/2/issue-createIssues +func (s *IssueService) Create(issue *Issue) (*Issue, *Response, error) { + apiEndpoint := "rest/api/2/issue/" + req, err := s.client.NewRequest("POST", apiEndpoint, issue) + if err != nil { + return nil, nil, err + } + + responseIssue := new(Issue) + resp, err := s.client.Do(req, responseIssue) + if err != nil { + return nil, resp, err + } + + return responseIssue, resp, nil +} + +// AddComment adds a new comment to issueID. +// +// JIRA API docs: https://docs.atlassian.com/jira/REST/latest/#api/2/issue-addComment +func (s *IssueService) AddComment(issueID string, comment *Comment) (*Comment, *Response, error) { + apiEndpoint := fmt.Sprintf("rest/api/2/issue/%s/comment", issueID) + req, err := s.client.NewRequest("POST", apiEndpoint, comment) + if err != nil { + return nil, nil, err + } + + responseComment := new(Comment) + resp, err := s.client.Do(req, responseComment) + if err != nil { + return nil, resp, err + } + + return responseComment, resp, nil +} + +// AddLink adds a link between two issues. +// +// JIRA API docs: https://docs.atlassian.com/jira/REST/latest/#api/2/issueLink +func (s *IssueService) AddLink(issueLink *IssueLink) (*Response, error) { + apiEndpoint := fmt.Sprintf("rest/api/2/issueLink") + req, err := s.client.NewRequest("POST", apiEndpoint, issueLink) + if err != nil { + return nil, err + } + + resp, err := s.client.Do(req, nil) + return resp, err +} + +// Search will search for tickets according to the jql +// +// JIRA API docs: https://developer.atlassian.com/jiradev/jira-apis/jira-rest-apis/jira-rest-api-tutorials/jira-rest-api-example-query-issues +func (s *IssueService) Search(jql string, options *SearchOptions) ([]Issue, *Response, error) { + var u string + if options == nil { + u = fmt.Sprintf("rest/api/2/search?jql=%s", url.QueryEscape(jql)) + } else { + u = fmt.Sprintf("rest/api/2/search?jql=%s&startAt=%d&maxResults=%d", url.QueryEscape(jql), + options.StartAt, options.MaxResults) + } + + req, err := s.client.NewRequest("GET", u, nil) + if err != nil { + return []Issue{}, nil, err + } + + v := new(searchResult) + resp, err := s.client.Do(req, v) + return v.Issues, resp, err +} + +// GetCustomFields returns a map of customfield_* keys with string values +func (s *IssueService) GetCustomFields(issueID string) (CustomFields, *Response, error) { + apiEndpoint := fmt.Sprintf("rest/api/2/issue/%s", issueID) + req, err := s.client.NewRequest("GET", apiEndpoint, nil) + if err != nil { + return nil, nil, err + } + + issue := new(map[string]interface{}) + resp, err := s.client.Do(req, issue) + if err != nil { + return nil, resp, err + } + + m := *issue + f := m["fields"] + cf := make(CustomFields) + if f == nil { + return cf, resp, nil + } + + if rec, ok := f.(map[string]interface{}); ok { + for key, val := range rec { + if strings.Contains(key, "customfield") { + cf[key] = fmt.Sprint(val) + } + } + } + return cf, resp, nil +} + +// GetTransitions gets a list of the transitions possible for this issue by the current user, +// along with fields that are required and their types. +// +// JIRA API docs: https://docs.atlassian.com/jira/REST/latest/#api/2/issue-getTransitions +func (s *IssueService) GetTransitions(id string) ([]Transition, *Response, error) { + apiEndpoint := fmt.Sprintf("rest/api/2/issue/%s/transitions?expand=transitions.fields", id) + req, err := s.client.NewRequest("GET", apiEndpoint, nil) + if err != nil { + return nil, nil, err + } + + result := new(transitionResult) + resp, err := s.client.Do(req, result) + return result.Transitions, resp, err +} + +// DoTransition performs a transition on an issue. +// When performing the transition you can update or set other issue fields. +// +// JIRA API docs: https://docs.atlassian.com/jira/REST/latest/#api/2/issue-doTransition +func (s *IssueService) DoTransition(ticketID, transitionID string) (*Response, error) { + apiEndpoint := fmt.Sprintf("rest/api/2/issue/%s/transitions", ticketID) + + payload := CreateTransitionPayload{ + Transition: TransitionPayload{ + ID: transitionID, + }, + } + req, err := s.client.NewRequest("POST", apiEndpoint, payload) + if err != nil { + return nil, err + } + + resp, err := s.client.Do(req, nil) + if err != nil { + return nil, err + } + + return resp, nil +} diff --git a/vendor/src/github.com/andygrunwald/go-jira/issue_test.go b/vendor/src/github.com/andygrunwald/go-jira/issue_test.go new file mode 100644 index 0000000..1cead6f --- /dev/null +++ b/vendor/src/github.com/andygrunwald/go-jira/issue_test.go @@ -0,0 +1,467 @@ +package jira + +import ( + "encoding/json" + "fmt" + "io/ioutil" + "net/http" + "reflect" + "strings" + "testing" +) + +func TestIssueService_Get_Success(t *testing.T) { + setup() + defer teardown() + testMux.HandleFunc("/rest/api/2/issue/10002", func(w http.ResponseWriter, r *http.Request) { + testMethod(t, r, "GET") + testRequestURL(t, r, "/rest/api/2/issue/10002") + + fmt.Fprint(w, `{"expand":"renderedFields,names,schema,transitions,operations,editmeta,changelog,versionedRepresentations","id":"10002","self":"http://www.example.com/jira/rest/api/2/issue/10002","key":"EX-1","fields":{"watcher":{"self":"http://www.example.com/jira/rest/api/2/issue/EX-1/watchers","isWatching":false,"watchCount":1,"watchers":[{"self":"http://www.example.com/jira/rest/api/2/user?username=fred","name":"fred","displayName":"Fred F. User","active":false}]},"attachment":[{"self":"http://www.example.com/jira/rest/api/2.0/attachments/10000","filename":"picture.jpg","author":{"self":"http://www.example.com/jira/rest/api/2/user?username=fred","name":"fred","avatarUrls":{"48x48":"http://www.example.com/jira/secure/useravatar?size=large&ownerId=fred","24x24":"http://www.example.com/jira/secure/useravatar?size=small&ownerId=fred","16x16":"http://www.example.com/jira/secure/useravatar?size=xsmall&ownerId=fred","32x32":"http://www.example.com/jira/secure/useravatar?size=medium&ownerId=fred"},"displayName":"Fred F. User","active":false},"created":"2016-03-16T04:22:37.461+0000","size":23123,"mimeType":"image/jpeg","content":"http://www.example.com/jira/attachments/10000","thumbnail":"http://www.example.com/jira/secure/thumbnail/10000"}],"sub-tasks":[{"id":"10000","type":{"id":"10000","name":"","inward":"Parent","outward":"Sub-task"},"outwardIssue":{"id":"10003","key":"EX-2","self":"http://www.example.com/jira/rest/api/2/issue/EX-2","fields":{"status":{"iconUrl":"http://www.example.com/jira//images/icons/statuses/open.png","name":"Open"}}}}],"description":"example bug report","project":{"self":"http://www.example.com/jira/rest/api/2/project/EX","id":"10000","key":"EX","name":"Example","avatarUrls":{"48x48":"http://www.example.com/jira/secure/projectavatar?size=large&pid=10000","24x24":"http://www.example.com/jira/secure/projectavatar?size=small&pid=10000","16x16":"http://www.example.com/jira/secure/projectavatar?size=xsmall&pid=10000","32x32":"http://www.example.com/jira/secure/projectavatar?size=medium&pid=10000"},"projectCategory":{"self":"http://www.example.com/jira/rest/api/2/projectCategory/10000","id":"10000","name":"FIRST","description":"First Project Category"}},"comment":{"comments":[{"self":"http://www.example.com/jira/rest/api/2/issue/10010/comment/10000","id":"10000","author":{"self":"http://www.example.com/jira/rest/api/2/user?username=fred","name":"fred","displayName":"Fred F. User","active":false},"body":"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque eget venenatis elit. Duis eu justo eget augue iaculis fermentum. Sed semper quam laoreet nisi egestas at posuere augue semper.","updateAuthor":{"self":"http://www.example.com/jira/rest/api/2/user?username=fred","name":"fred","displayName":"Fred F. User","active":false},"created":"2016-03-16T04:22:37.356+0000","updated":"2016-03-16T04:22:37.356+0000","visibility":{"type":"role","value":"Administrators"}}]},"issuelinks":[{"id":"10001","type":{"id":"10000","name":"Dependent","inward":"depends on","outward":"is depended by"},"outwardIssue":{"id":"10004L","key":"PRJ-2","self":"http://www.example.com/jira/rest/api/2/issue/PRJ-2","fields":{"status":{"iconUrl":"http://www.example.com/jira//images/icons/statuses/open.png","name":"Open"}}}},{"id":"10002","type":{"id":"10000","name":"Dependent","inward":"depends on","outward":"is depended by"},"inwardIssue":{"id":"10004","key":"PRJ-3","self":"http://www.example.com/jira/rest/api/2/issue/PRJ-3","fields":{"status":{"iconUrl":"http://www.example.com/jira//images/icons/statuses/open.png","name":"Open"}}}}],"worklog":{"worklogs":[{"self":"http://www.example.com/jira/rest/api/2/issue/10010/worklog/10000","author":{"self":"http://www.example.com/jira/rest/api/2/user?username=fred","name":"fred","displayName":"Fred F. User","active":false},"updateAuthor":{"self":"http://www.example.com/jira/rest/api/2/user?username=fred","name":"fred","displayName":"Fred F. User","active":false},"comment":"I did some work here.","updated":"2016-03-16T04:22:37.471+0000","visibility":{"type":"group","value":"jira-developers"},"started":"2016-03-16T04:22:37.471+0000","timeSpent":"3h 20m","timeSpentSeconds":12000,"id":"100028","issueId":"10002"}]},"updated":"2016-04-06T02:36:53.594-0700","timetracking":{"originalEstimate":"10m","remainingEstimate":"3m","timeSpent":"6m","originalEstimateSeconds":600,"remainingEstimateSeconds":200,"timeSpentSeconds":400}},"names":{"watcher":"watcher","attachment":"attachment","sub-tasks":"sub-tasks","description":"description","project":"project","comment":"comment","issuelinks":"issuelinks","worklog":"worklog","updated":"updated","timetracking":"timetracking"},"schema":{}}`) + }) + + issue, _, err := testClient.Issue.Get("10002") + if issue == nil { + t.Error("Expected issue. Issue is nil") + } + if err != nil { + t.Errorf("Error given: %s", err) + } +} + +func TestIssueService_Create(t *testing.T) { + setup() + defer teardown() + testMux.HandleFunc("/rest/api/2/issue/", func(w http.ResponseWriter, r *http.Request) { + testMethod(t, r, "POST") + testRequestURL(t, r, "/rest/api/2/issue/") + + w.WriteHeader(http.StatusCreated) + fmt.Fprint(w, `{"expand":"renderedFields,names,schema,transitions,operations,editmeta,changelog,versionedRepresentations","id":"10002","self":"http://www.example.com/jira/rest/api/2/issue/10002","key":"EX-1","fields":{"watcher":{"self":"http://www.example.com/jira/rest/api/2/issue/EX-1/watchers","isWatching":false,"watchCount":1,"watchers":[{"self":"http://www.example.com/jira/rest/api/2/user?username=fred","name":"fred","displayName":"Fred F. User","active":false}]},"attachment":[{"self":"http://www.example.com/jira/rest/api/2.0/attachments/10000","filename":"picture.jpg","author":{"self":"http://www.example.com/jira/rest/api/2/user?username=fred","name":"fred","avatarUrls":{"48x48":"http://www.example.com/jira/secure/useravatar?size=large&ownerId=fred","24x24":"http://www.example.com/jira/secure/useravatar?size=small&ownerId=fred","16x16":"http://www.example.com/jira/secure/useravatar?size=xsmall&ownerId=fred","32x32":"http://www.example.com/jira/secure/useravatar?size=medium&ownerId=fred"},"displayName":"Fred F. User","active":false},"created":"2016-03-16T04:22:37.461+0000","size":23123,"mimeType":"image/jpeg","content":"http://www.example.com/jira/attachments/10000","thumbnail":"http://www.example.com/jira/secure/thumbnail/10000"}],"sub-tasks":[{"id":"10000","type":{"id":"10000","name":"","inward":"Parent","outward":"Sub-task"},"outwardIssue":{"id":"10003","key":"EX-2","self":"http://www.example.com/jira/rest/api/2/issue/EX-2","fields":{"status":{"iconUrl":"http://www.example.com/jira//images/icons/statuses/open.png","name":"Open"}}}}],"description":"example bug report","project":{"self":"http://www.example.com/jira/rest/api/2/project/EX","id":"10000","key":"EX","name":"Example","avatarUrls":{"48x48":"http://www.example.com/jira/secure/projectavatar?size=large&pid=10000","24x24":"http://www.example.com/jira/secure/projectavatar?size=small&pid=10000","16x16":"http://www.example.com/jira/secure/projectavatar?size=xsmall&pid=10000","32x32":"http://www.example.com/jira/secure/projectavatar?size=medium&pid=10000"},"projectCategory":{"self":"http://www.example.com/jira/rest/api/2/projectCategory/10000","id":"10000","name":"FIRST","description":"First Project Category"}},"comment":{"comments":[{"self":"http://www.example.com/jira/rest/api/2/issue/10010/comment/10000","id":"10000","author":{"self":"http://www.example.com/jira/rest/api/2/user?username=fred","name":"fred","displayName":"Fred F. User","active":false},"body":"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque eget venenatis elit. Duis eu justo eget augue iaculis fermentum. Sed semper quam laoreet nisi egestas at posuere augue semper.","updateAuthor":{"self":"http://www.example.com/jira/rest/api/2/user?username=fred","name":"fred","displayName":"Fred F. User","active":false},"created":"2016-03-16T04:22:37.356+0000","updated":"2016-03-16T04:22:37.356+0000","visibility":{"type":"role","value":"Administrators"}}]},"issuelinks":[{"id":"10001","type":{"id":"10000","name":"Dependent","inward":"depends on","outward":"is depended by"},"outwardIssue":{"id":"10004L","key":"PRJ-2","self":"http://www.example.com/jira/rest/api/2/issue/PRJ-2","fields":{"status":{"iconUrl":"http://www.example.com/jira//images/icons/statuses/open.png","name":"Open"}}}},{"id":"10002","type":{"id":"10000","name":"Dependent","inward":"depends on","outward":"is depended by"},"inwardIssue":{"id":"10004","key":"PRJ-3","self":"http://www.example.com/jira/rest/api/2/issue/PRJ-3","fields":{"status":{"iconUrl":"http://www.example.com/jira//images/icons/statuses/open.png","name":"Open"}}}}],"worklog":{"worklogs":[{"self":"http://www.example.com/jira/rest/api/2/issue/10010/worklog/10000","author":{"self":"http://www.example.com/jira/rest/api/2/user?username=fred","name":"fred","displayName":"Fred F. User","active":false},"updateAuthor":{"self":"http://www.example.com/jira/rest/api/2/user?username=fred","name":"fred","displayName":"Fred F. User","active":false},"comment":"I did some work here.","updated":"2016-03-16T04:22:37.471+0000","visibility":{"type":"group","value":"jira-developers"},"started":"2016-03-16T04:22:37.471+0000","timeSpent":"3h 20m","timeSpentSeconds":12000,"id":"100028","issueId":"10002"}]},"updated":"2016-04-06T02:36:53.594-0700","timetracking":{"originalEstimate":"10m","remainingEstimate":"3m","timeSpent":"6m","originalEstimateSeconds":600,"remainingEstimateSeconds":200,"timeSpentSeconds":400}},"names":{"watcher":"watcher","attachment":"attachment","sub-tasks":"sub-tasks","description":"description","project":"project","comment":"comment","issuelinks":"issuelinks","worklog":"worklog","updated":"updated","timetracking":"timetracking"},"schema":{}}`) + }) + + i := &Issue{ + Fields: &IssueFields{ + Description: "example bug report", + }, + } + issue, _, err := testClient.Issue.Create(i) + if issue == nil { + t.Error("Expected issue. Issue is nil") + } + if err != nil { + t.Errorf("Error given: %s", err) + } +} + +func TestIssueService_AddComment(t *testing.T) { + setup() + defer teardown() + testMux.HandleFunc("/rest/api/2/issue/10000/comment", func(w http.ResponseWriter, r *http.Request) { + testMethod(t, r, "POST") + testRequestURL(t, r, "/rest/api/2/issue/10000/comment") + + w.WriteHeader(http.StatusCreated) + fmt.Fprint(w, `{"self":"http://www.example.com/jira/rest/api/2/issue/10010/comment/10000","id":"10000","author":{"self":"http://www.example.com/jira/rest/api/2/user?username=fred","name":"fred","displayName":"Fred F. User","active":false},"body":"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque eget venenatis elit. Duis eu justo eget augue iaculis fermentum. Sed semper quam laoreet nisi egestas at posuere augue semper.","updateAuthor":{"self":"http://www.example.com/jira/rest/api/2/user?username=fred","name":"fred","displayName":"Fred F. User","active":false},"created":"2016-03-16T04:22:37.356+0000","updated":"2016-03-16T04:22:37.356+0000","visibility":{"type":"role","value":"Administrators"}}`) + }) + + c := &Comment{ + Body: "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque eget venenatis elit. Duis eu justo eget augue iaculis fermentum. Sed semper quam laoreet nisi egestas at posuere augue semper.", + Visibility: CommentVisibility{ + Type: "role", + Value: "Administrators", + }, + } + comment, _, err := testClient.Issue.AddComment("10000", c) + if comment == nil { + t.Error("Expected Comment. Comment is nil") + } + if err != nil { + t.Errorf("Error given: %s", err) + } +} + +func TestIssueService_AddLink(t *testing.T) { + setup() + defer teardown() + testMux.HandleFunc("/rest/api/2/issueLink", func(w http.ResponseWriter, r *http.Request) { + testMethod(t, r, "POST") + testRequestURL(t, r, "/rest/api/2/issueLink") + + w.WriteHeader(http.StatusOK) + }) + + il := &IssueLink{ + Type: IssueLinkType{ + Name: "Duplicate", + }, + InwardIssue: &Issue{ + Key: "HSP-1", + }, + OutwardIssue: &Issue{ + Key: "MKY-1", + }, + Comment: &Comment{ + Body: "Linked related issue!", + Visibility: CommentVisibility{ + Type: "group", + Value: "jira-software-users", + }, + }, + } + resp, err := testClient.Issue.AddLink(il) + if resp == nil { + t.Error("Expected response. Response is nil") + } + if resp.StatusCode != 200 { + t.Errorf("Expected Status code 200. Given %d", resp.StatusCode) + } + if err != nil { + t.Errorf("Error given: %s", err) + } +} + +func TestIssueService_Get_Fields(t *testing.T) { + setup() + defer teardown() + testMux.HandleFunc("/rest/api/2/issue/10002", func(w http.ResponseWriter, r *http.Request) { + testMethod(t, r, "GET") + testRequestURL(t, r, "/rest/api/2/issue/10002") + + fmt.Fprint(w, `{"expand":"renderedFields,names,schema,transitions,operations,editmeta,changelog,versionedRepresentations","id":"10002","self":"http://www.example.com/jira/rest/api/2/issue/10002","key":"EX-1","fields":{"labels":["test"],"watcher":{"self":"http://www.example.com/jira/rest/api/2/issue/EX-1/watchers","isWatching":false,"watchCount":1,"watchers":[{"self":"http://www.example.com/jira/rest/api/2/user?username=fred","name":"fred","displayName":"Fred F. User","active":false}]},"epic": {"id": 19415,"key": "EPIC-77","self": "https://example.atlassian.net/rest/agile/1.0/epic/19415","name": "Epic Name","summary": "Do it","color": {"key": "color_11"},"done": false},"attachment":[{"self":"http://www.example.com/jira/rest/api/2.0/attachments/10000","filename":"picture.jpg","author":{"self":"http://www.example.com/jira/rest/api/2/user?username=fred","name":"fred","avatarUrls":{"48x48":"http://www.example.com/jira/secure/useravatar?size=large&ownerId=fred","24x24":"http://www.example.com/jira/secure/useravatar?size=small&ownerId=fred","16x16":"http://www.example.com/jira/secure/useravatar?size=xsmall&ownerId=fred","32x32":"http://www.example.com/jira/secure/useravatar?size=medium&ownerId=fred"},"displayName":"Fred F. User","active":false},"created":"2016-03-16T04:22:37.461+0000","size":23123,"mimeType":"image/jpeg","content":"http://www.example.com/jira/attachments/10000","thumbnail":"http://www.example.com/jira/secure/thumbnail/10000"}],"sub-tasks":[{"id":"10000","type":{"id":"10000","name":"","inward":"Parent","outward":"Sub-task"},"outwardIssue":{"id":"10003","key":"EX-2","self":"http://www.example.com/jira/rest/api/2/issue/EX-2","fields":{"status":{"iconUrl":"http://www.example.com/jira//images/icons/statuses/open.png","name":"Open"}}}}],"description":"example bug report","project":{"self":"http://www.example.com/jira/rest/api/2/project/EX","id":"10000","key":"EX","name":"Example","avatarUrls":{"48x48":"http://www.example.com/jira/secure/projectavatar?size=large&pid=10000","24x24":"http://www.example.com/jira/secure/projectavatar?size=small&pid=10000","16x16":"http://www.example.com/jira/secure/projectavatar?size=xsmall&pid=10000","32x32":"http://www.example.com/jira/secure/projectavatar?size=medium&pid=10000"},"projectCategory":{"self":"http://www.example.com/jira/rest/api/2/projectCategory/10000","id":"10000","name":"FIRST","description":"First Project Category"}},"comment":{"comments":[{"self":"http://www.example.com/jira/rest/api/2/issue/10010/comment/10000","id":"10000","author":{"self":"http://www.example.com/jira/rest/api/2/user?username=fred","name":"fred","displayName":"Fred F. User","active":false},"body":"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque eget venenatis elit. Duis eu justo eget augue iaculis fermentum. Sed semper quam laoreet nisi egestas at posuere augue semper.","updateAuthor":{"self":"http://www.example.com/jira/rest/api/2/user?username=fred","name":"fred","displayName":"Fred F. User","active":false},"created":"2016-03-16T04:22:37.356+0000","updated":"2016-03-16T04:22:37.356+0000","visibility":{"type":"role","value":"Administrators"}}]},"issuelinks":[{"id":"10001","type":{"id":"10000","name":"Dependent","inward":"depends on","outward":"is depended by"},"outwardIssue":{"id":"10004L","key":"PRJ-2","self":"http://www.example.com/jira/rest/api/2/issue/PRJ-2","fields":{"status":{"iconUrl":"http://www.example.com/jira//images/icons/statuses/open.png","name":"Open"}}}},{"id":"10002","type":{"id":"10000","name":"Dependent","inward":"depends on","outward":"is depended by"},"inwardIssue":{"id":"10004","key":"PRJ-3","self":"http://www.example.com/jira/rest/api/2/issue/PRJ-3","fields":{"status":{"iconUrl":"http://www.example.com/jira//images/icons/statuses/open.png","name":"Open"}}}}],"worklog":{"worklogs":[{"self":"http://www.example.com/jira/rest/api/2/issue/10010/worklog/10000","author":{"self":"http://www.example.com/jira/rest/api/2/user?username=fred","name":"fred","displayName":"Fred F. User","active":false},"updateAuthor":{"self":"http://www.example.com/jira/rest/api/2/user?username=fred","name":"fred","displayName":"Fred F. User","active":false},"comment":"I did some work here.","updated":"2016-03-16T04:22:37.471+0000","visibility":{"type":"group","value":"jira-developers"},"started":"2016-03-16T04:22:37.471+0000","timeSpent":"3h 20m","timeSpentSeconds":12000,"id":"100028","issueId":"10002"}]},"updated":"2016-04-06T02:36:53.594-0700","timetracking":{"originalEstimate":"10m","remainingEstimate":"3m","timeSpent":"6m","originalEstimateSeconds":600,"remainingEstimateSeconds":200,"timeSpentSeconds":400}},"names":{"watcher":"watcher","attachment":"attachment","sub-tasks":"sub-tasks","description":"description","project":"project","comment":"comment","issuelinks":"issuelinks","worklog":"worklog","updated":"updated","timetracking":"timetracking"},"schema":{}}`) + }) + + issue, _, err := testClient.Issue.Get("10002") + if issue == nil { + t.Error("Expected issue. Issue is nil") + } + if !reflect.DeepEqual(issue.Fields.Labels, []string{"test"}) { + t.Error("Expected labels for the returned issue") + } + + if len(issue.Fields.Comments.Comments) != 1 { + t.Errorf("Expected one comment, %v found", len(issue.Fields.Comments.Comments)) + } + if issue.Fields.Epic == nil { + t.Error("Epic expected but not found") + } + + if err != nil { + t.Errorf("Error given: %s", err) + } +} + +func TestIssueService_DownloadAttachment(t *testing.T) { + var testAttachment = "Here is an attachment" + + setup() + defer teardown() + testMux.HandleFunc("/secure/attachment/", func(w http.ResponseWriter, r *http.Request) { + testMethod(t, r, "GET") + testRequestURL(t, r, "/secure/attachment/10000/") + + w.WriteHeader(http.StatusOK) + w.Write([]byte(testAttachment)) + }) + + resp, err := testClient.Issue.DownloadAttachment("10000") + if resp == nil { + t.Error("Expected response. Response is nil") + } + defer resp.Body.Close() + + attachment, err := ioutil.ReadAll(resp.Body) + if err != nil { + t.Error("Expected attachment text", err) + } + if string(attachment) != testAttachment { + t.Errorf("Expecting an attachment: %s", string(attachment)) + } + + if resp.StatusCode != 200 { + t.Errorf("Expected Status code 200. Given %d", resp.StatusCode) + } + if err != nil { + t.Errorf("Error given: %s", err) + } +} + +func TestIssueService_DownloadAttachment_BadStatus(t *testing.T) { + + setup() + defer teardown() + testMux.HandleFunc("/secure/attachment/", func(w http.ResponseWriter, r *http.Request) { + testMethod(t, r, "GET") + testRequestURL(t, r, "/secure/attachment/10000/") + + w.WriteHeader(http.StatusForbidden) + }) + + resp, err := testClient.Issue.DownloadAttachment("10000") + if resp == nil { + t.Error("Expected response. Response is nil") + } + defer resp.Body.Close() + + if resp.StatusCode != http.StatusForbidden { + t.Errorf("Expected Status code %d. Given %d", http.StatusForbidden, resp.StatusCode) + } + if err == nil { + t.Errorf("Error expected") + } +} + +func TestIssueService_PostAttachment(t *testing.T) { + var testAttachment = "Here is an attachment" + + setup() + defer teardown() + testMux.HandleFunc("/rest/api/2/issue/10000/attachments", func(w http.ResponseWriter, r *http.Request) { + testMethod(t, r, "POST") + testRequestURL(t, r, "/rest/api/2/issue/10000/attachments") + status := http.StatusOK + + file, _, err := r.FormFile("file") + if err != nil { + status = http.StatusNotAcceptable + } + if file == nil { + status = http.StatusNoContent + } else { + + // Read the file into memory + data, err := ioutil.ReadAll(file) + if err != nil { + status = http.StatusInternalServerError + } + if string(data) != testAttachment { + status = http.StatusNotAcceptable + } + + w.WriteHeader(status) + fmt.Fprint(w, `[{"self":"http://jira/jira/rest/api/2/attachment/228924","id":"228924","filename":"example.jpg","author":{"self":"http://jira/jira/rest/api/2/user?username=test","name":"test","emailAddress":"test@test.com","avatarUrls":{"16x16":"http://jira/jira/secure/useravatar?size=small&avatarId=10082","48x48":"http://jira/jira/secure/useravatar?avatarId=10082"},"displayName":"Tester","active":true},"created":"2016-05-24T00:25:17.000-0700","size":32280,"mimeType":"image/jpeg","content":"http://jira/jira/secure/attachment/228924/example.jpg","thumbnail":"http://jira/jira/secure/thumbnail/228924/_thumb_228924.png"}]`) + file.Close() + } + }) + + reader := strings.NewReader(testAttachment) + + issue, resp, err := testClient.Issue.PostAttachment("10000", reader, "attachment") + + if issue == nil { + t.Error("Expected response. Response is nil") + } + + if resp.StatusCode != 200 { + t.Errorf("Expected Status code 200. Given %d", resp.StatusCode) + } + + if err != nil { + t.Errorf("Error given: %s", err) + } +} + +func TestIssueService_PostAttachment_NoResponse(t *testing.T) { + var testAttachment = "Here is an attachment" + + setup() + defer teardown() + testMux.HandleFunc("/rest/api/2/issue/10000/attachments", func(w http.ResponseWriter, r *http.Request) { + testMethod(t, r, "POST") + testRequestURL(t, r, "/rest/api/2/issue/10000/attachments") + w.WriteHeader(http.StatusOK) + }) + reader := strings.NewReader(testAttachment) + + _, _, err := testClient.Issue.PostAttachment("10000", reader, "attachment") + + if err == nil { + t.Errorf("Error expected: %s", err) + } +} + +func TestIssueService_PostAttachment_NoFilename(t *testing.T) { + var testAttachment = "Here is an attachment" + + setup() + defer teardown() + testMux.HandleFunc("/rest/api/2/issue/10000/attachments", func(w http.ResponseWriter, r *http.Request) { + testMethod(t, r, "POST") + testRequestURL(t, r, "/rest/api/2/issue/10000/attachments") + w.WriteHeader(http.StatusOK) + fmt.Fprint(w, `[{"self":"http://jira/jira/rest/api/2/attachment/228924","id":"228924","filename":"example.jpg","author":{"self":"http://jira/jira/rest/api/2/user?username=test","name":"test","emailAddress":"test@test.com","avatarUrls":{"16x16":"http://jira/jira/secure/useravatar?size=small&avatarId=10082","48x48":"http://jira/jira/secure/useravatar?avatarId=10082"},"displayName":"Tester","active":true},"created":"2016-05-24T00:25:17.000-0700","size":32280,"mimeType":"image/jpeg","content":"http://jira/jira/secure/attachment/228924/example.jpg","thumbnail":"http://jira/jira/secure/thumbnail/228924/_thumb_228924.png"}]`) + }) + reader := strings.NewReader(testAttachment) + + _, _, err := testClient.Issue.PostAttachment("10000", reader, "") + + if err != nil { + t.Errorf("Error expected: %s", err) + } +} + +func TestIssueService_PostAttachment_NoAttachment(t *testing.T) { + setup() + defer teardown() + testMux.HandleFunc("/rest/api/2/issue/10000/attachments", func(w http.ResponseWriter, r *http.Request) { + testMethod(t, r, "POST") + testRequestURL(t, r, "/rest/api/2/issue/10000/attachments") + w.WriteHeader(http.StatusOK) + fmt.Fprint(w, `[{"self":"http://jira/jira/rest/api/2/attachment/228924","id":"228924","filename":"example.jpg","author":{"self":"http://jira/jira/rest/api/2/user?username=test","name":"test","emailAddress":"test@test.com","avatarUrls":{"16x16":"http://jira/jira/secure/useravatar?size=small&avatarId=10082","48x48":"http://jira/jira/secure/useravatar?avatarId=10082"},"displayName":"Tester","active":true},"created":"2016-05-24T00:25:17.000-0700","size":32280,"mimeType":"image/jpeg","content":"http://jira/jira/secure/attachment/228924/example.jpg","thumbnail":"http://jira/jira/secure/thumbnail/228924/_thumb_228924.png"}]`) + }) + + _, _, err := testClient.Issue.PostAttachment("10000", nil, "attachment") + + if err != nil { + t.Errorf("Error given: %s", err) + } +} + +func TestIssueService_Search(t *testing.T) { + setup() + defer teardown() + testMux.HandleFunc("/rest/api/2/search", func(w http.ResponseWriter, r *http.Request) { + testMethod(t, r, "GET") + testRequestURL(t, r, "/rest/api/2/search?jql=something&startAt=1&maxResults=40") + w.WriteHeader(http.StatusOK) + fmt.Fprint(w, `{"expand": "schema,names","startAt": 1,"maxResults": 40,"total": 6,"issues": [{"expand": "html","id": "10230","self": "http://kelpie9:8081/rest/api/2/issue/BULK-62","key": "BULK-62","fields": {"summary": "testing","timetracking": null,"issuetype": {"self": "http://kelpie9:8081/rest/api/2/issuetype/5","id": "5","description": "The sub-task of the issue","iconUrl": "http://kelpie9:8081/images/icons/issue_subtask.gif","name": "Sub-task","subtask": true},"customfield_10071": null}},{"expand": "html","id": "10004","self": "http://kelpie9:8081/rest/api/2/issue/BULK-47","key": "BULK-47","fields": {"summary": "Cheese v1 2.0 issue","timetracking": null,"issuetype": {"self": "http://kelpie9:8081/rest/api/2/issuetype/3","id": "3","description": "A task that needs to be done.","iconUrl": "http://kelpie9:8081/images/icons/task.gif","name": "Task","subtask": false}}}]}`) + }) + + opt := &SearchOptions{StartAt: 1, MaxResults: 40} + _, resp, err := testClient.Issue.Search("something", opt) + + if resp == nil { + t.Errorf("Response given: %+v", resp) + } + if err != nil { + t.Errorf("Error given: %s", err) + } + + if resp.StartAt != 1 { + t.Errorf("StartAt should populate with 1, %v given", resp.StartAt) + } + if resp.MaxResults != 40 { + t.Errorf("StartAt should populate with 40, %v given", resp.MaxResults) + } + if resp.Total != 6 { + t.Errorf("StartAt should populate with 6, %v given", resp.Total) + } +} + +func TestIssueService_Search_WithoutPaging(t *testing.T) { + setup() + defer teardown() + testMux.HandleFunc("/rest/api/2/search", func(w http.ResponseWriter, r *http.Request) { + testMethod(t, r, "GET") + testRequestURL(t, r, "/rest/api/2/search?jql=something") + w.WriteHeader(http.StatusOK) + fmt.Fprint(w, `{"expand": "schema,names","startAt": 0,"maxResults": 50,"total": 6,"issues": [{"expand": "html","id": "10230","self": "http://kelpie9:8081/rest/api/2/issue/BULK-62","key": "BULK-62","fields": {"summary": "testing","timetracking": null,"issuetype": {"self": "http://kelpie9:8081/rest/api/2/issuetype/5","id": "5","description": "The sub-task of the issue","iconUrl": "http://kelpie9:8081/images/icons/issue_subtask.gif","name": "Sub-task","subtask": true},"customfield_10071": null}},{"expand": "html","id": "10004","self": "http://kelpie9:8081/rest/api/2/issue/BULK-47","key": "BULK-47","fields": {"summary": "Cheese v1 2.0 issue","timetracking": null,"issuetype": {"self": "http://kelpie9:8081/rest/api/2/issuetype/3","id": "3","description": "A task that needs to be done.","iconUrl": "http://kelpie9:8081/images/icons/task.gif","name": "Task","subtask": false}}}]}`) + }) + + _, resp, err := testClient.Issue.Search("something", nil) + + if resp == nil { + t.Errorf("Response given: %+v", resp) + } + if err != nil { + t.Errorf("Error given: %s", err) + } + + if resp.StartAt != 0 { + t.Errorf("StartAt should populate with 0, %v given", resp.StartAt) + } + if resp.MaxResults != 50 { + t.Errorf("StartAt should populate with 50, %v given", resp.MaxResults) + } + if resp.Total != 6 { + t.Errorf("StartAt should populate with 6, %v given", resp.Total) + } +} + +func TestIssueService_GetCustomFields(t *testing.T) { + setup() + defer teardown() + testMux.HandleFunc("/rest/api/2/issue/10002", func(w http.ResponseWriter, r *http.Request) { + testMethod(t, r, "GET") + testRequestURL(t, r, "/rest/api/2/issue/10002") + fmt.Fprint(w, `{"expand":"renderedFields,names,schema,transitions,operations,editmeta,changelog,versionedRepresentations","id":"10002","self":"http://www.example.com/jira/rest/api/2/issue/10002","key":"EX-1","fields":{"customfield_123":"test","watcher":{"self":"http://www.example.com/jira/rest/api/2/issue/EX-1/watchers","isWatching":false,"watchCount":1,"watchers":[{"self":"http://www.example.com/jira/rest/api/2/user?username=fred","name":"fred","displayName":"Fred F. User","active":false}]},"attachment":[{"self":"http://www.example.com/jira/rest/api/2.0/attachments/10000","filename":"picture.jpg","author":{"self":"http://www.example.com/jira/rest/api/2/user?username=fred","name":"fred","avatarUrls":{"48x48":"http://www.example.com/jira/secure/useravatar?size=large&ownerId=fred","24x24":"http://www.example.com/jira/secure/useravatar?size=small&ownerId=fred","16x16":"http://www.example.com/jira/secure/useravatar?size=xsmall&ownerId=fred","32x32":"http://www.example.com/jira/secure/useravatar?size=medium&ownerId=fred"},"displayName":"Fred F. User","active":false},"created":"2016-03-16T04:22:37.461+0000","size":23123,"mimeType":"image/jpeg","content":"http://www.example.com/jira/attachments/10000","thumbnail":"http://www.example.com/jira/secure/thumbnail/10000"}],"sub-tasks":[{"id":"10000","type":{"id":"10000","name":"","inward":"Parent","outward":"Sub-task"},"outwardIssue":{"id":"10003","key":"EX-2","self":"http://www.example.com/jira/rest/api/2/issue/EX-2","fields":{"status":{"iconUrl":"http://www.example.com/jira//images/icons/statuses/open.png","name":"Open"}}}}],"description":"example bug report","project":{"self":"http://www.example.com/jira/rest/api/2/project/EX","id":"10000","key":"EX","name":"Example","avatarUrls":{"48x48":"http://www.example.com/jira/secure/projectavatar?size=large&pid=10000","24x24":"http://www.example.com/jira/secure/projectavatar?size=small&pid=10000","16x16":"http://www.example.com/jira/secure/projectavatar?size=xsmall&pid=10000","32x32":"http://www.example.com/jira/secure/projectavatar?size=medium&pid=10000"},"projectCategory":{"self":"http://www.example.com/jira/rest/api/2/projectCategory/10000","id":"10000","name":"FIRST","description":"First Project Category"}},"comment":{"comments":[{"self":"http://www.example.com/jira/rest/api/2/issue/10010/comment/10000","id":"10000","author":{"self":"http://www.example.com/jira/rest/api/2/user?username=fred","name":"fred","displayName":"Fred F. User","active":false},"body":"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque eget venenatis elit. Duis eu justo eget augue iaculis fermentum. Sed semper quam laoreet nisi egestas at posuere augue semper.","updateAuthor":{"self":"http://www.example.com/jira/rest/api/2/user?username=fred","name":"fred","displayName":"Fred F. User","active":false},"created":"2016-03-16T04:22:37.356+0000","updated":"2016-03-16T04:22:37.356+0000","visibility":{"type":"role","value":"Administrators"}}]},"issuelinks":[{"id":"10001","type":{"id":"10000","name":"Dependent","inward":"depends on","outward":"is depended by"},"outwardIssue":{"id":"10004L","key":"PRJ-2","self":"http://www.example.com/jira/rest/api/2/issue/PRJ-2","fields":{"status":{"iconUrl":"http://www.example.com/jira//images/icons/statuses/open.png","name":"Open"}}}},{"id":"10002","type":{"id":"10000","name":"Dependent","inward":"depends on","outward":"is depended by"},"inwardIssue":{"id":"10004","key":"PRJ-3","self":"http://www.example.com/jira/rest/api/2/issue/PRJ-3","fields":{"status":{"iconUrl":"http://www.example.com/jira//images/icons/statuses/open.png","name":"Open"}}}}],"worklog":{"worklogs":[{"self":"http://www.example.com/jira/rest/api/2/issue/10010/worklog/10000","author":{"self":"http://www.example.com/jira/rest/api/2/user?username=fred","name":"fred","displayName":"Fred F. User","active":false},"updateAuthor":{"self":"http://www.example.com/jira/rest/api/2/user?username=fred","name":"fred","displayName":"Fred F. User","active":false},"comment":"I did some work here.","updated":"2016-03-16T04:22:37.471+0000","visibility":{"type":"group","value":"jira-developers"},"started":"2016-03-16T04:22:37.471+0000","timeSpent":"3h 20m","timeSpentSeconds":12000,"id":"100028","issueId":"10002"}]},"updated":"2016-04-06T02:36:53.594-0700","timetracking":{"originalEstimate":"10m","remainingEstimate":"3m","timeSpent":"6m","originalEstimateSeconds":600,"remainingEstimateSeconds":200,"timeSpentSeconds":400}},"names":{"watcher":"watcher","attachment":"attachment","sub-tasks":"sub-tasks","description":"description","project":"project","comment":"comment","issuelinks":"issuelinks","worklog":"worklog","updated":"updated","timetracking":"timetracking"},"schema":{}}`) + }) + + issue, _, err := testClient.Issue.GetCustomFields("10002") + if err != nil { + t.Errorf("Error given: %s", err) + } + if issue == nil { + t.Error("Expected Customfields") + } + cf := issue["customfield_123"] + if cf != "test" { + t.Error("Expected \"test\" for custom field") + } +} + +func TestIssueService_GetTransitions(t *testing.T) { + setup() + defer teardown() + + testAPIEndpoint := "/rest/api/2/issue/123/transitions" + + raw, err := ioutil.ReadFile("./mocks/transitions.json") + if err != nil { + t.Error(err.Error()) + } + + testMux.HandleFunc(testAPIEndpoint, func(w http.ResponseWriter, r *http.Request) { + testMethod(t, r, "GET") + testRequestURL(t, r, testAPIEndpoint) + fmt.Fprint(w, string(raw)) + }) + + transitions, _, err := testClient.Issue.GetTransitions("123") + + if err != nil { + t.Errorf("Got error: %v", err) + } + + if transitions == nil { + t.Error("Expected transition list. Got nil.") + } + + if len(transitions) != 2 { + t.Errorf("Expected 2 transitions. Got %d", len(transitions)) + } + + if transitions[0].Fields["summary"].Required != false { + t.Errorf("First transition summary field should not be required") + } +} + +func TestIssueService_DoTransition(t *testing.T) { + setup() + defer teardown() + + testAPIEndpoint := "/rest/api/2/issue/123/transitions" + + transitionID := "22" + + testMux.HandleFunc(testAPIEndpoint, func(w http.ResponseWriter, r *http.Request) { + testMethod(t, r, "POST") + testRequestURL(t, r, testAPIEndpoint) + + decoder := json.NewDecoder(r.Body) + var payload CreateTransitionPayload + err := decoder.Decode(&payload) + if err != nil { + t.Errorf("Got error: %v", err) + } + + if payload.Transition.ID != transitionID { + t.Errorf("Expected %s to be in payload, got %s instead", transitionID, payload.Transition.ID) + } + }) + _, err := testClient.Issue.DoTransition("123", transitionID) + + if err != nil { + t.Errorf("Got error: %v", err) + } +} diff --git a/vendor/src/github.com/andygrunwald/go-jira/jira.go b/vendor/src/github.com/andygrunwald/go-jira/jira.go new file mode 100644 index 0000000..70b7e6e --- /dev/null +++ b/vendor/src/github.com/andygrunwald/go-jira/jira.go @@ -0,0 +1,224 @@ +package jira + +import ( + "bytes" + "encoding/json" + "fmt" + "io" + "net/http" + "net/url" + "reflect" + + "github.com/google/go-querystring/query" +) + +// A Client manages communication with the JIRA API. +type Client struct { + // HTTP client used to communicate with the API. + client *http.Client + + // Base URL for API requests. + baseURL *url.URL + + // Session storage if the user authentificate with a Session cookie + session *Session + + // Services used for talking to different parts of the JIRA API. + Authentication *AuthenticationService + Issue *IssueService + Project *ProjectService + Board *BoardService + Sprint *SprintService +} + +// NewClient returns a new JIRA API client. +// If a nil httpClient is provided, http.DefaultClient will be used. +// To use API methods which require authentication you can follow the preferred solution and +// provide an http.Client that will perform the authentication for you with OAuth and HTTP Basic (such as that provided by the golang.org/x/oauth2 library). +// As an alternative you can use Session Cookie based authentication provided by this package as well. +// See https://docs.atlassian.com/jira/REST/latest/#authentication +// baseURL is the HTTP endpoint of your JIRA instance and should always be specified with a trailing slash. +func NewClient(httpClient *http.Client, baseURL string) (*Client, error) { + if httpClient == nil { + httpClient = http.DefaultClient + } + + parsedBaseURL, err := url.Parse(baseURL) + if err != nil { + return nil, err + } + + c := &Client{ + client: httpClient, + baseURL: parsedBaseURL, + } + c.Authentication = &AuthenticationService{client: c} + c.Issue = &IssueService{client: c} + c.Project = &ProjectService{client: c} + c.Board = &BoardService{client: c} + c.Sprint = &SprintService{client: c} + + return c, nil +} + +// NewRequest creates an API request. +// A relative URL can be provided in urlStr, in which case it is resolved relative to the baseURL of the Client. +// Relative URLs should always be specified without a preceding slash. +// If specified, the value pointed to by body is JSON encoded and included as the request body. +func (c *Client) NewRequest(method, urlStr string, body interface{}) (*http.Request, error) { + rel, err := url.Parse(urlStr) + if err != nil { + return nil, err + } + + u := c.baseURL.ResolveReference(rel) + + var buf io.ReadWriter + if body != nil { + buf = new(bytes.Buffer) + err := json.NewEncoder(buf).Encode(body) + if err != nil { + return nil, err + } + } + + req, err := http.NewRequest(method, u.String(), buf) + if err != nil { + return nil, err + } + + req.Header.Set("Content-Type", "application/json") + + // Set session cookie if there is one + if c.session != nil { + for _, cookie := range c.session.Cookies { + req.AddCookie(cookie) + } + } + + return req, nil +} + +// addOptions adds the parameters in opt as URL query parameters to s. opt +// must be a struct whose fields may contain "url" tags. +func addOptions(s string, opt interface{}) (string, error) { + v := reflect.ValueOf(opt) + if v.Kind() == reflect.Ptr && v.IsNil() { + return s, nil + } + + u, err := url.Parse(s) + if err != nil { + return s, err + } + + qs, err := query.Values(opt) + if err != nil { + return s, err + } + + u.RawQuery = qs.Encode() + return u.String(), nil +} + +// NewMultiPartRequest creates an API request including a multi-part file. +// A relative URL can be provided in urlStr, in which case it is resolved relative to the baseURL of the Client. +// Relative URLs should always be specified without a preceding slash. +// If specified, the value pointed to by buf is a multipart form. +func (c *Client) NewMultiPartRequest(method, urlStr string, buf *bytes.Buffer) (*http.Request, error) { + rel, err := url.Parse(urlStr) + if err != nil { + return nil, err + } + + u := c.baseURL.ResolveReference(rel) + + req, err := http.NewRequest(method, u.String(), buf) + if err != nil { + return nil, err + } + + // Set required headers + req.Header.Set("X-Atlassian-Token", "nocheck") + + // Set session cookie if there is one + if c.session != nil { + for _, cookie := range c.session.Cookies { + req.AddCookie(cookie) + } + } + + return req, nil +} + +// Do sends an API request and returns the API response. +// The API response is JSON decoded and stored in the value pointed to by v, or returned as an error if an API error has occurred. +func (c *Client) Do(req *http.Request, v interface{}) (*Response, error) { + httpResp, err := c.client.Do(req) + if err != nil { + return nil, err + } + + err = CheckResponse(httpResp) + if err != nil { + // Even though there was an error, we still return the response + // in case the caller wants to inspect it further + return newResponse(httpResp, nil), err + } + + if v != nil { + // Open a NewDecoder and defer closing the reader only if there is a provided interface to decode to + defer httpResp.Body.Close() + err = json.NewDecoder(httpResp.Body).Decode(v) + } + + resp := newResponse(httpResp, v) + return resp, err +} + +// CheckResponse checks the API response for errors, and returns them if present. +// A response is considered an error if it has a status code outside the 200 range. +// The caller is responsible to analyze the response body. +// The body can contain JSON (if the error is intended) or xml (sometimes JIRA just failes). +func CheckResponse(r *http.Response) error { + if c := r.StatusCode; 200 <= c && c <= 299 { + return nil + } + + err := fmt.Errorf("Request failed. Please analyze the request body for more details. Status code: %d", r.StatusCode) + return err +} + +// GetBaseURL will return you the Base URL. +// This is the same URL as in the NewClient constructor +func (c *Client) GetBaseURL() url.URL { + return *c.baseURL +} + +// Response represents JIRA API response. It wraps http.Response returned from +// API and provides information about paging. +type Response struct { + *http.Response + + StartAt int + MaxResults int + Total int +} + +func newResponse(r *http.Response, v interface{}) *Response { + resp := &Response{Response: r} + resp.populatePageValues(v) + return resp +} + +// Sets paging values if response json was parsed to searchResult type +// (can be extended with other types if they also need paging info) +func (r *Response) populatePageValues(v interface{}) { + switch value := v.(type) { + case *searchResult: + r.StartAt = value.StartAt + r.MaxResults = value.MaxResults + r.Total = value.Total + } + return +} diff --git a/vendor/src/github.com/andygrunwald/go-jira/jira_test.go b/vendor/src/github.com/andygrunwald/go-jira/jira_test.go new file mode 100644 index 0000000..7e6de1d --- /dev/null +++ b/vendor/src/github.com/andygrunwald/go-jira/jira_test.go @@ -0,0 +1,390 @@ +package jira + +import ( + "bytes" + "encoding/json" + "fmt" + "io/ioutil" + "net/http" + "net/http/httptest" + "net/url" + "reflect" + "strings" + "testing" + "time" +) + +const ( + testJIRAInstanceURL = "https://issues.apache.org/jira/" +) + +var ( + // testMux is the HTTP request multiplexer used with the test server. + testMux *http.ServeMux + + // testClient is the JIRA client being tested. + testClient *Client + + // testServer is a test HTTP server used to provide mock API responses. + testServer *httptest.Server +) + +type testValues map[string]string + +// setup sets up a test HTTP server along with a jira.Client that is configured to talk to that test server. +// Tests should register handlers on mux which provide mock responses for the API method being tested. +func setup() { + // Test server + testMux = http.NewServeMux() + testServer = httptest.NewServer(testMux) + + // jira client configured to use test server + testClient, _ = NewClient(nil, testServer.URL) +} + +// teardown closes the test HTTP server. +func teardown() { + testServer.Close() +} + +func testMethod(t *testing.T, r *http.Request, want string) { + if got := r.Method; got != want { + t.Errorf("Request method: %v, want %v", got, want) + } +} + +func testRequestURL(t *testing.T, r *http.Request, want string) { + if got := r.URL.String(); !strings.HasPrefix(got, want) { + t.Errorf("Request URL: %v, want %v", got, want) + } +} + +func TestNewClient_WrongUrl(t *testing.T) { + c, err := NewClient(nil, "://issues.apache.org/jira/") + + if err == nil { + t.Error("Expected an error. Got none") + } + if c != nil { + t.Errorf("Expected no client. Got %+v", c) + } +} + +func TestNewClient_WithHttpClient(t *testing.T) { + httpClient := http.DefaultClient + httpClient.Timeout = 10 * time.Minute + c, err := NewClient(httpClient, testJIRAInstanceURL) + + if err != nil { + t.Errorf("Got an error: %s", err) + } + if c == nil { + t.Error("Expected a client. Got none") + } + if !reflect.DeepEqual(c.client, httpClient) { + t.Errorf("HTTP clients are not equal. Injected %+v, got %+v", httpClient, c.client) + } +} + +func TestNewClient_WithServices(t *testing.T) { + c, err := NewClient(nil, testJIRAInstanceURL) + + if err != nil { + t.Errorf("Got an error: %s", err) + } + if c.Authentication == nil { + t.Error("No AuthenticationService provided") + } + if c.Issue == nil { + t.Error("No IssueService provided") + } + if c.Project == nil { + t.Error("No ProjectService provided") + } + if c.Board == nil { + t.Error("No BoardService provided") + } + if c.Sprint == nil { + t.Error("No SprintService provided") + } +} + +func TestCheckResponse(t *testing.T) { + codes := []int{ + http.StatusOK, http.StatusPartialContent, 299, + } + + for _, c := range codes { + r := &http.Response{ + StatusCode: c, + } + if err := CheckResponse(r); err != nil { + t.Errorf("CheckResponse throws an error: %s", err) + } + } +} + +func TestClient_NewRequest(t *testing.T) { + c, err := NewClient(nil, testJIRAInstanceURL) + if err != nil { + t.Errorf("An error occured. Expected nil. Got %+v.", err) + } + + inURL, outURL := "rest/api/2/issue/", testJIRAInstanceURL+"rest/api/2/issue/" + inBody, outBody := &Issue{Key: "MESOS"}, `{"key":"MESOS"}`+"\n" + req, _ := c.NewRequest("GET", inURL, inBody) + + // Test that relative URL was expanded + if got, want := req.URL.String(), outURL; got != want { + t.Errorf("NewRequest(%q) URL is %v, want %v", inURL, got, want) + } + + // Test that body was JSON encoded + body, _ := ioutil.ReadAll(req.Body) + if got, want := string(body), outBody; got != want { + t.Errorf("NewRequest(%v) Body is %v, want %v", inBody, got, want) + } +} + +func TestClient_NewRequest_InvalidJSON(t *testing.T) { + c, err := NewClient(nil, testJIRAInstanceURL) + if err != nil { + t.Errorf("An error occured. Expected nil. Got %+v.", err) + } + + type T struct { + A map[int]interface{} + } + _, err = c.NewRequest("GET", "/", &T{}) + + if err == nil { + t.Error("Expected error to be returned.") + } + if err, ok := err.(*json.UnsupportedTypeError); !ok { + t.Errorf("Expected a JSON error; got %+v.", err) + } +} + +func testURLParseError(t *testing.T, err error) { + if err == nil { + t.Errorf("Expected error to be returned") + } + if err, ok := err.(*url.Error); !ok || err.Op != "parse" { + t.Errorf("Expected URL parse error, got %+v", err) + } +} + +func TestClient_NewRequest_BadURL(t *testing.T) { + c, err := NewClient(nil, testJIRAInstanceURL) + if err != nil { + t.Errorf("An error occured. Expected nil. Got %+v.", err) + } + _, err = c.NewRequest("GET", ":", nil) + testURLParseError(t, err) +} + +func TestClient_NewRequest_SessionCookies(t *testing.T) { + c, err := NewClient(nil, testJIRAInstanceURL) + if err != nil { + t.Errorf("An error occured. Expected nil. Got %+v.", err) + } + + cookie := &http.Cookie{Name: "testcookie", Value: "testvalue"} + c.session = &Session{Cookies: []*http.Cookie{cookie}} + + inURL := "rest/api/2/issue/" + inBody := &Issue{Key: "MESOS"} + req, err := c.NewRequest("GET", inURL, inBody) + + if err != nil { + t.Errorf("An error occured. Expected nil. Got %+v.", err) + } + + if len(req.Cookies()) != len(c.session.Cookies) { + t.Errorf("An error occured. Expected %d cookie(s). Got %d.", len(c.session.Cookies), len(req.Cookies())) + } + + for i, v := range req.Cookies() { + if v.String() != c.session.Cookies[i].String() { + t.Errorf("An error occured. Unexpected cookie. Expected %s, actual %s.", v.String(), c.session.Cookies[i].String()) + } + } +} + +// If a nil body is passed to gerrit.NewRequest, make sure that nil is also passed to http.NewRequest. +// In most cases, passing an io.Reader that returns no content is fine, +// since there is no difference between an HTTP request body that is an empty string versus one that is not set at all. +// However in certain cases, intermediate systems may treat these differently resulting in subtle errors. +func TestClient_NewRequest_EmptyBody(t *testing.T) { + c, err := NewClient(nil, testJIRAInstanceURL) + if err != nil { + t.Errorf("An error occured. Expected nil. Got %+v.", err) + } + req, err := c.NewRequest("GET", "/", nil) + if err != nil { + t.Fatalf("NewRequest returned unexpected error: %v", err) + } + if req.Body != nil { + t.Fatalf("constructed request contains a non-nil Body") + } +} + +func TestClient_NewMultiPartRequest(t *testing.T) { + c, err := NewClient(nil, testJIRAInstanceURL) + if err != nil { + t.Errorf("An error occured. Expected nil. Got %+v.", err) + } + + cookie := &http.Cookie{Name: "testcookie", Value: "testvalue"} + c.session = &Session{Cookies: []*http.Cookie{cookie}} + + inURL := "rest/api/2/issue/" + inBuf := bytes.NewBufferString("teststring") + req, err := c.NewMultiPartRequest("GET", inURL, inBuf) + + if err != nil { + t.Errorf("An error occured. Expected nil. Got %+v.", err) + } + + if len(req.Cookies()) != len(c.session.Cookies) { + t.Errorf("An error occured. Expected %d cookie(s). Got %d.", len(c.session.Cookies), len(req.Cookies())) + } + + for i, v := range req.Cookies() { + if v.String() != c.session.Cookies[i].String() { + t.Errorf("An error occured. Unexpected cookie. Expected %s, actual %s.", v.String(), c.session.Cookies[i].String()) + } + } + + if req.Header.Get("X-Atlassian-Token") != "nocheck" { + t.Errorf("An error occured. Unexpected X-Atlassian-Token header value. Expected nocheck, actual %s.", req.Header.Get("X-Atlassian-Token")) + } +} + +func TestClient_Do(t *testing.T) { + setup() + defer teardown() + + type foo struct { + A string + } + + testMux.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { + if m := "GET"; m != r.Method { + t.Errorf("Request method = %v, want %v", r.Method, m) + } + fmt.Fprint(w, `{"A":"a"}`) + }) + + req, _ := testClient.NewRequest("GET", "/", nil) + body := new(foo) + testClient.Do(req, body) + + want := &foo{"a"} + if !reflect.DeepEqual(body, want) { + t.Errorf("Response body = %v, want %v", body, want) + } +} + +func TestClient_Do_HTTPResponse(t *testing.T) { + setup() + defer teardown() + + type foo struct { + A string + } + + testMux.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { + if m := "GET"; m != r.Method { + t.Errorf("Request method = %v, want %v", r.Method, m) + } + fmt.Fprint(w, `{"A":"a"}`) + }) + + req, _ := testClient.NewRequest("GET", "/", nil) + res, _ := testClient.Do(req, nil) + _, err := ioutil.ReadAll(res.Body) + + if err != nil { + t.Errorf("Error on parsing HTTP Response = %v", err.Error()) + } else if res.StatusCode != 200 { + t.Errorf("Response code = %v, want %v", res.StatusCode, 200) + } +} + +func TestClient_Do_HTTPError(t *testing.T) { + setup() + defer teardown() + + testMux.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { + http.Error(w, "Bad Request", 400) + }) + + req, _ := testClient.NewRequest("GET", "/", nil) + _, err := testClient.Do(req, nil) + + if err == nil { + t.Error("Expected HTTP 400 error.") + } +} + +// Test handling of an error caused by the internal http client's Do() function. +// A redirect loop is pretty unlikely to occur within the Gerrit API, but does allow us to exercise the right code path. +func TestClient_Do_RedirectLoop(t *testing.T) { + setup() + defer teardown() + + testMux.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { + http.Redirect(w, r, "/", http.StatusFound) + }) + + req, _ := testClient.NewRequest("GET", "/", nil) + _, err := testClient.Do(req, nil) + + if err == nil { + t.Error("Expected error to be returned.") + } + if err, ok := err.(*url.Error); !ok { + t.Errorf("Expected a URL error; got %+v.", err) + } +} + +func TestClient_GetBaseURL_WithURL(t *testing.T) { + u, err := url.Parse(testJIRAInstanceURL) + if err != nil { + t.Errorf("URL parsing -> Got an error: %s", err) + } + + c, err := NewClient(nil, testJIRAInstanceURL) + if err != nil { + t.Errorf("Client creation -> Got an error: %s", err) + } + if c == nil { + t.Error("Expected a client. Got none") + } + + if b := c.GetBaseURL(); !reflect.DeepEqual(b, *u) { + t.Errorf("Base URLs are not equal. Expected %+v, got %+v", *u, b) + } +} + +func TestClient_Do_PagingInfoEmptyByDefault(t *testing.T) { + c, _ := NewClient(nil, testJIRAInstanceURL) + req, _ := c.NewRequest("GET", "/", nil) + type foo struct { + A string + } + body := new(foo) + + resp, _ := c.Do(req, body) + + if resp.StartAt != 0 { + t.Errorf("StartAt not equal to 0") + } + if resp.MaxResults != 0 { + t.Errorf("StartAt not equal to 0") + } + if resp.Total != 0 { + t.Errorf("StartAt not equal to 0") + } +} diff --git a/vendor/src/github.com/andygrunwald/go-jira/mocks/all_boards.json b/vendor/src/github.com/andygrunwald/go-jira/mocks/all_boards.json new file mode 100644 index 0000000..2065cb6 --- /dev/null +++ b/vendor/src/github.com/andygrunwald/go-jira/mocks/all_boards.json @@ -0,0 +1,43 @@ +{ + "maxResults": 50, + "startAt": 0, + "isLast": true, + "values": [ + { + "id": 4, + "self": "https://test.jira.org/rest/agile/1.0/board/4", + "name": "Test Weekly", + "type": "scrum" + }, + { + "id": 5, + "self": "https://test.jira.org/rest/agile/1.0/board/5", + "name": "Test Production Support", + "type": "kanban" + }, + { + "id": 6, + "self": "https://test.jira.org/rest/agile/1.0/board/6", + "name": "Test To Give", + "type": "kanban" + }, + { + "id": 7, + "self": "https://test.jira.org/rest/agile/1.0/board/7", + "name": "Test Journey App", + "type": "kanban" + }, + { + "id": 9, + "self": "https://test.jira.org/rest/agile/1.0/board/9", + "name": "Testix", + "type": "scrum" + }, + { + "id": 1, + "self": "https://test.jira.org/rest/agile/1.0/board/1", + "name": "Test Mobile", + "type": "scrum" + } + ] +} \ No newline at end of file diff --git a/vendor/src/github.com/andygrunwald/go-jira/mocks/all_boards_filtered.json b/vendor/src/github.com/andygrunwald/go-jira/mocks/all_boards_filtered.json new file mode 100644 index 0000000..545f8a8 --- /dev/null +++ b/vendor/src/github.com/andygrunwald/go-jira/mocks/all_boards_filtered.json @@ -0,0 +1,25 @@ +{ + "maxResults": 10, + "startAt": 1, + "isLast": true, + "values": [ + { + "id": 4, + "self": "https://test.jira.org/rest/agile/1.0/board/4", + "name": "Test Weekly", + "type": "scrum" + }, + { + "id": 9, + "self": "https://test.jira.org/rest/agile/1.0/board/9", + "name": "Testix", + "type": "scrum" + }, + { + "id": 1, + "self": "https://test.jira.org/rest/agile/1.0/board/1", + "name": "Test Mobile", + "type": "scrum" + } + ] +} \ No newline at end of file diff --git a/vendor/src/github.com/andygrunwald/go-jira/mocks/all_projects.json b/vendor/src/github.com/andygrunwald/go-jira/mocks/all_projects.json new file mode 100644 index 0000000..32574c3 --- /dev/null +++ b/vendor/src/github.com/andygrunwald/go-jira/mocks/all_projects.json @@ -0,0 +1,9872 @@ +[ + { + "self": "https://issues.apache.org/jira/rest/api/2/project/10730", + "id": "10730", + "key": "AGILA", + "name": " Agila", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=10730&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=10730&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=10730&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=10730&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10220", + "id": "10220", + "description": "Retired projects - These projects have no active community and are read-only.", + "name": "Retired" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12320120", + "id": "12320120", + "key": "AAR", + "name": "aardvark", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12320120&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12320120&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12320120&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12320120&avatarId=10011" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12310505", + "id": "12310505", + "key": "ABDERA", + "name": "Abdera", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12310505&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12310505&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12310505&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12310505&avatarId=10011" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12312121", + "id": "12312121", + "key": "ACCUMULO", + "name": "Accumulo", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12312121&avatarId=16462", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12312121&avatarId=16462", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12312121&avatarId=16462", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12312121&avatarId=16462" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12310931", + "id": "12310931", + "key": "ACE", + "name": "ACE", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12310931&avatarId=17543", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12310931&avatarId=17543", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12310931&avatarId=17543", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12310931&avatarId=17543" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10760", + "id": "10760", + "description": "Apache Ace related", + "name": "Ace" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12311200", + "id": "12311200", + "key": "ACL", + "name": "ActiveCluster", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12311200&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12311200&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12311200&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12311200&avatarId=10011" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12311210", + "id": "12311210", + "key": "AMQ", + "name": "ActiveMQ", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12311210&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12311210&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12311210&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12311210&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/11160", + "id": "11160", + "description": "ActiveMQ", + "name": "ActiveMQ" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12311201", + "id": "12311201", + "key": "AMQNET", + "name": "ActiveMQ .Net", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12311201&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12311201&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12311201&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12311201&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/11160", + "id": "11160", + "description": "ActiveMQ", + "name": "ActiveMQ" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12311310", + "id": "12311310", + "key": "APLO", + "name": "ActiveMQ Apollo", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12311310&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12311310&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12311310&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12311310&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/11160", + "id": "11160", + "description": "ActiveMQ", + "name": "ActiveMQ" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12315920", + "id": "12315920", + "key": "ARTEMIS", + "name": "ActiveMQ Artemis", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12315920&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12315920&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12315920&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12315920&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/11160", + "id": "11160", + "description": "ActiveMQ", + "name": "ActiveMQ" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12311207", + "id": "12311207", + "key": "AMQCPP", + "name": "ActiveMQ C++ Client", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12311207&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12311207&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12311207&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12311207&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/11160", + "id": "11160", + "description": "ActiveMQ", + "name": "ActiveMQ" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12315620", + "id": "12315620", + "key": "OPENWIRE", + "name": "ActiveMQ OpenWire", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12315620&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12315620&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12315620&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12315620&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/11160", + "id": "11160", + "description": "ActiveMQ", + "name": "ActiveMQ" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12311204", + "id": "12311204", + "key": "BLAZE", + "name": "ActiveRealTime", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12311204&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12311204&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12311204&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12311204&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/11160", + "id": "11160", + "description": "ActiveMQ", + "name": "ActiveMQ" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12310060", + "id": "12310060", + "key": "ADDR", + "name": "Addressing", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12310060&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12310060&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12310060&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12310060&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10220", + "id": "10220", + "description": "Retired projects - These projects have no active community and are read-only.", + "name": "Retired" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12311302", + "id": "12311302", + "key": "AIRAVATA", + "name": "Airavata", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12311302&avatarId=12756", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12311302&avatarId=12756", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12311302&avatarId=12756", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12311302&avatarId=12756" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12311173", + "id": "12311173", + "key": "ALOIS", + "name": "ALOIS", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12311173&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12311173&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12311173&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12311173&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10220", + "id": "10220", + "description": "Retired projects - These projects have no active community and are read-only.", + "name": "Retired" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/10101", + "id": "10101", + "key": "ARMI", + "name": "AltRMI", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=10101&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=10101&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=10101&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=10101&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10220", + "id": "10220", + "description": "Retired projects - These projects have no active community and are read-only.", + "name": "Retired" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12312020", + "id": "12312020", + "key": "AMBARI", + "name": "Ambari", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12312020&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12312020&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12312020&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12312020&avatarId=10011" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12311100", + "id": "12311100", + "key": "AMBER", + "name": "Amber", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12311100&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12311100&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12311100&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12311100&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10024", + "id": "10024", + "description": "Incubator related projects", + "name": "Incubator" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12310632", + "id": "12310632", + "key": "ANAKIA", + "name": "Anakia", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12310632&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12310632&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12310632&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12310632&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10200", + "id": "10200", + "description": "Apache Velocity related projects", + "name": "Velocity" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12320023", + "id": "12320023", + "key": "AIRFLOW", + "name": "Apache Airflow", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12320023&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12320023&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12320023&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12320023&avatarId=10011" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12312323", + "id": "12312323", + "key": "ANY23", + "name": "Apache Any23", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12312323&avatarId=14539", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12312323&avatarId=14539", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12312323&avatarId=14539", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12312323&avatarId=14539" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/11560", + "id": "11560", + "description": "Any23 related", + "name": "Any23" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12318823", + "id": "12318823", + "key": "APEXCORE", + "name": "Apache Apex Core", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12318823&avatarId=25655", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12318823&avatarId=25655", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12318823&avatarId=25655", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12318823&avatarId=25655" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12318824", + "id": "12318824", + "key": "APEXMALHAR", + "name": "Apache Apex Malhar", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12318824&avatarId=25834", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12318824&avatarId=25834", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12318824&avatarId=25834", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12318824&avatarId=25834" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12319525", + "id": "12319525", + "key": "ARROW", + "name": "Apache Arrow", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12319525&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12319525&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12319525&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12319525&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/13960", + "id": "13960", + "description": "Apache Arrow", + "name": "Arrow" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12316420", + "id": "12316420", + "key": "ASTERIXDB", + "name": "Apache AsterixDB", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12316420&avatarId=24741", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12316420&avatarId=24741", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12316420&avatarId=24741", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12316420&avatarId=24741" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10024", + "id": "10024", + "description": "Incubator related projects", + "name": "Incubator" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12313220", + "id": "12313220", + "key": "AWF", + "name": "Apache AWF", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12313220&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12313220&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12313220&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12313220&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10024", + "id": "10024", + "description": "Incubator related projects", + "name": "Incubator" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12313721", + "id": "12313721", + "key": "BLUR", + "name": "Apache Blur", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12313721&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12313721&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12313721&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12313721&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10024", + "id": "10024", + "description": "Incubator related projects", + "name": "Incubator" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12318520", + "id": "12318520", + "key": "CMDA", + "name": "Apache Climate Model Diagnostic Analyzer", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12318520&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12318520&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12318520&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12318520&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10024", + "id": "10024", + "description": "Incubator related projects", + "name": "Incubator" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12316620", + "id": "12316620", + "key": "COMMONSRDF", + "name": "Apache Commons RDF", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12316620&avatarId=26863", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12316620&avatarId=26863", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12316620&avatarId=26863", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12316620&avatarId=26863" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12319120", + "id": "12319120", + "key": "CONCERTED", + "name": "Apache Concerted", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12319120&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12319120&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12319120&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12319120&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10220", + "id": "10220", + "description": "Retired projects - These projects have no active community and are read-only.", + "name": "Retired" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12312420", + "id": "12312420", + "key": "CB", + "name": "Apache Cordova", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12312420&avatarId=15888", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12312420&avatarId=15888", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12312420&avatarId=15888", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12312420&avatarId=15888" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/11963", + "id": "11963", + "description": "Apache Cordova related projects", + "name": "Cordova" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12314425", + "id": "12314425", + "key": "CURATOR", + "name": "Apache Curator", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12314425&avatarId=16745", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12314425&avatarId=16745", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12314425&avatarId=16745", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12314425&avatarId=16745" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12312321", + "id": "12312321", + "key": "DIRECTMEMORY", + "name": "Apache DirectMemory", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12312321&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12312321&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12312321&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12312321&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10024", + "id": "10024", + "description": "Incubator related projects", + "name": "Incubator" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12313820", + "id": "12313820", + "key": "DRILL", + "name": "Apache Drill", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12313820&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12313820&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12313820&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12313820&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10024", + "id": "10024", + "description": "Incubator related projects", + "name": "Incubator" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12319420", + "id": "12319420", + "key": "FINERACT", + "name": "Apache Fineract", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12319420&avatarId=25736", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12319420&avatarId=25736", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12319420&avatarId=25736", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12319420&avatarId=25736" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10024", + "id": "10024", + "description": "Incubator related projects", + "name": "Incubator" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12313521", + "id": "12313521", + "key": "FLEX", + "name": "Apache Flex", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12313521&avatarId=16182", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12313521&avatarId=16182", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12313521&avatarId=16182", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12313521&avatarId=16182" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12318825", + "id": "12318825", + "key": "FREEMARKER", + "name": "Apache Freemarker", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12318825&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12318825&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12318825&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12318825&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10024", + "id": "10024", + "description": "Incubator related projects", + "name": "Incubator" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12319920", + "id": "12319920", + "key": "GEARPUMP", + "name": "Apache Gearpump", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12319920&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12319920&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12319920&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12319920&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10024", + "id": "10024", + "description": "Incubator related projects", + "name": "Incubator" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12311172", + "id": "12311172", + "key": "GORA", + "name": "Apache Gora", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12311172&avatarId=10423", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12311172&avatarId=10423", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12311172&avatarId=10423", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12311172&avatarId=10423" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/11964", + "id": "11964", + "description": "Apache Gora related projects", + "name": "Gora" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12318826", + "id": "12318826", + "key": "HAWQ", + "name": "Apache HAWQ", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12318826&avatarId=25002", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12318826&avatarId=25002", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12318826&avatarId=25002", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12318826&avatarId=25002" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10024", + "id": "10024", + "description": "Incubator related projects", + "name": "Incubator" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12314020", + "id": "12314020", + "key": "HELIX", + "name": "Apache Helix", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12314020&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12314020&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12314020&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12314020&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/12360", + "id": "12360", + "description": "Apache Helix projects", + "name": "Helix" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12318827", + "id": "12318827", + "key": "HORN", + "name": "Apache Horn", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12318827&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12318827&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12318827&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12318827&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10024", + "id": "10024", + "description": "Incubator related projects", + "name": "Incubator" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12311220", + "id": "12311220", + "key": "JENA", + "name": "Apache Jena", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12311220&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12311220&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12311220&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12311220&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/11061", + "id": "11061", + "description": "Apache Jena related projects", + "name": "Jena" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12314427", + "id": "12314427", + "key": "KNOX", + "name": "Apache Knox", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12314427&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12314427&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12314427&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12314427&avatarId=10011" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12315923", + "id": "12315923", + "key": "LENS", + "name": "Apache Lens", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12315923&avatarId=22172", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12315923&avatarId=22172", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12315923&avatarId=22172", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12315923&avatarId=22172" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/13562", + "id": "13562", + "description": "Apache Lens", + "name": "Lens" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12315720", + "id": "12315720", + "key": "CLOWNFISH", + "name": "Apache Lucy-Clownfish", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12315720&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12315720&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12315720&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12315720&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/14061", + "id": "14061", + "description": "Apache Lucy Related Projects", + "name": "Lucy" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12318923", + "id": "12318923", + "key": "MADLIB", + "name": "Apache MADlib", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12318923&avatarId=25311", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12318923&avatarId=25311", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12318923&avatarId=25311", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12318923&avatarId=25311" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10024", + "id": "10024", + "description": "Incubator related projects", + "name": "Incubator" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12314621", + "id": "12314621", + "key": "MASFRES", + "name": "Apache Maven Resource Bundles", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12314621&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12314621&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12314621&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12314621&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10510", + "id": "10510", + "description": "Apache Maven related projects", + "name": "Maven" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12314523", + "id": "12314523", + "key": "METAMODEL", + "name": "Apache MetaModel", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12314523&avatarId=22051", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12314523&avatarId=22051", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12314523&avatarId=22051", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12314523&avatarId=22051" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12316020", + "id": "12316020", + "key": "NIFI", + "name": "Apache NiFi", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12316020&avatarId=22284", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12316020&avatarId=22284", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12316020&avatarId=22284", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12316020&avatarId=22284" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/13460", + "id": "13460", + "description": "Apache NiFi", + "name": "NiFi" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12319921", + "id": "12319921", + "key": "MINIFI", + "name": "Apache NiFi MiNiFi", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12319921&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12319921&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12319921&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12319921&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/13460", + "id": "13460", + "description": "Apache NiFi", + "name": "NiFi" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12314420", + "id": "12314420", + "key": "OLTU", + "name": "Apache Oltu", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12314420&avatarId=18031", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12314420&avatarId=18031", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12314420&avatarId=18031", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12314420&avatarId=18031" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12320021", + "id": "12320021", + "key": "OMID", + "name": "Apache Omid", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12320021&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12320021&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12320021&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12320021&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10024", + "id": "10024", + "description": "Incubator related projects", + "name": "Incubator" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12314120", + "id": "12314120", + "key": "ONAMI", + "name": "Apache Onami", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12314120&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12314120&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12314120&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12314120&avatarId=10011" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12314422", + "id": "12314422", + "key": "CLIMATE", + "name": "Apache Open Climate Workbench", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12314422&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12314422&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12314422&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12314422&avatarId=10011" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12318220", + "id": "12318220", + "key": "OPENAZ", + "name": "Apache OpenAZ", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12318220&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12318220&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12318220&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12318220&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10024", + "id": "10024", + "description": "Incubator related projects", + "name": "Incubator" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12318621", + "id": "12318621", + "key": "QPIDIT", + "name": "Apache QPID IT", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12318621&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12318621&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12318621&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12318621&avatarId=10011" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12320022", + "id": "12320022", + "key": "QUICKSTEP", + "name": "Apache Quickstep", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12320022&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12320022&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12320022&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12320022&avatarId=10011" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12310750", + "id": "12310750", + "key": "RAT", + "name": "Apache Rat", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12310750&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12310750&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12310750&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12310750&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/11060", + "id": "11060", + "description": "Comprehend and audit software distributions", + "name": "Creadur" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12314421", + "id": "12314421", + "key": "RIPPLE", + "name": "Apache Ripple", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12314421&avatarId=16737", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12314421&avatarId=16737", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12314421&avatarId=16737", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12314421&avatarId=16737" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10220", + "id": "10220", + "description": "Retired projects - These projects have no active community and are read-only.", + "name": "Retired" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12310906", + "id": "12310906", + "key": "ROL", + "name": "Apache Roller", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12310906&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12310906&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12310906&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12310906&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10331", + "id": "10331", + "description": "", + "name": "Roller" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12312322", + "id": "12312322", + "key": "S4", + "name": "Apache S4", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12312322&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12312322&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12312322&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12312322&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10024", + "id": "10024", + "description": "Incubator related projects", + "name": "Incubator" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12314820", + "id": "12314820", + "key": "STORM", + "name": "Apache Storm", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12314820&avatarId=21667", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12314820&avatarId=21667", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12314820&avatarId=21667", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12314820&avatarId=21667" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/13260", + "id": "13260", + "description": "Apache Storm Related", + "name": "Storm" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12318322", + "id": "12318322", + "key": "TAVERNA", + "name": "Apache Taverna", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12318322&avatarId=26751", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12318322&avatarId=26751", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12318322&avatarId=26751", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12318322&avatarId=26751" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12313620", + "id": "12313620", + "key": "TENTACLES", + "name": "Apache Tentacles", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12313620&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12313620&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12313620&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12313620&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/11060", + "id": "11060", + "description": "Comprehend and audit software distributions", + "name": "Creadur" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12314426", + "id": "12314426", + "key": "TEZ", + "name": "Apache Tez", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12314426&avatarId=20336", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12314426&avatarId=20336", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12314426&avatarId=20336", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12314426&avatarId=20336" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/12761", + "id": "12761", + "description": "Apache Tez related ", + "name": "Tez" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12312120", + "id": "12312120", + "key": "MTOMCAT", + "name": "Apache Tomcat Maven Plugin", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12312120&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12312120&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12312120&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12312120&avatarId=10011" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12318620", + "id": "12318620", + "key": "TRAFODION", + "name": "Apache Trafodion", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12318620&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12318620&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12318620&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12318620&avatarId=10011" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12315020", + "id": "12315020", + "key": "TWILL", + "name": "Apache Twill", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12315020&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12315020&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12315020&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12315020&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10024", + "id": "10024", + "description": "Incubator related projects", + "name": "Incubator" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12319220", + "id": "12319220", + "key": "UNOMI", + "name": "Apache Unomi", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12319220&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12319220&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12319220&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12319220&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10024", + "id": "10024", + "description": "Incubator related projects", + "name": "Incubator" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12311110", + "id": "12311110", + "key": "WHIRR", + "name": "Apache Whirr (retired)", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12311110&avatarId=10381", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12311110&avatarId=10381", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12311110&avatarId=10381", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12311110&avatarId=10381" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10220", + "id": "10220", + "description": "Retired projects - These projects have no active community and are read-only.", + "name": "Retired" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12313020", + "id": "12313020", + "key": "WHISKER", + "name": "Apache Whisker", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12313020&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12313020&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12313020&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12313020&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/11060", + "id": "11060", + "description": "Comprehend and audit software distributions", + "name": "Creadur" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12311090", + "id": "12311090", + "key": "APACHECON", + "name": "Apachecon", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12311090&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12311090&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12311090&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12311090&avatarId=10011" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12316920", + "id": "12316920", + "key": "MRM", + "name": "Archiva", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12316920&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12316920&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12316920&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12316920&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/13564", + "id": "13564", + "description": "Apache Archiva Project", + "name": "Archiva" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12310981", + "id": "12310981", + "key": "ARIES", + "name": "Aries", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12310981&avatarId=10065", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12310981&avatarId=10065", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12310981&avatarId=10065", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12310981&avatarId=10065" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10520", + "id": "10520", + "description": "Apache Aries", + "name": "Aries" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12310752", + "id": "12310752", + "key": "ASYNCWEB", + "name": "Asyncweb", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12310752&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12310752&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12310752&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12310752&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10240", + "id": "10240", + "description": "MINA related projects", + "name": "MINA" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12318521", + "id": "12318521", + "key": "ATLAS", + "name": "Atlas", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12318521&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12318521&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12318521&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12318521&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10024", + "id": "10024", + "description": "Incubator related projects", + "name": "Incubator" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12310920", + "id": "12310920", + "key": "ATTIC", + "name": "Attic", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12310920&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12310920&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12310920&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12310920&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10130", + "id": "10130", + "description": "General ASF-wide projects.", + "name": "Apache Software Foundation" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12314922", + "id": "12314922", + "key": "AURORA", + "name": "Aurora", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12314922&avatarId=19299", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12314922&avatarId=19299", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12314922&avatarId=19299", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12314922&avatarId=19299" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/13160", + "id": "13160", + "description": "Apache Aurora", + "name": "Aurora" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/10572", + "id": "10572", + "key": "AVALON", + "name": "Avalon", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=10572&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=10572&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=10572&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=10572&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10220", + "id": "10220", + "description": "Retired projects - These projects have no active community and are read-only.", + "name": "Retired" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/10426", + "id": "10426", + "key": "AVNSHARP", + "name": "Avalon Castle", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=10426&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=10426&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=10426&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=10426&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10220", + "id": "10220", + "description": "Retired projects - These projects have no active community and are read-only.", + "name": "Retired" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/10425", + "id": "10425", + "key": "RUNTIME", + "name": "Avalon Merlin Runtime", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=10425&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=10425&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=10425&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=10425&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10220", + "id": "10220", + "description": "Retired projects - These projects have no active community and are read-only.", + "name": "Retired" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/10531", + "id": "10531", + "key": "STUDIO", + "name": "Avalon Merlin Studio", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=10531&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=10531&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=10531&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=10531&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10220", + "id": "10220", + "description": "Retired projects - These projects have no active community and are read-only.", + "name": "Retired" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/10530", + "id": "10530", + "key": "CENTRAL", + "name": "Avalon Metro Central", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=10530&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=10530&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=10530&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=10530&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10220", + "id": "10220", + "description": "Retired projects - These projects have no active community and are read-only.", + "name": "Retired" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/10532", + "id": "10532", + "key": "PLANET", + "name": "Avalon Metro Planet", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=10532&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=10532&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=10532&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=10532&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10220", + "id": "10220", + "description": "Retired projects - These projects have no active community and are read-only.", + "name": "Retired" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/10533", + "id": "10533", + "key": "TOOLS", + "name": "Avalon Metro Tools", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=10533&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=10533&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=10533&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=10533&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10220", + "id": "10220", + "description": "Retired projects - These projects have no active community and are read-only.", + "name": "Retired" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/10081", + "id": "10081", + "key": "PNIX", + "name": "Avalon Phoenix", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=10081&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=10081&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=10081&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=10081&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10220", + "id": "10220", + "description": "Retired projects - These projects have no active community and are read-only.", + "name": "Retired" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12310911", + "id": "12310911", + "key": "AVRO", + "name": "Avro", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12310911&avatarId=12750", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12310911&avatarId=12750", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12310911&avatarId=12750", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12310911&avatarId=12750" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10420", + "id": "10420", + "description": "a serialization system", + "name": "Avro" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12311190", + "id": "12311190", + "key": "AXIOM", + "name": "Axiom", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12311190&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12311190&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12311190&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12311190&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10028", + "id": "10028", + "description": "Web services projects", + "name": "Web Services" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/10460", + "id": "10460", + "key": "AXIS", + "name": "Axis", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=10460&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=10460&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=10460&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=10460&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10401", + "id": "10401", + "description": "Axis and Axis2 related projects", + "name": "Axis" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/10461", + "id": "10461", + "key": "AXISCPP", + "name": "Axis-C++", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=10461&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=10461&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=10461&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=10461&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10401", + "id": "10401", + "description": "Axis and Axis2 related projects", + "name": "Axis" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/10462", + "id": "10462", + "key": "WSIF", + "name": "Axis-WSIF", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=10462&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=10462&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=10462&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=10462&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10220", + "id": "10220", + "description": "Retired projects - These projects have no active community and are read-only.", + "name": "Retired" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/10611", + "id": "10611", + "key": "AXIS2", + "name": "Axis2", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=10611&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=10611&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=10611&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=10611&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10401", + "id": "10401", + "description": "Axis and Axis2 related projects", + "name": "Axis" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12311160", + "id": "12311160", + "key": "TRANSPORTS", + "name": "Axis2 Transports", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12311160&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12311160&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12311160&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12311160&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10401", + "id": "10401", + "description": "Axis and Axis2 related projects", + "name": "Axis" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12310180", + "id": "12310180", + "key": "AXIS2C", + "name": "Axis2-C", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12310180&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12310180&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12310180&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12310180&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10401", + "id": "10401", + "description": "Axis and Axis2 related projects", + "name": "Axis" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12320122", + "id": "12320122", + "key": "BAHIR", + "name": "Bahir", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12320122&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12320122&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12320122&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12320122&avatarId=10011" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12314924", + "id": "12314924", + "key": "BATCHEE", + "name": "BatchEE", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12314924&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12314924&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12314924&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12314924&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10024", + "id": "10024", + "description": "Incubator related projects", + "name": "Incubator" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12314222", + "id": "12314222", + "key": "BATIK", + "name": "Batik", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12314222&avatarId=21762", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12314222&avatarId=21762", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12314222&avatarId=21762", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12314222&avatarId=21762" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12319527", + "id": "12319527", + "key": "BEAM", + "name": "Beam", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12319527&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12319527&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12319527&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12319527&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10024", + "id": "10024", + "description": "Incubator related projects", + "name": "Incubator" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/10570", + "id": "10570", + "key": "BEEHIVE", + "name": "Beehive", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=10570&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=10570&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=10570&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=10570&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10220", + "id": "10220", + "description": "Retired projects - These projects have no active community and are read-only.", + "name": "Retired" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12311420", + "id": "12311420", + "key": "BIGTOP", + "name": "Bigtop", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12311420&avatarId=11135", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12311420&avatarId=11135", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12311420&avatarId=11135", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12311420&avatarId=11135" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/11660", + "id": "11660", + "description": "BigTop related", + "name": "BigTop" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12310907", + "id": "12310907", + "key": "BLUESKY", + "name": "Bluesky", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12310907&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12310907&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12310907&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12310907&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10220", + "id": "10220", + "description": "Retired projects - These projects have no active community and are read-only.", + "name": "Retired" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12311293", + "id": "12311293", + "key": "BOOKKEEPER", + "name": "Bookkeeper", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12311293&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12311293&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12311293&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12311293&avatarId=10011" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12312920", + "id": "12312920", + "key": "TM", + "name": "BRAND", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12312920&avatarId=10009", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12312920&avatarId=10009", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12312920&avatarId=10009", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12312920&avatarId=10009" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12315421", + "id": "12315421", + "key": "BROOKLYN", + "name": "Brooklyn", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12315421&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12315421&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12315421&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12315421&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/13861", + "id": "13861", + "description": "Apache Brooklyn project", + "name": "Brooklyn" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12310734", + "id": "12310734", + "key": "BUILDR", + "name": "Buildr", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12310734&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12310734&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12310734&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12310734&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10350", + "id": "10350", + "description": "Apache Buildr related projects", + "name": "Buildr" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12311080", + "id": "12311080", + "key": "BVAL", + "name": "BVal", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12311080&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12311080&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12311080&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12311080&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10860", + "id": "10860", + "description": "BVal related", + "name": "BVal" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12310070", + "id": "12310070", + "key": "STDCXX", + "name": "C++ Standard Library", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12310070&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12310070&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12310070&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12310070&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10290", + "id": "10290", + "description": "C++ Standard Library projects", + "name": "C++ Standard Library" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/10471", + "id": "10471", + "key": "CACTUS", + "name": "Cactus", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=10471&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=10471&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=10471&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=10471&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10220", + "id": "10220", + "description": "Retired projects - These projects have no active community and are read-only.", + "name": "Retired" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12315524", + "id": "12315524", + "key": "CALCITE", + "name": "Calcite", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12315524&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12315524&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12315524&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12315524&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/13760", + "id": "13760", + "description": "Apache Calcite", + "name": "Calcite" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12311211", + "id": "12311211", + "key": "CAMEL", + "name": "Camel", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12311211&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12311211&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12311211&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12311211&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10482", + "id": "10482", + "description": "", + "name": "Camel" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12310865", + "id": "12310865", + "key": "CASSANDRA", + "name": "Cassandra", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12310865&avatarId=12034", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12310865&avatarId=12034", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12310865&avatarId=12034", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12310865&avatarId=12034" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/11961", + "id": "11961", + "description": "Apache Cassandra related projects", + "name": "Cassandra" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12310903", + "id": "12310903", + "key": "CAY", + "name": "Cayenne", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12310903&avatarId=10010", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12310903&avatarId=10010", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12310903&avatarId=10010", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12310903&avatarId=10010" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10330", + "id": "10330", + "description": "", + "name": "Cayenne" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12311213", + "id": "12311213", + "key": "CELIX", + "name": "Celix", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12311213&avatarId=22342", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12311213&avatarId=22342", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12311213&avatarId=22342", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12311213&avatarId=22342" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10024", + "id": "10024", + "description": "Incubator related projects", + "name": "Incubator" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12310936", + "id": "12310936", + "key": "CMIS", + "name": "Chemistry", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12310936&avatarId=19264", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12310936&avatarId=19264", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12310936&avatarId=19264", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12310936&avatarId=19264" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10540", + "id": "10540", + "description": "Apache Chemistry", + "name": "Chemistry" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12310900", + "id": "12310900", + "key": "CHUKWA", + "name": "Chukwa", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12310900&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12310900&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12310900&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12310900&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10440", + "id": "10440", + "description": "Distributed log aggregation system", + "name": "Chukwa" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12311020", + "id": "12311020", + "key": "CLEREZZA", + "name": "Clerezza", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12311020&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12311020&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12311020&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12311020&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10024", + "id": "10024", + "description": "Incubator related projects", + "name": "Incubator" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12310902", + "id": "12310902", + "key": "CLK", + "name": "Click", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12310902&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12310902&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12310902&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12310902&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10220", + "id": "10220", + "description": "Retired projects - These projects have no active community and are read-only.", + "name": "Retired" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12310901", + "id": "12310901", + "key": "CLKE", + "name": "Click Eclipse", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12310901&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12310901&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12310901&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12310901&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10390", + "id": "10390", + "description": "Click related projects", + "name": "Click" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12313920", + "id": "12313920", + "key": "CLOUDSTACK", + "name": "CloudStack", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12313920&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12313920&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12313920&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12313920&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/11969", + "id": "11969", + "description": "Apache Cloudstack related projects", + "name": "Cloudstack" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12310170", + "id": "12310170", + "key": "COCOON", + "name": "Cocoon", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12310170&avatarId=16588", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12310170&avatarId=16588", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12310170&avatarId=16588", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12310170&avatarId=16588" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10160", + "id": "10160", + "description": "Apache Cocoon related projects", + "name": "Cocoon" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12310838", + "id": "12310838", + "key": "COCOON3", + "name": "Cocoon 3", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12310838&avatarId=16587", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12310838&avatarId=16587", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12310838&avatarId=16587", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12310838&avatarId=16587" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10160", + "id": "10160", + "description": "Apache Cocoon related projects", + "name": "Cocoon" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12310466", + "id": "12310466", + "key": "COMMONSSITE", + "name": "Commons All", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12310466&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12310466&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12310466&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12310466&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10260", + "id": "10260", + "description": "Apache Commons components", + "name": "Commons" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12310459", + "id": "12310459", + "key": "ATTRIBUTES", + "name": "Commons Attributes", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12310459&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12310459&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12310459&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12310459&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10260", + "id": "10260", + "description": "Apache Commons components", + "name": "Commons" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12314220", + "id": "12314220", + "key": "BCEL", + "name": "Commons BCEL", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12314220&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12314220&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12314220&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12314220&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10260", + "id": "10260", + "description": "Apache Commons components", + "name": "Commons" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12310460", + "id": "12310460", + "key": "BEANUTILS", + "name": "Commons BeanUtils", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12310460&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12310460&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12310460&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12310460&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10260", + "id": "10260", + "description": "Apache Commons components", + "name": "Commons" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12310461", + "id": "12310461", + "key": "BETWIXT", + "name": "Commons Betwixt", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12310461&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12310461&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12310461&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12310461&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10260", + "id": "10260", + "description": "Apache Commons components", + "name": "Commons" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12310621", + "id": "12310621", + "key": "BSF", + "name": "Commons BSF", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12310621&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12310621&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12310621&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12310621&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10260", + "id": "10260", + "description": "Apache Commons components", + "name": "Commons" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12310462", + "id": "12310462", + "key": "CHAIN", + "name": "Commons Chain", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12310462&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12310462&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12310462&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12310462&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10260", + "id": "10260", + "description": "Apache Commons components", + "name": "Commons" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12310463", + "id": "12310463", + "key": "CLI", + "name": "Commons CLI", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12310463&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12310463&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12310463&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12310463&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10260", + "id": "10260", + "description": "Apache Commons components", + "name": "Commons" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12310464", + "id": "12310464", + "key": "CODEC", + "name": "Commons Codec", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12310464&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12310464&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12310464&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12310464&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10260", + "id": "10260", + "description": "Apache Commons components", + "name": "Commons" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12310465", + "id": "12310465", + "key": "COLLECTIONS", + "name": "Commons Collections", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12310465&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12310465&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12310465&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12310465&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10260", + "id": "10260", + "description": "Apache Commons components", + "name": "Commons" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12310904", + "id": "12310904", + "key": "COMPRESS", + "name": "Commons Compress", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12310904&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12310904&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12310904&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12310904&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10260", + "id": "10260", + "description": "Apache Commons components", + "name": "Commons" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12310467", + "id": "12310467", + "key": "CONFIGURATION", + "name": "Commons Configuration", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12310467&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12310467&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12310467&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12310467&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10260", + "id": "10260", + "description": "Apache Commons components", + "name": "Commons" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12320024", + "id": "12320024", + "key": "CRYPTO", + "name": "Commons Crypto", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12320024&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12320024&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12320024&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12320024&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10260", + "id": "10260", + "description": "Apache Commons components", + "name": "Commons" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12313222", + "id": "12313222", + "key": "CSV", + "name": "Commons CSV", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12313222&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12313222&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12313222&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12313222&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10260", + "id": "10260", + "description": "Apache Commons components", + "name": "Commons" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12310468", + "id": "12310468", + "key": "DAEMON", + "name": "Commons Daemon", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12310468&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12310468&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12310468&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12310468&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10260", + "id": "10260", + "description": "Apache Commons components", + "name": "Commons" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12310469", + "id": "12310469", + "key": "DBCP", + "name": "Commons Dbcp", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12310469&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12310469&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12310469&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12310469&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10260", + "id": "10260", + "description": "Apache Commons components", + "name": "Commons" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12310470", + "id": "12310470", + "key": "DBUTILS", + "name": "Commons DbUtils", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12310470&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12310470&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12310470&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12310470&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10260", + "id": "10260", + "description": "Apache Commons components", + "name": "Commons" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12310471", + "id": "12310471", + "key": "DIGESTER", + "name": "Commons Digester", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12310471&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12310471&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12310471&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12310471&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10260", + "id": "10260", + "description": "Apache Commons components", + "name": "Commons" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12310472", + "id": "12310472", + "key": "DISCOVERY", + "name": "Commons Discovery", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12310472&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12310472&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12310472&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12310472&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10260", + "id": "10260", + "description": "Apache Commons components", + "name": "Commons" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12310591", + "id": "12310591", + "key": "DORMANT", + "name": "Commons Dormant", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12310591&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12310591&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12310591&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12310591&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10260", + "id": "10260", + "description": "Apache Commons components", + "name": "Commons" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12310473", + "id": "12310473", + "key": "EL", + "name": "Commons EL", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12310473&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12310473&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12310473&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12310473&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10260", + "id": "10260", + "description": "Apache Commons components", + "name": "Commons" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12310474", + "id": "12310474", + "key": "EMAIL", + "name": "Commons Email", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12310474&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12310474&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12310474&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12310474&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10260", + "id": "10260", + "description": "Apache Commons components", + "name": "Commons" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12310814", + "id": "12310814", + "key": "EXEC", + "name": "Commons Exec", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12310814&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12310814&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12310814&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12310814&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10260", + "id": "10260", + "description": "Apache Commons components", + "name": "Commons" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12310475", + "id": "12310475", + "key": "FEEDPARSER", + "name": "Commons FeedParser", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12310475&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12310475&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12310475&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12310475&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10220", + "id": "10220", + "description": "Retired projects - These projects have no active community and are read-only.", + "name": "Retired" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12310476", + "id": "12310476", + "key": "FILEUPLOAD", + "name": "Commons FileUpload", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12310476&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12310476&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12310476&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12310476&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10260", + "id": "10260", + "description": "Apache Commons components", + "name": "Commons" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12312520", + "id": "12312520", + "key": "FUNCTOR", + "name": "Commons Functor", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12312520&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12312520&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12312520&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12312520&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10260", + "id": "10260", + "description": "Apache Commons components", + "name": "Commons" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12313421", + "id": "12313421", + "key": "IMAGING", + "name": "Commons Imaging", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12313421&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12313421&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12313421&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12313421&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10260", + "id": "10260", + "description": "Apache Commons components", + "name": "Commons" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12310477", + "id": "12310477", + "key": "IO", + "name": "Commons IO", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12310477&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12310477&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12310477&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12310477&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10260", + "id": "10260", + "description": "Apache Commons components", + "name": "Commons" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12310650", + "id": "12310650", + "key": "JCI", + "name": "Commons JCI", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12310650&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12310650&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12310650&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12310650&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10260", + "id": "10260", + "description": "Apache Commons components", + "name": "Commons" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12310506", + "id": "12310506", + "key": "JCS", + "name": "Commons JCS", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12310506&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12310506&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12310506&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12310506&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10260", + "id": "10260", + "description": "Apache Commons components", + "name": "Commons" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/10012", + "id": "10012", + "key": "JELLY", + "name": "Commons Jelly", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=10012&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=10012&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=10012&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=10012&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10260", + "id": "10260", + "description": "Apache Commons components", + "name": "Commons" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12310479", + "id": "12310479", + "key": "JEXL", + "name": "Commons JEXL", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12310479&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12310479&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12310479&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12310479&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10260", + "id": "10260", + "description": "Apache Commons components", + "name": "Commons" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12310480", + "id": "12310480", + "key": "JXPATH", + "name": "Commons JXPath", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12310480&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12310480&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12310480&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12310480&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10260", + "id": "10260", + "description": "Apache Commons components", + "name": "Commons" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12310481", + "id": "12310481", + "key": "LANG", + "name": "Commons Lang", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12310481&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12310481&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12310481&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12310481&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10260", + "id": "10260", + "description": "Apache Commons components", + "name": "Commons" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12310483", + "id": "12310483", + "key": "LAUNCHER", + "name": "Commons Launcher", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12310483&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12310483&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12310483&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12310483&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10260", + "id": "10260", + "description": "Apache Commons components", + "name": "Commons" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12310484", + "id": "12310484", + "key": "LOGGING", + "name": "Commons Logging", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12310484&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12310484&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12310484&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12310484&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10260", + "id": "10260", + "description": "Apache Commons components", + "name": "Commons" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12310485", + "id": "12310485", + "key": "MATH", + "name": "Commons Math", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12310485&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12310485&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12310485&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12310485&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10260", + "id": "10260", + "description": "Apache Commons components", + "name": "Commons" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12310486", + "id": "12310486", + "key": "MODELER", + "name": "Commons Modeler", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12310486&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12310486&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12310486&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12310486&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10260", + "id": "10260", + "description": "Apache Commons components", + "name": "Commons" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12310487", + "id": "12310487", + "key": "NET", + "name": "Commons Net", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12310487&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12310487&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12310487&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12310487&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10260", + "id": "10260", + "description": "Apache Commons components", + "name": "Commons" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12313525", + "id": "12313525", + "key": "OGNL", + "name": "Commons OGNL", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12313525&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12313525&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12313525&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12313525&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10260", + "id": "10260", + "description": "Apache Commons components", + "name": "Commons" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12310488", + "id": "12310488", + "key": "POOL", + "name": "Commons Pool", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12310488&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12310488&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12310488&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12310488&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10260", + "id": "10260", + "description": "Apache Commons components", + "name": "Commons" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12310489", + "id": "12310489", + "key": "PRIMITIVES", + "name": "Commons Primitives", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12310489&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12310489&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12310489&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12310489&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10260", + "id": "10260", + "description": "Apache Commons components", + "name": "Commons" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12310731", + "id": "12310731", + "key": "PROXY", + "name": "Commons Proxy", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12310731&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12310731&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12310731&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12310731&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10260", + "id": "10260", + "description": "Apache Commons components", + "name": "Commons" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12310490", + "id": "12310490", + "key": "RESOURCES", + "name": "Commons Resources", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12310490&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12310490&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12310490&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12310490&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10260", + "id": "10260", + "description": "Apache Commons components", + "name": "Commons" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12310491", + "id": "12310491", + "key": "SANDBOX", + "name": "Commons Sandbox", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12310491&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12310491&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12310491&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12310491&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10260", + "id": "10260", + "description": "Apache Commons components", + "name": "Commons" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12310720", + "id": "12310720", + "key": "SANSELAN", + "name": "Commons Sanselan", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12310720&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12310720&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12310720&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12310720&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10260", + "id": "10260", + "description": "Apache Commons components", + "name": "Commons" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12310492", + "id": "12310492", + "key": "SCXML", + "name": "Commons SCXML", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12310492&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12310492&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12310492&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12310492&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10260", + "id": "10260", + "description": "Apache Commons components", + "name": "Commons" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12318221", + "id": "12318221", + "key": "TEXT", + "name": "Commons Text", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12318221&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12318221&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12318221&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12318221&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10260", + "id": "10260", + "description": "Apache Commons components", + "name": "Commons" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12310493", + "id": "12310493", + "key": "TRANSACTION", + "name": "Commons Transaction", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12310493&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12310493&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12310493&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12310493&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10260", + "id": "10260", + "description": "Apache Commons components", + "name": "Commons" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12310494", + "id": "12310494", + "key": "VALIDATOR", + "name": "Commons Validator", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12310494&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12310494&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12310494&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12310494&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10260", + "id": "10260", + "description": "Apache Commons components", + "name": "Commons" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12310495", + "id": "12310495", + "key": "VFS", + "name": "Commons VFS", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12310495&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12310495&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12310495&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12310495&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10260", + "id": "10260", + "description": "Apache Commons components", + "name": "Commons" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12315320", + "id": "12315320", + "key": "WEAVER", + "name": "Commons Weaver", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12315320&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12315320&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12315320&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12315320&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10260", + "id": "10260", + "description": "Apache Commons components", + "name": "Commons" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12311010", + "id": "12311010", + "key": "COMDEV", + "name": "Community Development", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12311010&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12311010&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12311010&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12311010&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10130", + "id": "10130", + "description": "General ASF-wide projects.", + "name": "Apache Software Foundation" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12316921", + "id": "12316921", + "key": "CONTINUUM", + "name": "Continuum", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12316921&avatarId=23443", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12316921&avatarId=23443", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12316921&avatarId=23443", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12316921&avatarId=23443" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/13565", + "id": "13565", + "description": "Apache Continuum Project", + "name": "Continuum" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12316120", + "id": "12316120", + "key": "COR", + "name": "Corinthia", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12316120&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12316120&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12316120&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12316120&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10220", + "id": "10220", + "description": "Retired projects - These projects have no active community and are read-only.", + "name": "Retired" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12318722", + "id": "12318722", + "key": "COTTON", + "name": "COTTON", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12318722&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12318722&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12318722&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12318722&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10220", + "id": "10220", + "description": "Retired projects - These projects have no active community and are read-only.", + "name": "Retired" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12310780", + "id": "12310780", + "key": "COUCHDB", + "name": "CouchDB", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12310780&avatarId=13936", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12310780&avatarId=13936", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12310780&avatarId=13936", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12310780&avatarId=13936" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10320", + "id": "10320", + "description": "CouchDB & related projects", + "name": "CouchDB" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12313526", + "id": "12313526", + "key": "CRUNCH", + "name": "Crunch", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12313526&avatarId=23934", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12313526&avatarId=23934", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12313526&avatarId=23934", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12313526&avatarId=23934" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/11965", + "id": "11965", + "description": "Apache Crunch related projects", + "name": "Crunch" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12313621", + "id": "12313621", + "key": "CTAKES", + "name": "cTAKES", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12313621&avatarId=16772", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12313621&avatarId=16772", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12313621&avatarId=16772", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12313621&avatarId=16772" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10024", + "id": "10024", + "description": "Incubator related projects", + "name": "Incubator" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12310511", + "id": "12310511", + "key": "CXF", + "name": "CXF", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12310511&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12310511&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12310511&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12310511&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10300", + "id": "10300", + "description": "CXF related projects", + "name": "CXF" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12311031", + "id": "12311031", + "key": "DOSGI", + "name": "CXF Distributed OSGi", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12311031&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12311031&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12311031&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12311031&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10300", + "id": "10300", + "description": "CXF related projects", + "name": "CXF" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12315520", + "id": "12315520", + "key": "CXFXJC", + "name": "CXF XJC Utils", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12315520&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12315520&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12315520&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12315520&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10300", + "id": "10300", + "description": "CXF related projects", + "name": "CXF" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12313420", + "id": "12313420", + "key": "FEDIZ", + "name": "CXF-Fediz", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12313420&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12313420&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12313420&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12313420&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10300", + "id": "10300", + "description": "CXF related projects", + "name": "CXF" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12315221", + "id": "12315221", + "key": "DATAFU", + "name": "DataFu", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12315221&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12315221&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12315221&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12315221&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10024", + "id": "10024", + "description": "Incubator related projects", + "name": "Incubator" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12310320", + "id": "12310320", + "key": "DAYTRADER", + "name": "DayTrader", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12310320&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12310320&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12310320&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12310320&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10061", + "id": "10061", + "description": "Apache J2EE project", + "name": "Geronimo" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/10731", + "id": "10731", + "key": "DDLUTILS", + "name": "DdlUtils", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=10731&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=10731&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=10731&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=10731&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10090", + "id": "10090", + "description": "DB related projects", + "name": "DB" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12311150", + "id": "12311150", + "key": "DTACLOUD", + "name": "DeltaCloud", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12311150&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12311150&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12311150&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12311150&avatarId=10011" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12312820", + "id": "12312820", + "key": "DELTASPIKE", + "name": "DeltaSpike", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12312820&avatarId=21232", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12312820&avatarId=21232", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12312820&avatarId=21232", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12312820&avatarId=21232" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/12660", + "id": "12660", + "description": "Apache Deltaspike related projects", + "name": "Deltaspike" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/10403", + "id": "10403", + "key": "DEPOT", + "name": "Depot", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=10403&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=10403&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=10403&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=10403&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10220", + "id": "10220", + "description": "Retired projects - These projects have no active community and are read-only.", + "name": "Retired" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/10594", + "id": "10594", + "key": "DERBY", + "name": "Derby", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=10594&avatarId=10122", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=10594&avatarId=10122", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=10594&avatarId=10122", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=10594&avatarId=10122" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10090", + "id": "10090", + "description": "DB related projects", + "name": "DB" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12312921", + "id": "12312921", + "key": "DMAP", + "name": "DeviceMap", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12312921&avatarId=20134", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12312921&avatarId=20134", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12312921&avatarId=20134", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12312921&avatarId=20134" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/12860", + "id": "12860", + "description": "Apache Devicemap related.", + "name": "Devicemap" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/10400", + "id": "10400", + "key": "DIR", + "name": "Directory", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=10400&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=10400&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=10400&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=10400&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10041", + "id": "10041", + "description": "Apache Directory Project Category", + "name": "Directory" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12310260", + "id": "12310260", + "key": "DIRSERVER", + "name": "Directory ApacheDS", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12310260&avatarId=13247", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12310260&avatarId=13247", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12310260&avatarId=13247", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12310260&avatarId=13247" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10041", + "id": "10041", + "description": "Apache Directory Project Category", + "name": "Directory" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12310962", + "id": "12310962", + "key": "DIRAPI", + "name": "Directory Client API", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12310962&avatarId=23691", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12310962&avatarId=23691", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12310962&avatarId=23691", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12310962&avatarId=23691" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10041", + "id": "10041", + "description": "Apache Directory Project Category", + "name": "Directory" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12310880", + "id": "12310880", + "key": "DIRGROOVY", + "name": "Directory Groovy LDAP", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12310880&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12310880&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12310880&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12310880&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10041", + "id": "10041", + "description": "Apache Directory Project Category", + "name": "Directory" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12310910", + "id": "12310910", + "key": "DIRKRB", + "name": "Directory Kerberos", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12310910&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12310910&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12310910&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12310910&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10041", + "id": "10041", + "description": "Apache Directory Project Category", + "name": "Directory" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/10512", + "id": "10512", + "key": "DIRNAMING", + "name": "Directory Naming", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=10512&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=10512&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=10512&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=10512&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10041", + "id": "10041", + "description": "Apache Directory Project Category", + "name": "Directory" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12310770", + "id": "12310770", + "key": "DIRSHARED", + "name": "Directory Shared (Please use DIRAPI instead)", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12310770&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12310770&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12310770&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12310770&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10041", + "id": "10041", + "description": "Apache Directory Project Category", + "name": "Directory" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12310590", + "id": "12310590", + "key": "DIRSTUDIO", + "name": "Directory Studio", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12310590&avatarId=13246", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12310590&avatarId=13246", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12310590&avatarId=13246", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12310590&avatarId=13246" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10041", + "id": "10041", + "description": "Apache Directory Project Category", + "name": "Directory" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12310652", + "id": "12310652", + "key": "DBF", + "name": "DocBook Framework", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12310652&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12310652&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12310652&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12310652&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10200", + "id": "10200", + "description": "Apache Velocity related projects", + "name": "Velocity" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12310842", + "id": "12310842", + "key": "DROIDS", + "name": "Droids", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12310842&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12310842&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12310842&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12310842&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10220", + "id": "10220", + "description": "Retired projects - These projects have no active community and are read-only.", + "name": "Retired" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12310670", + "id": "12310670", + "key": "DVSL", + "name": "Dvsl", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12310670&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12310670&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12310670&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12310670&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10200", + "id": "10200", + "description": "Apache Velocity related projects", + "name": "Velocity" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12319222", + "id": "12319222", + "key": "EAGLE", + "name": "Eagle", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12319222&avatarId=25467", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12319222&avatarId=25467", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12319222&avatarId=25467", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12319222&avatarId=25467" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10024", + "id": "10024", + "description": "Incubator related projects", + "name": "Incubator" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12311270", + "id": "12311270", + "key": "EASYANT", + "name": "EasyAnt", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12311270&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12311270&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12311270&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12311270&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10310", + "id": "10310", + "description": "Apache Ant related projects", + "name": "Ant" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12310813", + "id": "12310813", + "key": "ECS", + "name": "ECS", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12310813&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12310813&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12310813&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12310813&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10220", + "id": "10220", + "description": "Retired projects - These projects have no active community and are read-only.", + "name": "Retired" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12310820", + "id": "12310820", + "key": "EMPIREDB", + "name": "Empire-DB", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12310820&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12310820&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12310820&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12310820&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10024", + "id": "10024", + "description": "Incubator related projects", + "name": "Incubator" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12310850", + "id": "12310850", + "key": "ESME", + "name": "Enterprise Social Messaging Environment (ESME)", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12310850&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12310850&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12310850&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12310850&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10490", + "id": "10490", + "description": "Apache ESME related projects", + "name": "ESME" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12314926", + "id": "12314926", + "key": "ESCIMO", + "name": "eSCIMo ", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12314926&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12314926&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12314926&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12314926&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10041", + "id": "10041", + "description": "Apache Directory Project Category", + "name": "Directory" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12310835", + "id": "12310835", + "key": "ETCH", + "name": "Etch", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12310835&avatarId=16525", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12310835&avatarId=16525", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12310835&avatarId=16525", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12310835&avatarId=16525" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/11861", + "id": "11861", + "description": "Apache Etch related projects", + "name": "Etch" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/10620", + "id": "10620", + "key": "EWS", + "name": "ews", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=10620&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=10620&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=10620&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=10620&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10220", + "id": "10220", + "description": "Retired projects - These projects have no active community and are read-only.", + "name": "Retired" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/10428", + "id": "10428", + "key": "EXLBR", + "name": "Excalibur Components", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=10428&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=10428&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=10428&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=10428&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10220", + "id": "10220", + "description": "Retired projects - These projects have no active community and are read-only.", + "name": "Retired" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/10420", + "id": "10420", + "key": "FORTRESS", + "name": "Excalibur Fortress", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=10420&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=10420&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=10420&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=10420&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10220", + "id": "10220", + "description": "Retired projects - These projects have no active community and are read-only.", + "name": "Retired" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12314429", + "id": "12314429", + "key": "FALCON", + "name": "Falcon", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12314429&avatarId=16974", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12314429&avatarId=16974", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12314429&avatarId=16974", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12314429&avatarId=16974" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10024", + "id": "10024", + "description": "Incubator related projects", + "name": "Incubator" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12310100", + "id": "12310100", + "key": "FELIX", + "name": "Felix", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12310100&avatarId=15642", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12310100&avatarId=15642", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12310100&avatarId=15642", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12310100&avatarId=15642" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10121", + "id": "10121", + "description": "OSGi container projects", + "name": "Felix" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12315522", + "id": "12315522", + "key": "FLINK", + "name": "Flink", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12315522&avatarId=21685", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12315522&avatarId=21685", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12315522&avatarId=21685", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12315522&avatarId=21685" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/13360", + "id": "13360", + "description": "Apache Flink", + "name": "Flink" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12311321", + "id": "12311321", + "key": "FLUME", + "name": "Flume", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12311321&avatarId=11433", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12311321&avatarId=11433", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12311321&avatarId=11433", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12311321&avatarId=11433" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/11960", + "id": "11960", + "description": "Apache Flume related projects", + "name": "Flume" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12314223", + "id": "12314223", + "key": "FOP", + "name": "FOP", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12314223&avatarId=21763", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12314223&avatarId=21763", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12314223&avatarId=21763", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12314223&avatarId=21763" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12310000", + "id": "12310000", + "key": "FOR", + "name": "Forrest", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12310000&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12310000&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12310000&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12310000&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10112", + "id": "10112", + "description": "Forrest related projects", + "name": "Forrest" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12315921", + "id": "12315921", + "key": "FC", + "name": "FORTRESS", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12315921&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12315921&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12315921&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12315921&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10041", + "id": "10041", + "description": "Apache Directory Project Category", + "name": "Directory" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/10571", + "id": "10571", + "key": "FTPSERVER", + "name": "FtpServer", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=10571&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=10571&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=10571&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=10571&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10240", + "id": "10240", + "description": "MINA related projects", + "name": "MINA" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12310200", + "id": "12310200", + "key": "GBUILD", + "name": "GBuild", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12310200&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12310200&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12310200&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12310200&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10061", + "id": "10061", + "description": "Apache J2EE project", + "name": "Geronimo" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12318420", + "id": "12318420", + "key": "GEODE", + "name": "Geode", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12318420&avatarId=23734", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12318420&avatarId=23734", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12318420&avatarId=23734", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12318420&avatarId=23734" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10024", + "id": "10024", + "description": "Incubator related projects", + "name": "Incubator" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/10220", + "id": "10220", + "key": "GERONIMO", + "name": "Geronimo", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=10220&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=10220&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=10220&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=10220&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10061", + "id": "10061", + "description": "Apache J2EE project", + "name": "Geronimo" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12310111", + "id": "12310111", + "key": "GERONIMODEVTOOLS", + "name": "Geronimo-Devtools", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12310111&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12310111&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12310111&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12310111&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10061", + "id": "10061", + "description": "Apache J2EE project", + "name": "Geronimo" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12311820", + "id": "12311820", + "key": "GIRAPH", + "name": "Giraph", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12311820&avatarId=14838", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12311820&avatarId=14838", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12311820&avatarId=14838", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12311820&avatarId=14838" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/11966", + "id": "11966", + "description": "Apache Giraph related projects", + "name": "Giraph" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12320121", + "id": "12320121", + "key": "GOSSIP", + "name": "Gossip", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12320121&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12320121&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12320121&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12320121&avatarId=10011" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/10661", + "id": "10661", + "key": "GRFT", + "name": "Graffito", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=10661&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=10661&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=10661&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=10661&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10220", + "id": "10220", + "description": "Retired projects - These projects have no active community and are read-only.", + "name": "Retired" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12318123", + "id": "12318123", + "key": "GROOVY", + "name": "Groovy", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12318123&avatarId=24643", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12318123&avatarId=24643", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12318123&avatarId=24643", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12318123&avatarId=24643" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/13860", + "id": "13860", + "description": "Apache Groovy project", + "name": "Groovy" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12310503", + "id": "12310503", + "key": "GSHELL", + "name": "GShell", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12310503&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12310503&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12310503&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12310503&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10061", + "id": "10061", + "description": "Apache J2EE project", + "name": "Geronimo" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12319620", + "id": "12319620", + "key": "GUACAMOLE", + "name": "Guacamole", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12319620&avatarId=26958", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12319620&avatarId=26958", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12319620&avatarId=26958", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12319620&avatarId=26958" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10024", + "id": "10024", + "description": "Incubator related projects", + "name": "Incubator" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/10457", + "id": "10457", + "key": "GUMP", + "name": "Gump", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=10457&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=10457&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=10457&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=10457&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10030", + "id": "10030", + "description": "Gump related projects", + "name": "Gump" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12310240", + "id": "12310240", + "key": "HADOOP", + "name": "Hadoop Common", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12310240&avatarId=10095", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12310240&avatarId=10095", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12310240&avatarId=10095", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12310240&avatarId=10095" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10292", + "id": "10292", + "description": "Scalable Distributed Computing", + "name": "Hadoop" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12314121", + "id": "12314121", + "key": "HDT", + "name": "Hadoop Development Tools", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12314121&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12314121&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12314121&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12314121&avatarId=10011" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12310942", + "id": "12310942", + "key": "HDFS", + "name": "Hadoop HDFS", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12310942&avatarId=10094", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12310942&avatarId=10094", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12310942&avatarId=10094", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12310942&avatarId=10094" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10292", + "id": "10292", + "description": "Scalable Distributed Computing", + "name": "Hadoop" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12310941", + "id": "12310941", + "key": "MAPREDUCE", + "name": "Hadoop Map/Reduce", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12310941&avatarId=10096", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12310941&avatarId=10096", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12310941&avatarId=10096", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12310941&avatarId=10096" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10292", + "id": "10292", + "description": "Scalable Distributed Computing", + "name": "Hadoop" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12313722", + "id": "12313722", + "key": "YARN", + "name": "Hadoop YARN", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12313722&avatarId=15135", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12313722&avatarId=15135", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12313722&avatarId=15135", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12313722&avatarId=15135" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10292", + "id": "10292", + "description": "Scalable Distributed Computing", + "name": "Hadoop" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12310810", + "id": "12310810", + "key": "HAMA", + "name": "Hama", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12310810&avatarId=10328", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12310810&avatarId=10328", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12310810&avatarId=10328", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12310810&avatarId=10328" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/11561", + "id": "11561", + "description": "Apache Hama related projects", + "name": "Hama" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12310050", + "id": "12310050", + "key": "HARMONY", + "name": "Harmony", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12310050&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12310050&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12310050&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12310050&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10220", + "id": "10220", + "description": "Retired projects - These projects have no active community and are read-only.", + "name": "Retired" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12310753", + "id": "12310753", + "key": "HBASE", + "name": "HBase", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12310753&avatarId=16550", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12310753&avatarId=16550", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12310753&avatarId=16550", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12310753&avatarId=16550" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10292", + "id": "10292", + "description": "Scalable Distributed Computing", + "name": "Hadoop" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12311291", + "id": "12311291", + "key": "HCATALOG", + "name": "HCatalog", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12311291&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12311291&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12311291&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12311291&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10024", + "id": "10024", + "description": "Incubator related projects", + "name": "Incubator" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12310550", + "id": "12310550", + "key": "HERALDRY", + "name": "Heraldry", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12310550&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12310550&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12310550&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12310550&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10220", + "id": "10220", + "description": "Retired projects - These projects have no active community and are read-only.", + "name": "Retired" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12311000", + "id": "12311000", + "key": "HISE", + "name": "HISE", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12311000&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12311000&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12311000&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12311000&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10220", + "id": "10220", + "description": "Retired projects - These projects have no active community and are read-only.", + "name": "Retired" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12310843", + "id": "12310843", + "key": "HIVE", + "name": "Hive", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12310843&avatarId=11935", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12310843&avatarId=11935", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12310843&avatarId=11935", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12310843&avatarId=11935" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10292", + "id": "10292", + "description": "Scalable Distributed Computing", + "name": "Hadoop" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/10500", + "id": "10500", + "key": "HIVEMIND", + "name": "HiveMind", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=10500&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=10500&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=10500&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=10500&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10220", + "id": "10220", + "description": "Retired projects - These projects have no active community and are read-only.", + "name": "Retired" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12315924", + "id": "12315924", + "key": "HTRACE", + "name": "HTrace", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12315924&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12315924&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12315924&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12315924&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10024", + "id": "10024", + "description": "Incubator related projects", + "name": "Incubator" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12311081", + "id": "12311081", + "key": "HTTPASYNC", + "name": "HttpComponents HttpAsyncClient", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12311081&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12311081&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12311081&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12311081&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10280", + "id": "10280", + "description": "Apache HttpComponents Project", + "name": "HttpComponents" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12310360", + "id": "12310360", + "key": "HTTPCLIENT", + "name": "HttpComponents HttpClient", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12310360&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12310360&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12310360&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12310360&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10280", + "id": "10280", + "description": "Apache HttpComponents Project", + "name": "HttpComponents" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12310340", + "id": "12310340", + "key": "HTTPCORE", + "name": "HttpComponents HttpCore", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12310340&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12310340&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12310340&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12310340&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10280", + "id": "10280", + "description": "Apache HttpComponents Project", + "name": "HttpComponents" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/10602", + "id": "10602", + "key": "IBATISNET", + "name": "iBatis for .NET", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=10602&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=10602&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=10602&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=10602&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10220", + "id": "10220", + "description": "Retired projects - These projects have no active community and are read-only.", + "name": "Retired" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/10601", + "id": "10601", + "key": "IBATIS", + "name": "iBatis for Java [READ ONLY]", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=10601&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=10601&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=10601&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=10601&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10220", + "id": "10220", + "description": "Retired projects - These projects have no active community and are read-only.", + "name": "Retired" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12310572", + "id": "12310572", + "key": "RBATIS", + "name": "iBATIS for Ruby", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12310572&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12310572&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12310572&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12310572&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10220", + "id": "10220", + "description": "Retired projects - These projects have no active community and are read-only.", + "name": "Retired" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12315922", + "id": "12315922", + "key": "IGNITE", + "name": "Ignite", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12315922&avatarId=22313", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12315922&avatarId=22313", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12315922&avatarId=22313", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12315922&avatarId=22313" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/13563", + "id": "13563", + "description": "Apache Ignite", + "name": "Ignite" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12310742", + "id": "12310742", + "key": "IMPERIUS", + "name": "Imperius", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12310742&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12310742&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12310742&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12310742&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10220", + "id": "10220", + "description": "Retired projects - These projects have no active community and are read-only.", + "name": "Retired" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/10595", + "id": "10595", + "key": "INCUBATOR", + "name": "Incubator", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=10595&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=10595&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=10595&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=10595&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10024", + "id": "10024", + "description": "Incubator related projects", + "name": "Incubator" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/10410", + "id": "10410", + "key": "INFRA", + "name": "Infrastructure", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=10410&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=10410&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=10410&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=10410&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10130", + "id": "10130", + "description": "General ASF-wide projects.", + "name": "Apache Software Foundation" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12319622", + "id": "12319622", + "key": "INFRAP", + "name": "Infrastructure Projects", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12319622&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12319622&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12319622&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12319622&avatarId=10011" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12319528", + "id": "12319528", + "key": "IOTA", + "name": "Iota", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12319528&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12319528&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12319528&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12319528&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10024", + "id": "10024", + "description": "Incubator related projects", + "name": "Incubator" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12311171", + "id": "12311171", + "key": "ISIS", + "name": "Isis", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12311171&avatarId=16437", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12311171&avatarId=16437", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12311171&avatarId=16437", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12311171&avatarId=16437" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/11860", + "id": "11860", + "description": "", + "name": "Isis" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12310580", + "id": "12310580", + "key": "IVY", + "name": "Ivy", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12310580&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12310580&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12310580&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12310580&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10310", + "id": "10310", + "description": "Apache Ant related projects", + "name": "Ant" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12310640", + "id": "12310640", + "key": "IVYDE", + "name": "IvyDE", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12310640&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12310640&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12310640&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12310640&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10310", + "id": "10310", + "description": "Apache Ant related projects", + "name": "Ant" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/10591", + "id": "10591", + "key": "JCR", + "name": "Jackrabbit Content Repository", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=10591&avatarId=10052", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=10591&avatarId=10052", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=10591&avatarId=10052", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=10591&avatarId=10052" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10170", + "id": "10170", + "description": "Jackrabbit related projects", + "name": "Jackrabbit" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12314920", + "id": "12314920", + "key": "JCRVLT", + "name": "Jackrabbit FileVault", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12314920&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12314920&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12314920&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12314920&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10170", + "id": "10170", + "description": "Jackrabbit related projects", + "name": "Jackrabbit" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12310935", + "id": "12310935", + "key": "JCRBENCH", + "name": "Jackrabbit JCR Benchmark", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12310935&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12310935&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12310935&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12310935&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10170", + "id": "10170", + "description": "Jackrabbit related projects", + "name": "Jackrabbit" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12310934", + "id": "12310934", + "key": "JCRCL", + "name": "Jackrabbit JCR Classloader", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12310934&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12310934&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12310934&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12310934&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10170", + "id": "10170", + "description": "Jackrabbit related projects", + "name": "Jackrabbit" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12310933", + "id": "12310933", + "key": "JCRSERVLET", + "name": "Jackrabbit JCR Servlets", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12310933&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12310933&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12310933&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12310933&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10170", + "id": "10170", + "description": "Jackrabbit related projects", + "name": "Jackrabbit" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12310970", + "id": "12310970", + "key": "JCRTCK", + "name": "Jackrabbit JCR Tests", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12310970&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12310970&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12310970&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12310970&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10170", + "id": "10170", + "description": "Jackrabbit related projects", + "name": "Jackrabbit" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12310862", + "id": "12310862", + "key": "JCRRMI", + "name": "Jackrabbit JCR-RMI", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12310862&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12310862&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12310862&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12310862&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10170", + "id": "10170", + "description": "Jackrabbit related projects", + "name": "Jackrabbit" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12313221", + "id": "12313221", + "key": "OAK", + "name": "Jackrabbit Oak", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12313221&avatarId=21936", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12313221&avatarId=21936", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12313221&avatarId=21936", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12313221&avatarId=21936" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10170", + "id": "10170", + "description": "Jackrabbit related projects", + "name": "Jackrabbit" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12310932", + "id": "12310932", + "key": "OCM", + "name": "Jackrabbit OCM", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12310932&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12310932&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12310932&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12310932&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10170", + "id": "10170", + "description": "Jackrabbit related projects", + "name": "Jackrabbit" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12310861", + "id": "12310861", + "key": "JCRSITE", + "name": "Jackrabbit Site", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12310861&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12310861&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12310861&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12310861&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10170", + "id": "10170", + "description": "Jackrabbit related projects", + "name": "Jackrabbit" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12310980", + "id": "12310980", + "key": "HUPA", + "name": "James Hupa", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12310980&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12310980&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12310980&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12310980&avatarId=10011" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12310831", + "id": "12310831", + "key": "IMAP", + "name": "James Imap", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12310831&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12310831&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12310831&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12310831&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10020", + "id": "10020", + "description": "James related projects", + "name": "James" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12310990", + "id": "12310990", + "key": "JDKIM", + "name": "James jDKIM", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12310990&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12310990&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12310990&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12310990&avatarId=10011" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/10412", + "id": "10412", + "key": "JSIEVE", + "name": "James jSieve", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=10412&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=10412&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=10412&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=10412&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10020", + "id": "10020", + "description": "James related projects", + "name": "James" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12310350", + "id": "12310350", + "key": "JSPF", + "name": "James jSPF", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12310350&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12310350&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12310350&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12310350&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10020", + "id": "10020", + "description": "James related projects", + "name": "James" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12311221", + "id": "12311221", + "key": "MAILBOX", + "name": "James Mailbox", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12311221&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12311221&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12311221&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12311221&avatarId=10011" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12310660", + "id": "12310660", + "key": "MAILET", + "name": "James Mailet", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12310660&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12310660&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12310660&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12310660&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10020", + "id": "10020", + "description": "James related projects", + "name": "James" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12310521", + "id": "12310521", + "key": "MIME4J", + "name": "James Mime4j", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12310521&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12310521&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12310521&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12310521&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10020", + "id": "10020", + "description": "James related projects", + "name": "James" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12310847", + "id": "12310847", + "key": "MPT", + "name": "James MPT", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12310847&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12310847&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12310847&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12310847&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10020", + "id": "10020", + "description": "James related projects", + "name": "James" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12310507", + "id": "12310507", + "key": "POSTAGE", + "name": "James Postage", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12310507&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12310507&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12310507&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12310507&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10020", + "id": "10020", + "description": "James related projects", + "name": "James" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12311060", + "id": "12311060", + "key": "PROTOCOLS", + "name": "James Protocols", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12311060&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12311060&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12311060&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12311060&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10020", + "id": "10020", + "description": "James related projects", + "name": "James" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/10411", + "id": "10411", + "key": "JAMES", + "name": "James Server", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=10411&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=10411&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=10411&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=10411&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10020", + "id": "10020", + "description": "James related projects", + "name": "James" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/10463", + "id": "10463", + "key": "JAXME", + "name": "JaxMe", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=10463&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=10463&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=10463&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=10463&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10220", + "id": "10220", + "description": "Retired projects - These projects have no active community and are read-only.", + "name": "Retired" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12314430", + "id": "12314430", + "key": "JCLOUDS", + "name": "jclouds", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12314430&avatarId=19894", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12314430&avatarId=19894", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12314430&avatarId=19894", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12314430&avatarId=19894" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/12160", + "id": "12160", + "description": "Apache jclouds projects", + "name": "jclouds" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/10630", + "id": "10630", + "key": "JDO", + "name": "JDO", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=10630&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=10630&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=10630&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=10630&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10090", + "id": "10090", + "description": "DB related projects", + "name": "DB" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/10493", + "id": "10493", + "key": "JS1", + "name": "Jetspeed", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=10493&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=10493&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=10493&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=10493&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10050", + "id": "10050", + "description": "Apache Portals", + "name": "Portals" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/10492", + "id": "10492", + "key": "JS2", + "name": "Jetspeed 2", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=10492&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=10492&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=10492&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=10492&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10050", + "id": "10050", + "description": "Apache Portals", + "name": "Portals" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12315523", + "id": "12315523", + "key": "JOHNZON", + "name": "Johnzon", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12315523&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12315523&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12315523&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12315523&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10024", + "id": "10024", + "description": "Incubator related projects", + "name": "Incubator" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12319720", + "id": "12319720", + "key": "JOSHUA", + "name": "Joshua", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12319720&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12319720&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12319720&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12319720&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10024", + "id": "10024", + "description": "Incubator related projects", + "name": "Incubator" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12310812", + "id": "12310812", + "key": "JSEC", + "name": "JSecurity", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12310812&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12310812&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12310812&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12310812&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10220", + "id": "10220", + "description": "Retired projects - These projects have no active community and are read-only.", + "name": "Retired" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12310732", + "id": "12310732", + "key": "JSPWIKI", + "name": "JSPWiki", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12310732&avatarId=11633", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12310732&avatarId=11633", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12310732&avatarId=11633", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12310732&avatarId=11633" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/12061", + "id": "12061", + "description": "Apache JSPWiki related projects", + "name": "JSPWiki" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/10401", + "id": "10401", + "key": "JUDDI", + "name": "jUDDI", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=10401&avatarId=21858", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=10401&avatarId=21858", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=10401&avatarId=21858", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=10401&avatarId=21858" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10471", + "id": "10471", + "description": "jUDDI related projects", + "name": "jUDDI" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12311720", + "id": "12311720", + "key": "KAFKA", + "name": "Kafka", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12311720&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12311720&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12311720&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12311720&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10560", + "id": "10560", + "description": "Apache Kafka projects", + "name": "Kafka" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12312324", + "id": "12312324", + "key": "KALUMET", + "name": "Kalumet (Retired)", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12312324&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12312324&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12312324&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12312324&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10220", + "id": "10220", + "description": "Retired projects - These projects have no active community and are read-only.", + "name": "Retired" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12310061", + "id": "12310061", + "key": "KAND", + "name": "Kandula", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12310061&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12310061&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12310061&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12310061&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10401", + "id": "10401", + "description": "Axis and Axis2 related projects", + "name": "Axis" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12311140", + "id": "12311140", + "key": "KARAF", + "name": "Karaf", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12311140&avatarId=10100", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12311140&avatarId=10100", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12311140&avatarId=10100", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12311140&avatarId=10100" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10500", + "id": "10500", + "description": "Apache Karaf related", + "name": "Karaf" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12310848", + "id": "12310848", + "key": "KATO", + "name": "Kato", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12310848&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12310848&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12310848&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12310848&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10220", + "id": "10220", + "description": "Retired projects - These projects have no active community and are read-only.", + "name": "Retired" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12310890", + "id": "12310890", + "key": "KI", + "name": "Ki", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12310890&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12310890&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12310890&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12310890&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10220", + "id": "10220", + "description": "Retired projects - These projects have no active community and are read-only.", + "name": "Retired" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12311202", + "id": "12311202", + "key": "KITTY", + "name": "Kitty", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12311202&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12311202&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12311202&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12311202&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10024", + "id": "10024", + "description": "Incubator related projects", + "name": "Incubator" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12319523", + "id": "12319523", + "key": "KUDU", + "name": "Kudu", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12319523&avatarId=26096", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12319523&avatarId=26096", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12319523&avatarId=26096", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12319523&avatarId=26096" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12316121", + "id": "12316121", + "key": "KYLIN", + "name": "Kylin", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12316121&avatarId=22168", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12316121&avatarId=22168", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12316121&avatarId=22168", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12316121&avatarId=22168" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12310571", + "id": "12310571", + "key": "LABS", + "name": "Labs", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12310571&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12310571&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12310571&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12310571&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10210", + "id": "10210", + "description": "Labs related projects", + "name": "Labs" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12310740", + "id": "12310740", + "key": "HTTPDRAFT", + "name": "Labs WebArch draft-fielding-http", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12310740&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12310740&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12310740&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12310740&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10210", + "id": "10210", + "description": "Labs related projects", + "name": "Labs" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12310811", + "id": "12310811", + "key": "LEGAL", + "name": "Legal Discuss", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12310811&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12310811&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12310811&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12310811&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10130", + "id": "10130", + "description": "General ASF-wide projects.", + "name": "Apache Software Foundation" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12311030", + "id": "12311030", + "key": "LIBCLOUD", + "name": "Libcloud", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12311030&avatarId=10315", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12311030&avatarId=10315", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12311030&avatarId=10315", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12311030&avatarId=10315" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10550", + "id": "10550", + "description": "Libcloud and related projects", + "name": "Libcloud" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/10550", + "id": "10550", + "key": "LOGCXX", + "name": "Log4cxx", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=10550&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=10550&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=10550&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=10550&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10060", + "id": "10060", + "description": "Logging related projects", + "name": "Logging" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12310790", + "id": "12310790", + "key": "LOG4J2", + "name": "Log4j 2", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12310790&avatarId=23813", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12310790&avatarId=23813", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12310790&avatarId=23813", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12310790&avatarId=23813" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10060", + "id": "10060", + "description": "Logging related projects", + "name": "Logging" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/10690", + "id": "10690", + "key": "LOG4NET", + "name": "Log4net", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=10690&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=10690&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=10690&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=10690&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10060", + "id": "10060", + "description": "Logging related projects", + "name": "Logging" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12310690", + "id": "12310690", + "key": "LOG4PHP", + "name": "Log4php", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12310690&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12310690&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12310690&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12310690&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10060", + "id": "10060", + "description": "Logging related projects", + "name": "Logging" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12310560", + "id": "12310560", + "key": "LOKAHI", + "name": "Lokahi", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12310560&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12310560&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12310560&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12310560&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10220", + "id": "10220", + "description": "Retired projects - These projects have no active community and are read-only.", + "name": "Retired" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12310110", + "id": "12310110", + "key": "LUCENE", + "name": "Lucene - Core", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12310110&avatarId=10061", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12310110&avatarId=10061", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12310110&avatarId=10061", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12310110&avatarId=10061" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10150", + "id": "10150", + "description": "Lucene-related projects", + "name": "Lucene" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12310290", + "id": "12310290", + "key": "LUCENENET", + "name": "Lucene.Net", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12310290&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12310290&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12310290&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12310290&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10024", + "id": "10024", + "description": "Incubator related projects", + "name": "Incubator" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/10701", + "id": "10701", + "key": "LCN4C", + "name": "Lucene4c", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=10701&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=10701&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=10701&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=10701&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10220", + "id": "10220", + "description": "Retired projects - These projects have no active community and are read-only.", + "name": "Retired" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12310501", + "id": "12310501", + "key": "LUCY", + "name": "Lucy", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12310501&avatarId=10647", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12310501&avatarId=10647", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12310501&avatarId=10647", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12310501&avatarId=10647" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/14061", + "id": "14061", + "description": "Apache Lucy Related Projects", + "name": "Lucy" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12310751", + "id": "12310751", + "key": "MAHOUT", + "name": "Mahout", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12310751&avatarId=10103", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12310751&avatarId=10103", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12310751&avatarId=10103", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12310751&avatarId=10103" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/13060", + "id": "13060", + "description": "Apache Mahout", + "name": "Mahout" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12311050", + "id": "12311050", + "key": "CONNECTORS", + "name": "ManifoldCF", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12311050&avatarId=10323", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12311050&avatarId=10323", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12311050&avatarId=10323", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12311050&avatarId=10323" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/11260", + "id": "11260", + "description": "ManifoldCF related projects.", + "name": "ManifoldCF" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12314321", + "id": "12314321", + "key": "MARMOTTA", + "name": "Marmotta", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12314321&avatarId=16802", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12314321&avatarId=16802", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12314321&avatarId=16802", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12314321&avatarId=16802" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10024", + "id": "10024", + "description": "Incubator related projects", + "name": "Incubator" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12316922", + "id": "12316922", + "key": "MNG", + "name": "Maven", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12316922&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12316922&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12316922&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12316922&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10510", + "id": "10510", + "description": "Apache Maven related projects", + "name": "Maven" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12317020", + "id": "12317020", + "key": "MACR", + "name": "Maven ACR Plugin", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12317020&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12317020&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12317020&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12317020&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10510", + "id": "10510", + "description": "Apache Maven related projects", + "name": "Maven" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12317021", + "id": "12317021", + "key": "MANT", + "name": "Maven Ant Plugin", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12317021&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12317021&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12317021&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12317021&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10510", + "id": "10510", + "description": "Apache Maven related projects", + "name": "Maven" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12317120", + "id": "12317120", + "key": "MANTTASKS", + "name": "Maven Ant Tasks", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12317120&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12317120&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12317120&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12317120&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10510", + "id": "10510", + "description": "Apache Maven related projects", + "name": "Maven" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12317121", + "id": "12317121", + "key": "MANTRUN", + "name": "Maven Antrun Plugin", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12317121&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12317121&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12317121&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12317121&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10510", + "id": "10510", + "description": "Apache Maven related projects", + "name": "Maven" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12317122", + "id": "12317122", + "key": "ARCHETYPE", + "name": "Maven Archetype", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12317122&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12317122&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12317122&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12317122&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10510", + "id": "10510", + "description": "Apache Maven related projects", + "name": "Maven" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12317123", + "id": "12317123", + "key": "MARCHETYPES", + "name": "Maven Archetype Bundles", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12317123&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12317123&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12317123&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12317123&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10510", + "id": "10510", + "description": "Apache Maven related projects", + "name": "Maven" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12317220", + "id": "12317220", + "key": "MASSEMBLY", + "name": "Maven Assembly Plugin", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12317220&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12317220&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12317220&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12317220&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10510", + "id": "10510", + "description": "Apache Maven related projects", + "name": "Maven" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12317221", + "id": "12317221", + "key": "MCHANGELOG", + "name": "Maven Changelog Plugin", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12317221&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12317221&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12317221&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12317221&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10510", + "id": "10510", + "description": "Apache Maven related projects", + "name": "Maven" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12317222", + "id": "12317222", + "key": "MCHANGES", + "name": "Maven Changes Plugin", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12317222&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12317222&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12317222&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12317222&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10510", + "id": "10510", + "description": "Apache Maven related projects", + "name": "Maven" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12317223", + "id": "12317223", + "key": "MCHECKSTYLE", + "name": "Maven Checkstyle Plugin", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12317223&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12317223&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12317223&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12317223&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10510", + "id": "10510", + "description": "Apache Maven related projects", + "name": "Maven" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12317224", + "id": "12317224", + "key": "MCLEAN", + "name": "Maven Clean Plugin", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12317224&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12317224&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12317224&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12317224&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10510", + "id": "10510", + "description": "Apache Maven related projects", + "name": "Maven" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12317225", + "id": "12317225", + "key": "MCOMPILER", + "name": "Maven Compiler Plugin", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12317225&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12317225&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12317225&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12317225&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10510", + "id": "10510", + "description": "Apache Maven related projects", + "name": "Maven" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12317227", + "id": "12317227", + "key": "MDEP", + "name": "Maven Dependency Plugin", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12317227&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12317227&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12317227&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12317227&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10510", + "id": "10510", + "description": "Apache Maven related projects", + "name": "Maven" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12317228", + "id": "12317228", + "key": "MDEPLOY", + "name": "Maven Deploy Plugin", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12317228&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12317228&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12317228&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12317228&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10510", + "id": "10510", + "description": "Apache Maven related projects", + "name": "Maven" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12317226", + "id": "12317226", + "key": "MDOAP", + "name": "Maven DOAP Plugin", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12317226&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12317226&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12317226&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12317226&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10510", + "id": "10510", + "description": "Apache Maven related projects", + "name": "Maven" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12317229", + "id": "12317229", + "key": "MDOCCK", + "name": "Maven Documentation Checker Plugin", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12317229&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12317229&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12317229&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12317229&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10510", + "id": "10510", + "description": "Apache Maven related projects", + "name": "Maven" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12317230", + "id": "12317230", + "key": "DOXIA", + "name": "Maven Doxia", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12317230&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12317230&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12317230&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12317230&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10510", + "id": "10510", + "description": "Apache Maven related projects", + "name": "Maven" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12317320", + "id": "12317320", + "key": "DOXIASITETOOLS", + "name": "Maven Doxia Sitetools", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12317320&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12317320&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12317320&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12317320&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10510", + "id": "10510", + "description": "Apache Maven related projects", + "name": "Maven" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12317420", + "id": "12317420", + "key": "DOXIATOOLS", + "name": "Maven Doxia Tools", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12317420&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12317420&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12317420&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12317420&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10510", + "id": "10510", + "description": "Apache Maven related projects", + "name": "Maven" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12317422", + "id": "12317422", + "key": "MEAR", + "name": "Maven Ear Plugin", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12317422&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12317422&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12317422&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12317422&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10510", + "id": "10510", + "description": "Apache Maven related projects", + "name": "Maven" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12317423", + "id": "12317423", + "key": "MECLIPSE", + "name": "Maven Eclipse Plugin (RETIRED)", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12317423&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12317423&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12317423&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12317423&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10510", + "id": "10510", + "description": "Apache Maven related projects", + "name": "Maven" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12317421", + "id": "12317421", + "key": "MEJB", + "name": "Maven EJB Plugin", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12317421&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12317421&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12317421&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12317421&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10510", + "id": "10510", + "description": "Apache Maven related projects", + "name": "Maven" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12317520", + "id": "12317520", + "key": "MENFORCER", + "name": "Maven Enforcer Plugin", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12317520&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12317520&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12317520&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12317520&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10510", + "id": "10510", + "description": "Apache Maven related projects", + "name": "Maven" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12317521", + "id": "12317521", + "key": "MGPG", + "name": "Maven GPG Plugin", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12317521&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12317521&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12317521&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12317521&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10510", + "id": "10510", + "description": "Apache Maven related projects", + "name": "Maven" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12317522", + "id": "12317522", + "key": "MPH", + "name": "Maven Help Plugin", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12317522&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12317522&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12317522&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12317522&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10510", + "id": "10510", + "description": "Apache Maven related projects", + "name": "Maven" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12317523", + "id": "12317523", + "key": "MINDEXER", + "name": "Maven Indexer", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12317523&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12317523&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12317523&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12317523&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10510", + "id": "10510", + "description": "Apache Maven related projects", + "name": "Maven" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12317524", + "id": "12317524", + "key": "MINSTALL", + "name": "Maven Install Plugin", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12317524&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12317524&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12317524&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12317524&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10510", + "id": "10510", + "description": "Apache Maven related projects", + "name": "Maven" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12317525", + "id": "12317525", + "key": "MINVOKER", + "name": "Maven Invoker Plugin", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12317525&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12317525&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12317525&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12317525&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10510", + "id": "10510", + "description": "Apache Maven related projects", + "name": "Maven" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12317526", + "id": "12317526", + "key": "MJAR", + "name": "Maven JAR Plugin", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12317526&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12317526&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12317526&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12317526&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10510", + "id": "10510", + "description": "Apache Maven related projects", + "name": "Maven" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12317528", + "id": "12317528", + "key": "MJARSIGNER", + "name": "Maven Jar Signer Plugin", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12317528&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12317528&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12317528&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12317528&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10510", + "id": "10510", + "description": "Apache Maven related projects", + "name": "Maven" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12317529", + "id": "12317529", + "key": "MJAVADOC", + "name": "Maven Javadoc Plugin", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12317529&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12317529&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12317529&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12317529&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10510", + "id": "10510", + "description": "Apache Maven related projects", + "name": "Maven" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12317527", + "id": "12317527", + "key": "JXR", + "name": "Maven JXR", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12317527&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12317527&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12317527&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12317527&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10510", + "id": "10510", + "description": "Apache Maven related projects", + "name": "Maven" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12317530", + "id": "12317530", + "key": "MLINKCHECK", + "name": "Maven Linkcheck Plugin", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12317530&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12317530&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12317530&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12317530&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10510", + "id": "10510", + "description": "Apache Maven related projects", + "name": "Maven" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12317622", + "id": "12317622", + "key": "MPATCH", + "name": "Maven Patch Plugin", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12317622&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12317622&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12317622&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12317622&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10510", + "id": "10510", + "description": "Apache Maven related projects", + "name": "Maven" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12317620", + "id": "12317620", + "key": "MPDF", + "name": "Maven PDF Plugin", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12317620&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12317620&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12317620&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12317620&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10510", + "id": "10510", + "description": "Apache Maven related projects", + "name": "Maven" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12317720", + "id": "12317720", + "key": "MPLUGINTESTING", + "name": "Maven Plugin Testing", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12317720&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12317720&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12317720&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12317720&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10510", + "id": "10510", + "description": "Apache Maven related projects", + "name": "Maven" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12317820", + "id": "12317820", + "key": "MPLUGIN", + "name": "Maven Plugin Tools", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12317820&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12317820&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12317820&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12317820&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10510", + "id": "10510", + "description": "Apache Maven related projects", + "name": "Maven" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12317621", + "id": "12317621", + "key": "MPMD", + "name": "Maven PMD Plugin", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12317621&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12317621&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12317621&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12317621&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10510", + "id": "10510", + "description": "Apache Maven related projects", + "name": "Maven" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12311250", + "id": "12311250", + "key": "MPOM", + "name": "Maven POMs", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12311250&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12311250&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12311250&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12311250&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10510", + "id": "10510", + "description": "Apache Maven related projects", + "name": "Maven" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12317821", + "id": "12317821", + "key": "MPIR", + "name": "Maven Project Info Reports Plugin", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12317821&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12317821&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12317821&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12317821&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10510", + "id": "10510", + "description": "Apache Maven related projects", + "name": "Maven" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12317822", + "id": "12317822", + "key": "MNGSITE", + "name": "Maven Project Web Site", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12317822&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12317822&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12317822&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12317822&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10510", + "id": "10510", + "description": "Apache Maven related projects", + "name": "Maven" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12317823", + "id": "12317823", + "key": "MRAR", + "name": "Maven Rar Plugin", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12317823&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12317823&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12317823&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12317823&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10510", + "id": "10510", + "description": "Apache Maven related projects", + "name": "Maven" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12317824", + "id": "12317824", + "key": "MRELEASE", + "name": "Maven Release Plugin", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12317824&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12317824&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12317824&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12317824&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10510", + "id": "10510", + "description": "Apache Maven related projects", + "name": "Maven" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12317825", + "id": "12317825", + "key": "MRRESOURCES", + "name": "Maven Remote Resources Plugin", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12317825&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12317825&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12317825&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12317825&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10510", + "id": "10510", + "description": "Apache Maven related projects", + "name": "Maven" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12317826", + "id": "12317826", + "key": "MREPOSITORY", + "name": "Maven Repository Plugin", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12317826&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12317826&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12317826&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12317826&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10510", + "id": "10510", + "description": "Apache Maven related projects", + "name": "Maven" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12317827", + "id": "12317827", + "key": "MRESOURCES", + "name": "Maven Resources Plugin", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12317827&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12317827&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12317827&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12317827&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10510", + "id": "10510", + "description": "Apache Maven related projects", + "name": "Maven" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12317828", + "id": "12317828", + "key": "SCM", + "name": "Maven SCM", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12317828&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12317828&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12317828&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12317828&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10510", + "id": "10510", + "description": "Apache Maven related projects", + "name": "Maven" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12317920", + "id": "12317920", + "key": "MSCMPUB", + "name": "Maven SCM Publish Plugin", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12317920&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12317920&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12317920&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12317920&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10510", + "id": "10510", + "description": "Apache Maven related projects", + "name": "Maven" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12317921", + "id": "12317921", + "key": "MSHADE", + "name": "Maven Shade Plugin", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12317921&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12317921&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12317921&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12317921&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10510", + "id": "10510", + "description": "Apache Maven related projects", + "name": "Maven" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12317922", + "id": "12317922", + "key": "MSHARED", + "name": "Maven Shared Components", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12317922&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12317922&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12317922&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12317922&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10510", + "id": "10510", + "description": "Apache Maven related projects", + "name": "Maven" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12317923", + "id": "12317923", + "key": "MSITE", + "name": "Maven Site Plugin", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12317923&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12317923&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12317923&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12317923&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10510", + "id": "10510", + "description": "Apache Maven related projects", + "name": "Maven" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12317926", + "id": "12317926", + "key": "MSKINS", + "name": "Maven Skins", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12317926&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12317926&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12317926&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12317926&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10510", + "id": "10510", + "description": "Apache Maven related projects", + "name": "Maven" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12317924", + "id": "12317924", + "key": "MSOURCES", + "name": "Maven Source Plugin", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12317924&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12317924&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12317924&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12317924&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10510", + "id": "10510", + "description": "Apache Maven related projects", + "name": "Maven" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12317925", + "id": "12317925", + "key": "MSTAGE", + "name": "Maven Stage Plugin", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12317925&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12317925&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12317925&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12317925&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10510", + "id": "10510", + "description": "Apache Maven related projects", + "name": "Maven" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12317927", + "id": "12317927", + "key": "SUREFIRE", + "name": "Maven Surefire", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12317927&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12317927&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12317927&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12317927&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10510", + "id": "10510", + "description": "Apache Maven related projects", + "name": "Maven" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12318020", + "id": "12318020", + "key": "MTOOLCHAINS", + "name": "Maven Toolchains Plugin", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12318020&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12318020&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12318020&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12318020&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10510", + "id": "10510", + "description": "Apache Maven related projects", + "name": "Maven" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12318120", + "id": "12318120", + "key": "MVERIFIER", + "name": "Maven Verifier Plugin", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12318120&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12318120&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12318120&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12318120&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10510", + "id": "10510", + "description": "Apache Maven related projects", + "name": "Maven" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12318122", + "id": "12318122", + "key": "WAGON", + "name": "Maven Wagon", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12318122&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12318122&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12318122&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12318122&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10510", + "id": "10510", + "description": "Apache Maven related projects", + "name": "Maven" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12318121", + "id": "12318121", + "key": "MWAR", + "name": "Maven WAR Plugin", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12318121&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12318121&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12318121&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12318121&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10510", + "id": "10510", + "description": "Apache Maven related projects", + "name": "Maven" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12314620", + "id": "12314620", + "key": "MAVIBOT", + "name": "Mavibot", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12314620&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12314620&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12314620&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12314620&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10041", + "id": "10041", + "description": "Apache Directory Project Category", + "name": "Directory" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12311242", + "id": "12311242", + "key": "MESOS", + "name": "Mesos", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12311242&avatarId=17056", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12311242&avatarId=17056", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12311242&avatarId=17056", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12311242&avatarId=17056" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/12062", + "id": "12062", + "description": "Apache Mesos related", + "name": "Mesos" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12319323", + "id": "12319323", + "key": "METRON", + "name": "Metron", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12319323&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12319323&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12319323&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12319323&avatarId=10011" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12319526", + "id": "12319526", + "key": "MILAGRO", + "name": "Milagro", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12319526&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12319526&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12319526&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12319526&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10024", + "id": "10024", + "description": "Incubator related projects", + "name": "Incubator" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/10670", + "id": "10670", + "key": "DIRMINA", + "name": "MINA", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=10670&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=10670&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=10670&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=10670&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10240", + "id": "10240", + "description": "MINA related projects", + "name": "MINA" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12310849", + "id": "12310849", + "key": "SSHD", + "name": "MINA SSHD", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12310849&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12310849&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12310849&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12310849&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10240", + "id": "10240", + "description": "MINA related projects", + "name": "MINA" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/10671", + "id": "10671", + "key": "MIRAE", + "name": "Mirae", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=10671&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=10671&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=10671&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=10671&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10220", + "id": "10220", + "description": "Retired projects - These projects have no active community and are read-only.", + "name": "Retired" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12319223", + "id": "12319223", + "key": "MJDEPS", + "name": "MJDEPS", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12319223&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12319223&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12319223&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12319223&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10510", + "id": "10510", + "description": "Apache Maven related projects", + "name": "Maven" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12319820", + "id": "12319820", + "key": "MNEMONIC", + "name": "Mnemonic", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12319820&avatarId=26952", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12319820&avatarId=26952", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12319820&avatarId=26952", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12319820&avatarId=26952" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10024", + "id": "10024", + "description": "Incubator related projects", + "name": "Incubator" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/10640", + "id": "10640", + "key": "MODPYTHON", + "name": "mod_python", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=10640&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=10640&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=10640&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=10640&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10080", + "id": "10080", + "description": "httpd and its related projects", + "name": "HTTP Server" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12314428", + "id": "12314428", + "key": "MRQL", + "name": "MRQL", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12314428&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12314428&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12314428&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12314428&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10024", + "id": "10024", + "description": "Incubator related projects", + "name": "Incubator" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12311292", + "id": "12311292", + "key": "MRUNIT", + "name": "MRUnit", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12311292&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12311292&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12311292&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12311292&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/11968", + "id": "11968", + "description": "Apache MRUnit related projects", + "name": "MRUnit" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/10614", + "id": "10614", + "key": "MUSE", + "name": "Muse", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=10614&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=10614&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=10614&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=10614&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10220", + "id": "10220", + "description": "Retired projects - These projects have no active community and are read-only.", + "name": "Retired" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12310300", + "id": "12310300", + "key": "ADFFACES", + "name": "MyFaces ADF-Faces", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12310300&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12310300&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12310300&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12310300&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10100", + "id": "10100", + "description": "Apache MyFaces related projects", + "name": "MyFaces" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12311071", + "id": "12311071", + "key": "EXTCDI", + "name": "MyFaces CODI", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12311071&avatarId=10081", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12311071&avatarId=10081", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12311071&avatarId=10081", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12311071&avatarId=10081" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10100", + "id": "10100", + "description": "Apache MyFaces related projects", + "name": "MyFaces" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12310846", + "id": "12310846", + "key": "MFCOMMONS", + "name": "MyFaces Commons", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12310846&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12310846&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12310846&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12310846&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10100", + "id": "10100", + "description": "Apache MyFaces related projects", + "name": "MyFaces" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/10600", + "id": "10600", + "key": "MYFACES", + "name": "MyFaces Core", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=10600&avatarId=10079", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=10600&avatarId=10079", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=10600&avatarId=10079", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=10600&avatarId=10079" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10100", + "id": "10100", + "description": "Apache MyFaces related projects", + "name": "MyFaces" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12310964", + "id": "12310964", + "key": "EXTSCRIPT", + "name": "MyFaces Extensions Scripting", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12310964&avatarId=10082", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12310964&avatarId=10082", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12310964&avatarId=10082", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12310964&avatarId=10082" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10100", + "id": "10100", + "description": "Apache MyFaces related projects", + "name": "MyFaces" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12310821", + "id": "12310821", + "key": "EXTVAL", + "name": "MyFaces Extensions Validator", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12310821&avatarId=10080", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12310821&avatarId=10080", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12310821&avatarId=10080", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12310821&avatarId=10080" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10100", + "id": "10100", + "description": "Apache MyFaces related projects", + "name": "MyFaces" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12311280", + "id": "12311280", + "key": "MFHTML5", + "name": "MyFaces HTML5 Component Library", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12311280&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12311280&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12311280&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12311280&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10100", + "id": "10100", + "description": "Apache MyFaces related projects", + "name": "MyFaces" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12310691", + "id": "12310691", + "key": "ORCHESTRA", + "name": "MyFaces Orchestra", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12310691&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12310691&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12310691&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12310691&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10100", + "id": "10100", + "description": "Apache MyFaces related projects", + "name": "MyFaces" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12310733", + "id": "12310733", + "key": "PORTLETBRIDGE", + "name": "MyFaces Portlet Bridge", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12310733&avatarId=10134", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12310733&avatarId=10134", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12310733&avatarId=10134", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12310733&avatarId=10134" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10100", + "id": "10100", + "description": "Apache MyFaces related projects", + "name": "MyFaces" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12310951", + "id": "12310951", + "key": "MYFACESTEST", + "name": "MyFaces Test", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12310951&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12310951&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12310951&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12310951&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10100", + "id": "10100", + "description": "Apache MyFaces related projects", + "name": "MyFaces" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12310273", + "id": "12310273", + "key": "TOBAGO", + "name": "MyFaces Tobago", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12310273&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12310273&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12310273&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12310273&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10100", + "id": "10100", + "description": "Apache MyFaces related projects", + "name": "MyFaces" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12310272", + "id": "12310272", + "key": "TOMAHAWK", + "name": "MyFaces Tomahawk", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12310272&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12310272&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12310272&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12310272&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10100", + "id": "10100", + "description": "Apache MyFaces related projects", + "name": "MyFaces" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12310661", + "id": "12310661", + "key": "TRINIDAD", + "name": "MyFaces Trinidad", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12310661&avatarId=10133", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12310661&avatarId=10133", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12310661&avatarId=10133", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12310661&avatarId=10133" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10100", + "id": "10100", + "description": "Apache MyFaces related projects", + "name": "MyFaces" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12319221", + "id": "12319221", + "key": "MYNEWT", + "name": "Mynewt", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12319221&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12319221&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12319221&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12319221&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10024", + "id": "10024", + "description": "Incubator related projects", + "name": "Incubator" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12320020", + "id": "12320020", + "key": "MYNEWTDOC", + "name": "MyNewt Docs", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12320020&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12320020&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12320020&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12320020&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10024", + "id": "10024", + "description": "Incubator related projects", + "name": "Incubator" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12318522", + "id": "12318522", + "key": "MYRIAD", + "name": "Myriad", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12318522&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12318522&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12318522&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12318522&avatarId=10011" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12311260", + "id": "12311260", + "key": "NEETHI", + "name": "Neethi", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12311260&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12311260&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12311260&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12311260&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10028", + "id": "10028", + "description": "Web services projects", + "name": "Web Services" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12311182", + "id": "12311182", + "key": "NPANDAY", + "name": "NPanday", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12311182&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12311182&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12311182&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12311182&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10024", + "id": "10024", + "description": "Incubator related projects", + "name": "Incubator" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/10680", + "id": "10680", + "key": "NUTCH", + "name": "Nutch", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=10680&avatarId=10426", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=10680&avatarId=10426", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=10680&avatarId=10426", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=10680&avatarId=10426" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10430", + "id": "10430", + "description": "Apache Nutch", + "name": "Nutch" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12311151", + "id": "12311151", + "key": "NUVEM", + "name": "Nuvem", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12311151&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12311151&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12311151&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12311151&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10024", + "id": "10024", + "description": "Incubator related projects", + "name": "Incubator" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12310270", + "id": "12310270", + "key": "ODE", + "name": "ODE", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12310270&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12310270&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12310270&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12310270&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10311", + "id": "10311", + "description": "", + "name": "ODE" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12314525", + "id": "12314525", + "key": "JACOB", + "name": "ODE JaCOb", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12314525&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12314525&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12314525&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12314525&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10311", + "id": "10311", + "description": "", + "name": "ODE" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12312220", + "id": "12312220", + "key": "ODFTOOLKIT", + "name": "ODF Toolkit", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12312220&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12312220&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12312220&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12312220&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10024", + "id": "10024", + "description": "Incubator related projects", + "name": "Incubator" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12310500", + "id": "12310500", + "key": "OFBIZ", + "name": "OFBiz", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12310500&avatarId=18505", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12310500&avatarId=18505", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12310500&avatarId=18505", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12310500&avatarId=18505" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10230", + "id": "10230", + "description": "The Open for Business Project", + "name": "OFBiz" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/10700", + "id": "10700", + "key": "OJB", + "name": "OJB", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=10700&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=10700&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=10700&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=10700&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10220", + "id": "10220", + "description": "Retired projects - These projects have no active community and are read-only.", + "name": "Retired" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12314520", + "id": "12314520", + "key": "OLINGO", + "name": "Olingo", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12314520&avatarId=18497", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12314520&avatarId=18497", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12314520&avatarId=18497", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12314520&avatarId=18497" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/12460", + "id": "12460", + "description": "Olingo related projects", + "name": "Olingo" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12310839", + "id": "12310839", + "key": "OLIO", + "name": "Olio", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12310839&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12310839&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12310839&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12310839&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10220", + "id": "10220", + "description": "Retired projects - These projects have no active community and are read-only.", + "name": "Retired" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12311070", + "id": "12311070", + "key": "OODT", + "name": "OODT", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12311070&avatarId=10109", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12311070&avatarId=10109", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12311070&avatarId=10109", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12311070&avatarId=10109" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10483", + "id": "10483", + "description": "Apache OODT related", + "name": "OODT" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12311620", + "id": "12311620", + "key": "OOZIE", + "name": "Oozie", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12311620&avatarId=15903", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12311620&avatarId=15903", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12311620&avatarId=15903", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12311620&avatarId=15903" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/11967", + "id": "11967", + "description": "Apache Oozie related projects", + "name": "Oozie" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12310943", + "id": "12310943", + "key": "ORP", + "name": "Open Relevance Project ", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12310943&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12310943&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12310943&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12310943&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10150", + "id": "10150", + "description": "Lucene-related projects", + "name": "Lucene" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12310530", + "id": "12310530", + "key": "OPENEJB", + "name": "OpenEJB", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12310530&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12310530&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12310530&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12310530&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10251", + "id": "10251", + "description": "", + "name": "OpenEJB" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12310834", + "id": "12310834", + "key": "OEP", + "name": "OpenEJB Eclipse Plugin", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12310834&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12310834&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12310834&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12310834&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10251", + "id": "10251", + "description": "", + "name": "OpenEJB" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12310351", + "id": "12310351", + "key": "OPENJPA", + "name": "OpenJPA", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12310351&avatarId=10043", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12310351&avatarId=10043", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12310351&avatarId=10043", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12310351&avatarId=10043" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10252", + "id": "10252", + "description": "", + "name": "OpenJPA" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12312720", + "id": "12312720", + "key": "OPENMEETINGS", + "name": "Openmeetings", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12312720&avatarId=10008", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12312720&avatarId=10008", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12312720&avatarId=10008", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12312720&avatarId=10008" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/11862", + "id": "11862", + "description": "Apache Openmeetings related", + "name": "Openmeetings" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12311215", + "id": "12311215", + "key": "OPENNLP", + "name": "OpenNLP", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12311215&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12311215&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12311215&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12311215&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/11962", + "id": "11962", + "description": "Apache OpenNLP related projects", + "name": "OpenNLP" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12310844", + "id": "12310844", + "key": "OWB", + "name": "OpenWebBeans", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12310844&avatarId=10390", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12310844&avatarId=10390", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12310844&avatarId=10390", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12310844&avatarId=10390" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10370", + "id": "10370", + "description": "OpenWebBeans Project", + "name": "OpenWebBeans" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12318320", + "id": "12318320", + "key": "ORC", + "name": "Orc", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12318320&avatarId=24648", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12318320&avatarId=24648", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12318320&avatarId=24648", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12318320&avatarId=24648" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/13361", + "id": "13361", + "description": "Apache Orc", + "name": "Orc" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12315521", + "id": "12315521", + "key": "PARQUET", + "name": "Parquet", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12315521&avatarId=20034", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12315521&avatarId=20034", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12315521&avatarId=20034", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12315521&avatarId=20034" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10024", + "id": "10024", + "description": "Incubator related projects", + "name": "Incubator" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12310760", + "id": "12310760", + "key": "PDFBOX", + "name": "PDFBox", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12310760&avatarId=11734", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12310760&avatarId=11734", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12310760&avatarId=11734", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12310760&avatarId=11734" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10360", + "id": "10360", + "description": "Apache PDFBox projects", + "name": "PDFBox" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12315120", + "id": "12315120", + "key": "PHOENIX", + "name": "Phoenix", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12315120&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12315120&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12315120&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12315120&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/12560", + "id": "12560", + "description": "Apache Phoenix", + "name": "Phoenix" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12310832", + "id": "12310832", + "key": "PHOTARK", + "name": "PhotArk", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12310832&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12310832&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12310832&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12310832&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10220", + "id": "10220", + "description": "Retired projects - These projects have no active community and are read-only.", + "name": "Retired" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12310730", + "id": "12310730", + "key": "PIG", + "name": "Pig", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12310730&avatarId=10934", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12310730&avatarId=10934", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12310730&avatarId=10934", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12310730&avatarId=10934" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10292", + "id": "10292", + "description": "Scalable Distributed Computing", + "name": "Hadoop" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12310863", + "id": "12310863", + "key": "PIVOT", + "name": "Pivot", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12310863&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12310863&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12310863&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12310863&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10382", + "id": "10382", + "description": "Pivot related projects", + "name": "Pivot" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/10560", + "id": "10560", + "key": "PLUTO", + "name": "Pluto", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=10560&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=10560&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=10560&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=10560&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10050", + "id": "10050", + "description": "Apache Portals", + "name": "Portals" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12312620", + "id": "12312620", + "key": "PODLINGNAMESEARCH", + "name": "Podling Suitable Names Search", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12312620&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12312620&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12312620&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12312620&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10024", + "id": "10024", + "description": "Incubator related projects", + "name": "Incubator" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/10741", + "id": "10741", + "key": "PORTALS", + "name": "Portals", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=10741&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=10741&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=10741&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=10741&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10050", + "id": "10050", + "description": "Apache Portals", + "name": "Portals" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12310870", + "id": "12310870", + "key": "APA", + "name": "Portals Apps", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12310870&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12310870&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12310870&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12310870&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10050", + "id": "10050", + "description": "Apache Portals", + "name": "Portals" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/10720", + "id": "10720", + "key": "PB", + "name": "Portals Bridges", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=10720&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=10720&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=10720&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=10720&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10050", + "id": "10050", + "description": "Apache Portals", + "name": "Portals" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12314423", + "id": "12314423", + "key": "PROVISIONR", + "name": "Provisionr", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12314423&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12314423&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12314423&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12314423&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10220", + "id": "10220", + "description": "Retired projects - These projects have no active community and are read-only.", + "name": "Retired" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12310837", + "id": "12310837", + "key": "PRC", + "name": "Public Relations", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12310837&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12310837&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12310837&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12310837&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10130", + "id": "10130", + "description": "General ASF-wide projects.", + "name": "Apache Software Foundation" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/10613", + "id": "10613", + "key": "HERMES", + "name": "Pubscribe", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=10613&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=10613&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=10613&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=10613&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10220", + "id": "10220", + "description": "Retired projects - These projects have no active community and are read-only.", + "name": "Retired" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12310871", + "id": "12310871", + "key": "PYLUCENE", + "name": "PyLucene", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12310871&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12310871&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12310871&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12310871&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10150", + "id": "10150", + "description": "Lucene-related projects", + "name": "Lucene" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12310520", + "id": "12310520", + "key": "QPID", + "name": "Qpid", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12310520&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12310520&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12310520&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12310520&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10450", + "id": "10450", + "description": "Apache Qpid and related projects", + "name": "Qpid" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12315321", + "id": "12315321", + "key": "DISPATCH", + "name": "Qpid Dispatch", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12315321&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12315321&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12315321&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12315321&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10450", + "id": "10450", + "description": "Apache Qpid and related projects", + "name": "Qpid" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12314524", + "id": "12314524", + "key": "QPIDJMS", + "name": "Qpid JMS", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12314524&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12314524&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12314524&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12314524&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10450", + "id": "10450", + "description": "Apache Qpid and related projects", + "name": "Qpid" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12313720", + "id": "12313720", + "key": "PROTON", + "name": "Qpid Proton", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12313720&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12313720&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12313720&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12313720&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10450", + "id": "10450", + "description": "Apache Qpid and related projects", + "name": "Qpid" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12319623", + "id": "12319623", + "key": "QUARKS", + "name": "Quarks", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12319623&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12319623&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12319623&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12319623&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10024", + "id": "10024", + "description": "Incubator related projects", + "name": "Incubator" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12310610", + "id": "12310610", + "key": "RAMPART", + "name": "Rampart", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12310610&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12310610&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12310610&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12310610&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10401", + "id": "10401", + "description": "Axis and Axis2 related projects", + "name": "Axis" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12310630", + "id": "12310630", + "key": "RAMPARTC", + "name": "Rampart/C", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12310630&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12310630&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12310630&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12310630&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10401", + "id": "10401", + "description": "Axis and Axis2 related projects", + "name": "Axis" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12315621", + "id": "12315621", + "key": "RANGER", + "name": "Ranger", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12315621&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12315621&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12315621&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12315621&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10024", + "id": "10024", + "description": "Incubator related projects", + "name": "Incubator" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12311290", + "id": "12311290", + "key": "RAVE", + "name": "Rave", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12311290&avatarId=10353", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12311290&avatarId=10353", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12311290&avatarId=10353", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12311290&avatarId=10353" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12315820", + "id": "12315820", + "key": "REEF", + "name": "REEF", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12315820&avatarId=24672", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12315820&avatarId=24672", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12315820&avatarId=24672", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12315820&avatarId=24672" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/13862", + "id": "13862", + "description": "Apache REEF project", + "name": "REEF" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12310600", + "id": "12310600", + "key": "RIVER", + "name": "River", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12310600&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12310600&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12310600&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12310600&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10530", + "id": "10530", + "description": "Apache River", + "name": "River" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12319020", + "id": "12319020", + "key": "RYA", + "name": "Rya", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12319020&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12319020&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12319020&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12319020&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10024", + "id": "10024", + "description": "Incubator related projects", + "name": "Incubator" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12319320", + "id": "12319320", + "key": "S2GRAPH", + "name": "S2Graph", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12319320&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12319320&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12319320&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12319320&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10024", + "id": "10024", + "description": "Incubator related projects", + "name": "Incubator" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12316220", + "id": "12316220", + "key": "SAMOA", + "name": "SAMOA", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12316220&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12316220&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12316220&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12316220&avatarId=10011" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12314526", + "id": "12314526", + "key": "SAMZA", + "name": "Samza", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12314526&avatarId=17163", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12314526&avatarId=17163", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12314526&avatarId=17163", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12314526&avatarId=17163" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/12960", + "id": "12960", + "description": "Apache Samza", + "name": "Samza" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12310062", + "id": "12310062", + "key": "SAND", + "name": "Sandesha", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12310062&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12310062&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12310062&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12310062&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10401", + "id": "10401", + "description": "Axis and Axis2 related projects", + "name": "Axis" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12310190", + "id": "12310190", + "key": "SANDESHA2", + "name": "Sandesha2", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12310190&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12310190&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12310190&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12310190&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10401", + "id": "10401", + "description": "Axis and Axis2 related projects", + "name": "Axis" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12310540", + "id": "12310540", + "key": "SANDESHA2C", + "name": "Sandesha2/C", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12310540&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12310540&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12310540&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12310540&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10220", + "id": "10220", + "description": "Retired projects - These projects have no active community and are read-only.", + "name": "Retired" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12311231", + "id": "12311231", + "key": "SANTUARIO", + "name": "Santuario", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12311231&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12311231&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12311231&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12311231&avatarId=10011" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12310622", + "id": "12310622", + "key": "SAVAN", + "name": "Savan", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12310622&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12310622&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12310622&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12310622&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10220", + "id": "10220", + "description": "Retired projects - These projects have no active community and are read-only.", + "name": "Retired" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/10610", + "id": "10610", + "key": "SCOUT", + "name": "Scout", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=10610&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=10610&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=10610&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=10610&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10471", + "id": "10471", + "description": "jUDDI related projects", + "name": "jUDDI" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12314720", + "id": "12314720", + "key": "SENTRY", + "name": "Sentry", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12314720&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12314720&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12314720&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12314720&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/14060", + "id": "14060", + "description": "Apache Sentry", + "name": "Sentry" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12318820", + "id": "12318820", + "key": "SERF", + "name": "serf", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12318820&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12318820&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12318820&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12318820&avatarId=10011" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12311206", + "id": "12311206", + "key": "SM", + "name": "ServiceMix", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12311206&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12311206&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12311206&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12311206&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10480", + "id": "10480", + "description": "ServiceMix Enterprise Service Bus", + "name": "ServiceMix" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12311208", + "id": "12311208", + "key": "SMX4", + "name": "ServiceMix 4", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12311208&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12311208&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12311208&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12311208&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10480", + "id": "10480", + "description": "ServiceMix Enterprise Service Bus", + "name": "ServiceMix" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12311212", + "id": "12311212", + "key": "SMXCOMP", + "name": "ServiceMix Components", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12311212&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12311212&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12311212&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12311212&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10480", + "id": "10480", + "description": "ServiceMix Enterprise Service Bus", + "name": "ServiceMix" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12311205", + "id": "12311205", + "key": "SMX4KNL", + "name": "ServiceMix Kernel", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12311205&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12311205&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12311205&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12311205&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10220", + "id": "10220", + "description": "Retired projects - These projects have no active community and are read-only.", + "name": "Retired" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12311209", + "id": "12311209", + "key": "SMX4NMR", + "name": "ServiceMix NMR", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12311209&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12311209&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12311209&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12311209&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10480", + "id": "10480", + "description": "ServiceMix Enterprise Service Bus", + "name": "ServiceMix" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12311040", + "id": "12311040", + "key": "SHALE", + "name": "Shale", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12311040&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12311040&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12311040&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12311040&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10220", + "id": "10220", + "description": "Retired projects - These projects have no active community and are read-only.", + "name": "Retired" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12310741", + "id": "12310741", + "key": "SHINDIG", + "name": "Shindig", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12310741&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12310741&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12310741&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12310741&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10400", + "id": "10400", + "description": "Shindig related projects", + "name": "Shindig" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12310950", + "id": "12310950", + "key": "SHIRO", + "name": "Shiro", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12310950&avatarId=10099", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12310950&avatarId=10099", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12310950&avatarId=10099", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12310950&avatarId=10099" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10460", + "id": "10460", + "description": "Apache Shiro related projects", + "name": "Shiro" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12316720", + "id": "12316720", + "key": "SINGA", + "name": "Singa", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12316720&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12316720&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12316720&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12316720&avatarId=10011" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12314925", + "id": "12314925", + "key": "SIRONA", + "name": "Sirona", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12314925&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12314925&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12314925&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12314925&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10024", + "id": "10024", + "description": "Incubator related projects", + "name": "Incubator" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12315422", + "id": "12315422", + "key": "SLIDER", + "name": "Slider", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12315422&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12315422&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12315422&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12315422&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10024", + "id": "10024", + "description": "Incubator related projects", + "name": "Incubator" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12310710", + "id": "12310710", + "key": "SLING", + "name": "Sling", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12310710&avatarId=10034", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12310710&avatarId=10034", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12310710&avatarId=10034", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12310710&avatarId=10034" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10340", + "id": "10340", + "description": "Apache Sling related projects", + "name": "Sling" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/10459", + "id": "10459", + "key": "SOAP", + "name": "SOAP", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=10459&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=10459&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=10459&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=10459&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10220", + "id": "10220", + "description": "Retired projects - These projects have no active community and are read-only.", + "name": "Retired" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12310230", + "id": "12310230", + "key": "SOLR", + "name": "Solr", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12310230&avatarId=22151", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12310230&avatarId=22151", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12310230&avatarId=22151", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12310230&avatarId=22151" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10150", + "id": "10150", + "description": "Lucene-related projects", + "name": "Lucene" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12315420", + "id": "12315420", + "key": "SPARK", + "name": "Spark", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12315420&avatarId=19440", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12315420&avatarId=19440", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12315420&avatarId=19440", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12315420&avatarId=19440" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12311072", + "id": "12311072", + "key": "SIS", + "name": "Spatial Information Systems", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12311072&avatarId=17542", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12311072&avatarId=17542", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12311072&avatarId=17542", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12311072&avatarId=17542" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10024", + "id": "10024", + "description": "Incubator related projects", + "name": "Incubator" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12311320", + "id": "12311320", + "key": "SQOOP", + "name": "Sqoop", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12311320&avatarId=12143", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12311320&avatarId=12143", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12311320&avatarId=12143", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12311320&avatarId=12143" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10960", + "id": "10960", + "description": "Sqoop related projects", + "name": "Sqoop" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12311214", + "id": "12311214", + "key": "STANBOL", + "name": "Stanbol", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12311214&avatarId=16330", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12311214&avatarId=16330", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12311214&avatarId=16330", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12311214&avatarId=16330" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10024", + "id": "10024", + "description": "Incubator related projects", + "name": "Incubator" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12315220", + "id": "12315220", + "key": "STEVE", + "name": "Steve", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12315220&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12315220&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12315220&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12315220&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/12260", + "id": "12260", + "description": "Apache STeVe", + "name": "Steve" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12311203", + "id": "12311203", + "key": "STOMP", + "name": "Stomp Specification", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12311203&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12311203&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12311203&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12311203&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/11160", + "id": "11160", + "description": "ActiveMQ", + "name": "ActiveMQ" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12310845", + "id": "12310845", + "key": "STONEHENGE", + "name": "Stonehenge", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12310845&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12310845&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12310845&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12310845&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10220", + "id": "10220", + "description": "Retired projects - These projects have no active community and are read-only.", + "name": "Retired" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12314521", + "id": "12314521", + "key": "STRATOS", + "name": "Stratos", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12314521&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12314521&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12314521&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12314521&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/12760", + "id": "12760", + "description": "Apache Stratos related", + "name": "Stratos" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12314320", + "id": "12314320", + "key": "STREAMS", + "name": "Streams", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12314320&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12314320&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12314320&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12314320&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10024", + "id": "10024", + "description": "Incubator related projects", + "name": "Incubator" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12311043", + "id": "12311043", + "key": "STR", + "name": "Struts 1", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12311043&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12311043&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12311043&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12311043&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10380", + "id": "10380", + "description": "struts.apache.org", + "name": "Struts Framework" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12311041", + "id": "12311041", + "key": "WW", + "name": "Struts 2", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12311041&avatarId=22177", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12311041&avatarId=22177", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12311041&avatarId=22177", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12311041&avatarId=22177" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10380", + "id": "10380", + "description": "struts.apache.org", + "name": "Struts Framework" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12311044", + "id": "12311044", + "key": "SB", + "name": "Struts Sandbox", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12311044&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12311044&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12311044&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12311044&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10380", + "id": "10380", + "description": "struts.apache.org", + "name": "Struts Framework" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12311045", + "id": "12311045", + "key": "SITE", + "name": "Struts Shared Resources", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12311045&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12311045&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12311045&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12311045&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10380", + "id": "10380", + "description": "struts.apache.org", + "name": "Struts Framework" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12318828", + "id": "12318828", + "key": "SVN", + "name": "Subversion", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12318828&avatarId=24978", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12318828&avatarId=24978", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12318828&avatarId=24978", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12318828&avatarId=24978" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12310201", + "id": "12310201", + "key": "SYNAPSE", + "name": "Synapse", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12310201&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12310201&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12310201&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12310201&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10291", + "id": "10291", + "description": "Apache Synapse ESB related projects", + "name": "Synapse" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12313120", + "id": "12313120", + "key": "SYNCOPE", + "name": "Syncope", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12313120&avatarId=13444", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12313120&avatarId=13444", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12313120&avatarId=13444", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12313120&avatarId=13444" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/11760", + "id": "11760", + "description": "Syncope related projects", + "name": "Syncope" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12319522", + "id": "12319522", + "key": "SYSTEMML", + "name": "SystemML", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12319522&avatarId=25877", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12319522&avatarId=25877", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12319522&avatarId=25877", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12319522&avatarId=25877" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10024", + "id": "10024", + "description": "Incubator related projects", + "name": "Incubator" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12314424", + "id": "12314424", + "key": "TAJO", + "name": "Tajo", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12314424&avatarId=17015", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12314424&avatarId=17015", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12314424&avatarId=17015", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12314424&avatarId=17015" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12315925", + "id": "12315925", + "key": "TAMAYA", + "name": "Tamaya", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12315925&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12315925&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12315925&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12315925&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10024", + "id": "10024", + "description": "Incubator related projects", + "name": "Incubator" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/10573", + "id": "10573", + "key": "TAPESTRY", + "name": "Tapestry", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=10573&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=10573&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=10573&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=10573&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10190", + "id": "10190", + "description": "Apache Tapestry related projects", + "name": "Tapestry" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12310833", + "id": "12310833", + "key": "TAP5", + "name": "Tapestry 5", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12310833&avatarId=10038", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12310833&avatarId=10038", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12310833&avatarId=10038", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12310833&avatarId=10038" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10190", + "id": "10190", + "description": "Apache Tapestry related projects", + "name": "Tapestry" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12310841", + "id": "12310841", + "key": "TASHI", + "name": "Tashi", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12310841&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12310841&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12310841&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12310841&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10024", + "id": "10024", + "description": "Incubator related projects", + "name": "Incubator" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12320123", + "id": "12320123", + "key": "TEPHRA", + "name": "Tephra", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12320123&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12320123&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12320123&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12320123&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10024", + "id": "10024", + "description": "Incubator related projects", + "name": "Incubator" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/10650", + "id": "10650", + "key": "TST", + "name": "Test Project", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=10650&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=10650&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=10650&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=10650&avatarId=10011" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12316125", + "id": "12316125", + "key": "TESTY", + "name": "testy", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12316125&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12316125&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12316125&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12316125&avatarId=10011" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12310651", + "id": "12310651", + "key": "TEXEN", + "name": "Texen", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12310651&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12310651&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12310651&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12310651&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10200", + "id": "10200", + "description": "Apache Velocity related projects", + "name": "Velocity" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12310800", + "id": "12310800", + "key": "THRIFT", + "name": "Thrift", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12310800&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12310800&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12310800&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12310800&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10470", + "id": "10470", + "description": "Thrift related projects", + "name": "Thrift" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12310631", + "id": "12310631", + "key": "TIKA", + "name": "Tika", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12310631&avatarId=10111", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12310631&avatarId=10111", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12310631&avatarId=10111", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12310631&avatarId=10111" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10431", + "id": "10431", + "description": "Apache Tika", + "name": "Tika" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12311046", + "id": "12311046", + "key": "TILES", + "name": "Tiles", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12311046&avatarId=12539", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12311046&avatarId=12539", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12311046&avatarId=12539", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12311046&avatarId=12539" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10381", + "id": "10381", + "description": "tiles.apache.org", + "name": "Tiles Framework" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12311422", + "id": "12311422", + "key": "AUTOTAG", + "name": "Tiles Autotag", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12311422&avatarId=12540", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12311422&avatarId=12540", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12311422&avatarId=12540", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12311422&avatarId=12540" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10381", + "id": "10381", + "description": "tiles.apache.org", + "name": "Tiles Framework" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12311423", + "id": "12311423", + "key": "TEVAL", + "name": "Tiles Eval", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12311423&avatarId=12542", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12311423&avatarId=12542", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12311423&avatarId=12542", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12311423&avatarId=12542" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10381", + "id": "10381", + "description": "tiles.apache.org", + "name": "Tiles Framework" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12311421", + "id": "12311421", + "key": "TREQ", + "name": "Tiles Request", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12311421&avatarId=12541", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12311421&avatarId=12541", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12311421&avatarId=12541", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12311421&avatarId=12541" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10381", + "id": "10381", + "description": "tiles.apache.org", + "name": "Tiles Framework" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12311049", + "id": "12311049", + "key": "TILESSB", + "name": "Tiles Sandbox", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12311049&avatarId=12543", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12311049&avatarId=12543", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12311049&avatarId=12543", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12311049&avatarId=12543" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10381", + "id": "10381", + "description": "tiles.apache.org", + "name": "Tiles Framework" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12311048", + "id": "12311048", + "key": "TILESSHARED", + "name": "Tiles Shared Resources", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12311048&avatarId=13430", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12311048&avatarId=13430", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12311048&avatarId=13430", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12311048&avatarId=13430" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10381", + "id": "10381", + "description": "tiles.apache.org", + "name": "Tiles Framework" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12311047", + "id": "12311047", + "key": "TILESSHOW", + "name": "Tiles Showcase", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12311047&avatarId=13431", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12311047&avatarId=13431", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12311047&avatarId=13431", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12311047&avatarId=13431" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10381", + "id": "10381", + "description": "tiles.apache.org", + "name": "Tiles Framework" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12316520", + "id": "12316520", + "key": "TINKERPOP", + "name": "TinkerPop", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12316520&avatarId=23137", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12316520&avatarId=23137", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12316520&avatarId=23137", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12316520&avatarId=23137" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12312320", + "id": "12312320", + "key": "TOMEE", + "name": "TomEE", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12312320&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12312320&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12312320&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12312320&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10251", + "id": "10251", + "description": "", + "name": "OpenEJB" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12314322", + "id": "12314322", + "key": "TATPI", + "name": "TomEE Arquillian Test Porting Initiative", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12314322&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12314322&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12314322&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12314322&avatarId=10011" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12319524", + "id": "12319524", + "key": "TOREE", + "name": "TOREE", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12319524&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12319524&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12319524&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12319524&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10024", + "id": "10024", + "description": "Incubator related projects", + "name": "Incubator" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12310280", + "id": "12310280", + "key": "TORQUE", + "name": "Torque", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12310280&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12310280&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12310280&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12310280&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10090", + "id": "10090", + "description": "DB related projects", + "name": "DB" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12310542", + "id": "12310542", + "key": "TORQUEOLD", + "name": "Torque issues (old)", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12310542&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12310542&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12310542&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12310542&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10090", + "id": "10090", + "description": "DB related projects", + "name": "DB" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12310963", + "id": "12310963", + "key": "TS", + "name": "Traffic Server", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12310963&avatarId=16231", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12310963&avatarId=16231", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12310963&avatarId=16231", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12310963&avatarId=16231" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/11360", + "id": "11360", + "description": "Traffic Server related", + "name": "Traffic Server" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12310592", + "id": "12310592", + "key": "DIRTSEC", + "name": "Triplesec", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12310592&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12310592&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12310592&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12310592&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10041", + "id": "10041", + "description": "Apache Directory Project Category", + "name": "Directory" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12310620", + "id": "12310620", + "key": "TRIPLES", + "name": "TripleSoup", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12310620&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12310620&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12310620&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12310620&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10220", + "id": "10220", + "description": "Retired projects - These projects have no active community and are read-only.", + "name": "Retired" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/10742", + "id": "10742", + "key": "TSIK", + "name": "TSIK", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=10742&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=10742&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=10742&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=10742&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10220", + "id": "10220", + "description": "Retired projects - These projects have no active community and are read-only.", + "name": "Retired" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12310090", + "id": "12310090", + "key": "TRB", + "name": "Turbine", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12310090&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12310090&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12310090&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12310090&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10250", + "id": "10250", + "description": "", + "name": "Turbine" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12310210", + "id": "12310210", + "key": "TUSCANY", + "name": "Tuscany", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12310210&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12310210&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12310210&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12310210&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10472", + "id": "10472", + "description": "", + "name": "Tuscany" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12310570", + "id": "12310570", + "key": "UIMA", + "name": "UIMA", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12310570&avatarId=17532", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12310570&avatarId=17532", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12310570&avatarId=17532", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12310570&avatarId=17532" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10410", + "id": "10410", + "description": "Apache UIMA", + "name": "UIMA" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12314923", + "id": "12314923", + "key": "USERGRID", + "name": "Usergrid", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12314923&avatarId=25971", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12314923&avatarId=25971", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12314923&avatarId=25971", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12314923&avatarId=25971" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/13561", + "id": "13561", + "description": "Apache Usergrid", + "name": "Usergrid" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12310840", + "id": "12310840", + "key": "VCL", + "name": "VCL", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12310840&avatarId=15052", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12310840&avatarId=15052", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12310840&avatarId=15052", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12310840&avatarId=15052" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10024", + "id": "10024", + "description": "Incubator related projects", + "name": "Incubator" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12310104", + "id": "12310104", + "key": "VELOCITY", + "name": "Velocity", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12310104&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12310104&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12310104&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12310104&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10200", + "id": "10200", + "description": "Apache Velocity related projects", + "name": "Velocity" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12311130", + "id": "12311130", + "key": "VELOCITYSB", + "name": "Velocity Sandbox", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12311130&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12311130&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12311130&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12311130&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10200", + "id": "10200", + "description": "Apache Velocity related projects", + "name": "Velocity" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12310130", + "id": "12310130", + "key": "VELTOOLS", + "name": "Velocity Tools", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12310130&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12310130&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12310130&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12310130&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10200", + "id": "10200", + "description": "Apache Velocity related projects", + "name": "Velocity" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12310960", + "id": "12310960", + "key": "VXQUERY", + "name": "VXQuery", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12310960&avatarId=22416", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12310960&avatarId=22416", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12310960&avatarId=22416", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12310960&avatarId=22416" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12310930", + "id": "12310930", + "key": "VYSPER", + "name": "VYSPER", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12310930&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12310930&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12310930&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12310930&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10240", + "id": "10240", + "description": "MINA related projects", + "name": "MINA" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12310220", + "id": "12310220", + "key": "WADI", + "name": "WADI", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12310220&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12310220&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12310220&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12310220&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10220", + "id": "10220", + "description": "Retired projects - These projects have no active community and are read-only.", + "name": "Retired" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12311240", + "id": "12311240", + "key": "WAVE", + "name": "Wave", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12311240&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12311240&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12311240&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12311240&avatarId=10011" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12318723", + "id": "12318723", + "key": "WHIMSY", + "name": "Whimsy", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12318723&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12318723&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12318723&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12318723&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/13560", + "id": "13560", + "description": "Apache Whimsy Project", + "name": "Whimsy" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12310561", + "id": "12310561", + "key": "WICKET", + "name": "Wicket", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12310561&avatarId=17538", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12310561&avatarId=17538", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12310561&avatarId=17538", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12310561&avatarId=17538" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10270", + "id": "10270", + "description": "Apache Wicket related projects", + "name": "Wicket" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12310940", + "id": "12310940", + "key": "WINK", + "name": "Wink", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12310940&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12310940&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12310940&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12310940&avatarId=10011" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/10710", + "id": "10710", + "key": "WODEN", + "name": "Woden", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=10710&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=10710&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=10710&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=10710&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10028", + "id": "10028", + "description": "Web services projects", + "name": "Web Services" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12310961", + "id": "12310961", + "key": "WOOKIE", + "name": "Wookie", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12310961&avatarId=13438", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12310961&avatarId=13438", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12310961&avatarId=13438", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12310961&avatarId=13438" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10024", + "id": "10024", + "description": "Incubator related projects", + "name": "Incubator" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12310250", + "id": "12310250", + "key": "WSCOMMONS", + "name": "WS-Commons", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12310250&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12310250&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12310250&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12310250&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10028", + "id": "10028", + "description": "Web services projects", + "name": "Web Services" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/10612", + "id": "10612", + "key": "APOLLO", + "name": "WSRF", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=10612&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=10612&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=10612&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=10612&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10220", + "id": "10220", + "description": "Retired projects - These projects have no active community and are read-only.", + "name": "Retired" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/10464", + "id": "10464", + "key": "WSRP4J", + "name": "WSRP4J", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=10464&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=10464&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=10464&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=10464&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10220", + "id": "10220", + "description": "Retired projects - These projects have no active community and are read-only.", + "name": "Retired" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12310063", + "id": "12310063", + "key": "WSS", + "name": "WSS4J", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12310063&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12310063&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12310063&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12310063&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10028", + "id": "10028", + "description": "Web services projects", + "name": "Web Services" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/10582", + "id": "10582", + "key": "XALANC", + "name": "XalanC", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=10582&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=10582&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=10582&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=10582&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/11460", + "id": "11460", + "description": "Xalan Related Projects", + "name": "Xalan" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/10584", + "id": "10584", + "key": "XALANJ", + "name": "XalanJ2", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=10584&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=10584&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=10584&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=10584&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/11460", + "id": "11460", + "description": "Xalan Related Projects", + "name": "Xalan" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12310502", + "id": "12310502", + "key": "XAP", + "name": "XAP", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12310502&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12310502&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12310502&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12310502&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10220", + "id": "10220", + "description": "Retired projects - These projects have no active community and are read-only.", + "name": "Retired" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12310312", + "id": "12310312", + "key": "XBEAN", + "name": "XBean", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12310312&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12310312&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12310312&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12310312&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10061", + "id": "10061", + "description": "Apache J2EE project", + "name": "Geronimo" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/10510", + "id": "10510", + "key": "XERCESC", + "name": "Xerces-C++", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=10510&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=10510&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=10510&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=10510&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10040", + "id": "10040", + "description": "XML related projects", + "name": "XML" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12310241", + "id": "12310241", + "key": "XERCESP", + "name": "Xerces-P", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12310241&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12310241&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12310241&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12310241&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10040", + "id": "10040", + "description": "XML related projects", + "name": "XML" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/10520", + "id": "10520", + "key": "XERCESJ", + "name": "Xerces2-J", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=10520&avatarId=10036", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=10520&avatarId=10036", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=10520&avatarId=10036", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=10520&avatarId=10036" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10040", + "id": "10040", + "description": "XML related projects", + "name": "XML" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12311230", + "id": "12311230", + "key": "XMLCOMMONS", + "name": "XML Commons", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12311230&avatarId=10037", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12311230&avatarId=10037", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12311230&avatarId=10037", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12311230&avatarId=10037" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10040", + "id": "10040", + "description": "XML related projects", + "name": "XML" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/10465", + "id": "10465", + "key": "XMLRPC", + "name": "XML-RPC", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=10465&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=10465&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=10465&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=10465&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10220", + "id": "10220", + "description": "Retired projects - These projects have no active community and are read-only.", + "name": "Retired" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/10436", + "id": "10436", + "key": "XMLBEANS", + "name": "XMLBeans", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=10436&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=10436&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=10436&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=10436&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10110", + "id": "10110", + "description": "XMLBeans related projects", + "name": "XMLBeans" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12314221", + "id": "12314221", + "key": "XGC", + "name": "XMLGraphicsCommons", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12314221&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12314221&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12314221&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12314221&avatarId=10011" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12311191", + "id": "12311191", + "key": "XMLSCHEMA", + "name": "XmlSchema", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12311191&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12311191&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12311191&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12311191&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10028", + "id": "10028", + "description": "Web services projects", + "name": "Web Services" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12313523", + "id": "12313523", + "key": "XW", + "name": "XWork", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12313523&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12313523&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12313523&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12313523&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10380", + "id": "10380", + "description": "struts.apache.org", + "name": "Struts Framework" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12318920", + "id": "12318920", + "key": "YETUS", + "name": "Yetus", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12318920&avatarId=25263", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12318920&avatarId=25263", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12318920&avatarId=25263", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12318920&avatarId=25263" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/13660", + "id": "13660", + "description": "Apache Yetus project", + "name": "Yetus" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12310271", + "id": "12310271", + "key": "YOKO", + "name": "Yoko - CORBA Server", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12310271&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12310271&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12310271&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12310271&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10061", + "id": "10061", + "description": "Apache J2EE project", + "name": "Geronimo" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12316221", + "id": "12316221", + "key": "ZEPPELIN", + "name": "Zeppelin", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12316221&avatarId=27110", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12316221&avatarId=27110", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12316221&avatarId=27110", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12316221&avatarId=27110" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10024", + "id": "10024", + "description": "Incubator related projects", + "name": "Incubator" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12316820", + "id": "12316820", + "key": "ZEST", + "name": "Zest", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12316820&avatarId=24602", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12316820&avatarId=24602", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12316820&avatarId=24602", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12316820&avatarId=24602" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12311131", + "id": "12311131", + "key": "ZETACOMP", + "name": "Zeta Components", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12311131&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12311131&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12311131&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12311131&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10024", + "id": "10024", + "description": "Incubator related projects", + "name": "Incubator" + } + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/project/12310801", + "id": "12310801", + "key": "ZOOKEEPER", + "name": "ZooKeeper", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12310801&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12310801&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12310801&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12310801&avatarId=10011" + }, + "projectCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/projectCategory/10484", + "id": "10484", + "description": "Apache ZooKeeper related", + "name": "ZooKeeper" + } + } +] \ No newline at end of file diff --git a/vendor/src/github.com/andygrunwald/go-jira/mocks/issues_in_sprint.json b/vendor/src/github.com/andygrunwald/go-jira/mocks/issues_in_sprint.json new file mode 100644 index 0000000..adc42bc --- /dev/null +++ b/vendor/src/github.com/andygrunwald/go-jira/mocks/issues_in_sprint.json @@ -0,0 +1,115 @@ +{ + "expand": "schema,names", + "startAt": 0, + "maxResults": 50, + "total": 10, + "issues": [ + { + "expand": "operations,versionedRepresentations,editmeta,changelog,renderedFields", + "id": "12338", + "self": "https://example.atlassian.net/rest/agile/1.0/issue/12338", + "key": "AR-86", + "fields": { + "issuetype": { + "self": "https://example.atlassian.net/rest/api/2/issuetype/3", + "id": "3", + "description": "A task that needs to be done.", + "iconUrl": "https://example.atlassian.net/secure/viewavatar?size=xsmall&avatarId=10418&avatarType=issuetype", + "name": "Task", + "subtask": false, + "avatarId": 10418 + }, + "timespent": null, + "project": { + "self": "https://example.atlassian.net/rest/api/2/project/10302", + "id": "10302", + "key": "AR", + "name": "Team Argon", + "avatarUrls": { + "48x48": "https://example.atlassian.net/secure/projectavatar?pid=10302&avatarId=10610", + "24x24": "https://example.atlassian.net/secure/projectavatar?size=small&pid=10302&avatarId=10610", + "16x16": "https://example.atlassian.net/secure/projectavatar?size=xsmall&pid=10302&avatarId=10610", + "32x32": "https://example.atlassian.net/secure/projectavatar?size=medium&pid=10302&avatarId=10610" + } + }, + "fixVersions": [], + "customfield_11200": "0|0zzzzd:vi", + "aggregatetimespent": null, + "resolution": { + "self": "https://example.atlassian.net/rest/api/2/resolution/6", + "id": "6", + "description": "", + "name": "Done" + }, + "customfield_11401": null, + "customfield_11400": null, + "customfield_10105": 13.0, + "customfield_10700": "AR-37", + "resolutiondate": "2015-12-07T14:19:13.000-0800", + "workratio": -1, + "lastViewed": null, + "watches": { + "self": "https://example.atlassian.net/rest/api/2/issue/AR-86/watchers", + "watchCount": 2, + "isWatching": true + }, + "created": "2015-12-02T07:39:15.000-0800", + "epic": { + "id": 11900, + "key": "AR-37", + "self": "https://example.atlassian.net/rest/agile/1.0/epic/11900", + "name": "Moderation: Design", + "summary": "Moderation design", + "color": { + "key": "color_8" + }, + "done": true + }, + "priority": { + "self": "https://example.atlassian.net/rest/api/2/priority/3", + "iconUrl": "https://example.atlassian.net/images/icons/priorities/major.svg", + "name": "Major", + "id": "3" + }, + "customfield_10102": null, + "customfield_10103": null, + "labels": [], + "customfield_11700": null, + "timeestimate": null, + "aggregatetimeoriginalestimate": null, + "versions": [], + "issuelinks": [], + "assignee": { + "self": "https://example.atlassian.net/rest/api/2/user?username=mister.morris", + "name": "mister.morris", + "key": "mister.morris", + "emailAddress": "mister.morris@uservoice.com", + "avatarUrls": { + "48x48": "https://example.atlassian.net/secure/useravatar?ownerId=mister.morris&avatarId=10604", + "24x24": "https://example.atlassian.net/secure/useravatar?size=small&ownerId=mister.morris&avatarId=10604", + "16x16": "https://example.atlassian.net/secure/useravatar?size=xsmall&ownerId=mister.morris&avatarId=10604", + "32x32": "https://example.atlassian.net/secure/useravatar?size=medium&ownerId=mister.morris&avatarId=10604" + }, + "displayName": "mister Morris", + "active": true, + "timeZone": "America/New_York" + }, + "updated": "2016-02-01T08:17:04.000-0800", + "status": { + "self": "https://example.atlassian.net/rest/api/2/status/10000", + "description": "Ready to move to dev team for grooming", + "iconUrl": "https://example.atlassian.net/images/icons/statuses/closed.png", + "name": "Ready", + "id": "10000", + "statusCategory": { + "self": "https://example.atlassian.net/rest/api/2/statuscategory/2", + "id": 2, + "key": "new", + "colorName": "blue-gray", + "name": "To Do" + } + } + } + } + ] +} \ No newline at end of file diff --git a/vendor/src/github.com/andygrunwald/go-jira/mocks/project.json b/vendor/src/github.com/andygrunwald/go-jira/mocks/project.json new file mode 100644 index 0000000..9658221 --- /dev/null +++ b/vendor/src/github.com/andygrunwald/go-jira/mocks/project.json @@ -0,0 +1,411 @@ +{ + "expand": "projectKeys", + "self": "https://issues.apache.org/jira/rest/api/2/project/12310505", + "id": "12310505", + "key": "ABDERA", + "description": "The Abdera project is an implementation of the Atom Syndication Format (RFC4287) and the Atom Publishing Protocol specifications published by the IETF Atompub working group.", + "lead": { + "self": "https://issues.apache.org/jira/rest/api/2/user?username=rooneg", + "key": "rooneg", + "name": "rooneg", + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/useravatar?avatarId=10452", + "24x24": "https://issues.apache.org/jira/secure/useravatar?size=small&avatarId=10452", + "16x16": "https://issues.apache.org/jira/secure/useravatar?size=xsmall&avatarId=10452", + "32x32": "https://issues.apache.org/jira/secure/useravatar?size=medium&avatarId=10452" + }, + "displayName": "Garrett Rooney", + "active": true + }, + "components": [], + "issueTypes": [ + { + "self": "https://issues.apache.org/jira/rest/api/2/issuetype/1", + "id": "1", + "description": "A problem which impairs or prevents the functions of the product.", + "iconUrl": "https://issues.apache.org/jira/images/icons/issuetypes/bug.png", + "name": "Bug", + "subtask": false + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/issuetype/2", + "id": "2", + "description": "A new feature of the product, which has yet to be developed.", + "iconUrl": "https://issues.apache.org/jira/images/icons/issuetypes/newfeature.png", + "name": "New Feature", + "subtask": false + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/issuetype/4", + "id": "4", + "description": "An improvement or enhancement to an existing feature or task.", + "iconUrl": "https://issues.apache.org/jira/images/icons/issuetypes/improvement.png", + "name": "Improvement", + "subtask": false + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/issuetype/6", + "id": "6", + "description": "A new unit, integration or system test.", + "iconUrl": "https://issues.apache.org/jira/images/icons/issuetypes/requirement.png", + "name": "Test", + "subtask": false + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/issuetype/5", + "id": "5", + "description": "General wishlist item.", + "iconUrl": "https://issues.apache.org/jira/images/icons/issuetypes/improvement.png", + "name": "Wish", + "subtask": false + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/issuetype/3", + "id": "3", + "description": "A task that needs to be done.", + "iconUrl": "https://issues.apache.org/jira/images/icons/issuetypes/task.png", + "name": "Task", + "subtask": false + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/issuetype/7", + "id": "7", + "description": "The sub-task of the issue", + "iconUrl": "https://issues.apache.org/jira/images/icons/issuetypes/subtask_alternate.png", + "name": "Sub-task", + "subtask": true + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/issuetype/8", + "id": "8", + "description": "A request for a new JIRA project to be set up", + "iconUrl": "https://issues.apache.org/jira/images/icons/jiraman18.gif", + "name": "New JIRA Project", + "subtask": false + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/issuetype/9", + "id": "9", + "description": "An RTC request", + "iconUrl": "https://issues.apache.org/jira/images/icons/issuetypes/newfeature.png", + "name": "RTC", + "subtask": false + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/issuetype/10", + "id": "10", + "description": "Challenges made against the Sun Compatibility Test Suite", + "iconUrl": "https://issues.apache.org/jira/images/icons/issuetypes/task.png", + "name": "TCK Challenge", + "subtask": false + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/issuetype/11", + "id": "11", + "description": "A formal question. Initially added for the Legal JIRA.", + "iconUrl": "https://issues.apache.org/jira/images/icons/issuetypes/genericissue.png", + "name": "Question", + "subtask": false + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/issuetype/12", + "id": "12", + "description": "", + "iconUrl": "https://issues.apache.org/jira/images/icons/issuetypes/genericissue.png", + "name": "Temp", + "subtask": false + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/issuetype/13", + "id": "13", + "description": "A place to record back and forth on notions not yet formed enough to make a 'New Feature' or 'Task'", + "iconUrl": "https://issues.apache.org/jira/images/icons/issuetypes/genericissue.png", + "name": "Brainstorming", + "subtask": false + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/issuetype/14", + "id": "14", + "description": "An overarching type made of sub-tasks", + "iconUrl": "https://issues.apache.org/jira/images/icons/issuetypes/genericissue.png", + "name": "Umbrella", + "subtask": false + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/issuetype/15", + "id": "15", + "description": "Created by JIRA Agile - do not edit or delete. Issue type for a big user story that needs to be broken down.", + "iconUrl": "https://issues.apache.org/jira/images/icons/issuetypes/epic.png", + "name": "Epic", + "subtask": false + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/issuetype/16", + "id": "16", + "description": "Created by JIRA Agile - do not edit or delete. Issue type for a user story.", + "iconUrl": "https://issues.apache.org/jira/images/icons/issuetypes/story.png", + "name": "Story", + "subtask": false + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/issuetype/17", + "id": "17", + "description": "A technical task.", + "iconUrl": "https://issues.apache.org/jira/images/icons/issuetypes/task_agile.png", + "name": "Technical task", + "subtask": true + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/issuetype/18", + "id": "18", + "description": "Upgrading a dependency to a newer version", + "iconUrl": "https://issues.apache.org/jira/images/icons/issuetypes/improvement.png", + "name": "Dependency upgrade", + "subtask": false + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/issuetype/19", + "id": "19", + "description": "A search for a suitable name for an Apache product", + "iconUrl": "https://issues.apache.org/jira/images/icons/issuetypes/requirement.png", + "name": "Suitable Name Search", + "subtask": false + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/issuetype/20", + "id": "20", + "description": "Documentation or Website", + "iconUrl": "https://issues.apache.org/jira/images/icons/issuetypes/documentation.png", + "name": "Documentation", + "subtask": false + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/issuetype/10000", + "id": "10000", + "description": "Assigned specifically to Contractors by the VP Infra or or other VP/ Board Member.", + "iconUrl": "https://issues.apache.org/jira/images/icons/issuetypes/sales.png", + "name": "Planned Work", + "subtask": false + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/issuetype/10100", + "id": "10100", + "description": "A request for a new Confluence Wiki to be set up", + "iconUrl": "https://issues.apache.org/jira/secure/viewavatar?size=xsmall&avatarId=23211&avatarType=issuetype", + "name": "New Confluence Wiki", + "subtask": false + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/issuetype/10200", + "id": "10200", + "description": "", + "iconUrl": "https://issues.apache.org/jira/secure/viewavatar?size=xsmall&avatarId=21140&avatarType=issuetype", + "name": "New Git Repo", + "subtask": false + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/issuetype/10201", + "id": "10201", + "description": "", + "iconUrl": "https://issues.apache.org/jira/secure/viewavatar?size=xsmall&avatarId=21130&avatarType=issuetype", + "name": "Github Integration", + "subtask": false + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/issuetype/10202", + "id": "10202", + "description": "", + "iconUrl": "https://issues.apache.org/jira/secure/viewavatar?size=xsmall&avatarId=21130&avatarType=issuetype", + "name": "New TLP ", + "subtask": false + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/issuetype/10204", + "id": "10204", + "description": "", + "iconUrl": "https://issues.apache.org/jira/secure/viewavatar?size=xsmall&avatarId=21130&avatarType=issuetype", + "name": "New TLP - Common Tasks", + "subtask": false + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/issuetype/10205", + "id": "10205", + "description": "", + "iconUrl": "https://issues.apache.org/jira/secure/viewavatar?size=xsmall&avatarId=21134&avatarType=issuetype", + "name": "SVN->GIT Migration", + "subtask": false + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/issuetype/10206", + "id": "10206", + "description": "", + "iconUrl": "https://issues.apache.org/jira/secure/viewavatar?size=xsmall&avatarId=21130&avatarType=issuetype", + "name": "Blog - New Blog Request", + "subtask": false + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/issuetype/10207", + "id": "10207", + "description": "", + "iconUrl": "https://issues.apache.org/jira/secure/viewavatar?size=xsmall&avatarId=21130&avatarType=issuetype", + "name": "Blogs - New Blog User Account Request", + "subtask": false + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/issuetype/10208", + "id": "10208", + "description": "", + "iconUrl": "https://issues.apache.org/jira/secure/viewavatar?size=xsmall&avatarId=21130&avatarType=issuetype", + "name": "Blogs - Access to Existing Blog", + "subtask": false + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/issuetype/10209", + "id": "10209", + "description": "", + "iconUrl": "https://issues.apache.org/jira/secure/viewavatar?size=xsmall&avatarId=21130&avatarType=issuetype", + "name": "New Bugzilla Project", + "subtask": false + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/issuetype/10210", + "id": "10210", + "description": "", + "iconUrl": "https://issues.apache.org/jira/secure/viewavatar?size=xsmall&avatarId=21130&avatarType=issuetype", + "name": "SVN->GIT Mirroring", + "subtask": false + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/issuetype/10300", + "id": "10300", + "description": "For general IT problems and questions. Created by JIRA Service Desk.", + "iconUrl": "https://issues.apache.org/jira/servicedesk/issue-type-icons?icon=it-help", + "name": "IT Help", + "subtask": false + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/issuetype/10301", + "id": "10301", + "description": "For new system accounts or passwords. Created by JIRA Service Desk.", + "iconUrl": "https://issues.apache.org/jira/servicedesk/issue-type-icons?icon=access", + "name": "Access", + "subtask": false + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/issuetype/10400", + "id": "10400", + "description": "", + "iconUrl": "https://issues.apache.org/jira/images/icons/issuetypes/genericissue.png", + "name": "Request", + "subtask": false + } + ], + "url": "http://abdera.apache.org", + "assigneeType": "UNASSIGNED", + "versions": [ + { + "self": "https://issues.apache.org/jira/rest/api/2/version/12312506", + "id": "12312506", + "name": "0.2.2", + "archived": false, + "released": true, + "releaseDate": "2007-02-19", + "userReleaseDate": "19/Feb/07", + "projectId": 12310505 + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/version/12312507", + "id": "12312507", + "name": "0.3.0", + "archived": false, + "released": true, + "releaseDate": "2007-10-05", + "userReleaseDate": "05/Oct/07", + "projectId": 12310505 + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/version/12312825", + "id": "12312825", + "name": "0.4.0", + "archived": false, + "released": true, + "releaseDate": "2008-04-11", + "userReleaseDate": "11/Apr/08", + "projectId": 12310505 + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/version/12313105", + "id": "12313105", + "name": "1.0", + "archived": false, + "released": true, + "releaseDate": "2010-05-02", + "userReleaseDate": "02/May/10", + "projectId": 12310505 + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/version/12314990", + "id": "12314990", + "name": "1.1", + "archived": false, + "released": true, + "releaseDate": "2010-07-11", + "userReleaseDate": "11/Jul/10", + "projectId": 12310505 + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/version/12315922", + "id": "12315922", + "name": "1.1.1", + "archived": false, + "released": true, + "releaseDate": "2010-12-06", + "userReleaseDate": "06/Dec/10", + "projectId": 12310505 + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/version/12316041", + "id": "12316041", + "name": "1.1.2", + "archived": false, + "released": true, + "releaseDate": "2011-01-15", + "userReleaseDate": "15/Jan/11", + "projectId": 12310505 + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/version/12323557", + "id": "12323557", + "name": "1.1.3", + "archived": false, + "released": false, + "projectId": 12310505 + }, + { + "self": "https://issues.apache.org/jira/rest/api/2/version/12316141", + "id": "12316141", + "name": "1.2", + "archived": false, + "released": false, + "projectId": 12310505 + } + ], + "name": "Abdera", + "roles": { + "Service Desk Team": "https://issues.apache.org/jira/rest/api/2/project/12310505/role/10251", + "Developers": "https://issues.apache.org/jira/rest/api/2/project/12310505/role/10050", + "Service Desk Customers": "https://issues.apache.org/jira/rest/api/2/project/12310505/role/10250", + "Contributors": "https://issues.apache.org/jira/rest/api/2/project/12310505/role/10010", + "PMC": "https://issues.apache.org/jira/rest/api/2/project/12310505/role/10011", + "Committers": "https://issues.apache.org/jira/rest/api/2/project/12310505/role/10001", + "Administrators": "https://issues.apache.org/jira/rest/api/2/project/12310505/role/10002", + "ASF Members": "https://issues.apache.org/jira/rest/api/2/project/12310505/role/10150", + "Users": "https://issues.apache.org/jira/rest/api/2/project/12310505/role/10040" + }, + "avatarUrls": { + "48x48": "https://issues.apache.org/jira/secure/projectavatar?pid=12310505&avatarId=10011", + "24x24": "https://issues.apache.org/jira/secure/projectavatar?size=small&pid=12310505&avatarId=10011", + "16x16": "https://issues.apache.org/jira/secure/projectavatar?size=xsmall&pid=12310505&avatarId=10011", + "32x32": "https://issues.apache.org/jira/secure/projectavatar?size=medium&pid=12310505&avatarId=10011" + } +} \ No newline at end of file diff --git a/vendor/src/github.com/andygrunwald/go-jira/mocks/sprints.json b/vendor/src/github.com/andygrunwald/go-jira/mocks/sprints.json new file mode 100644 index 0000000..508ca35 --- /dev/null +++ b/vendor/src/github.com/andygrunwald/go-jira/mocks/sprints.json @@ -0,0 +1,46 @@ +{ + "isLast": true, + "maxResults": 50, + "startAt": 0, + "values": [ + { + "completeDate": "2016-04-28T05:08:48.543-07:00", + "endDate": "2016-04-27T08:29:00.000-07:00", + "id": 740, + "name": "Iteration-10", + "originBoardId": 734, + "self": "https://jira.com/rest/agile/1.0/sprint/740", + "startDate": "2016-04-11T07:29:03.294-07:00", + "state": "closed" + }, + { + "completeDate": "2016-05-30T02:45:44.991-07:00", + "endDate": "2016-05-26T14:56:00.000-07:00", + "id": 776, + "name": "Iteration-12-1", + "originBoardId": 734, + "self": "https://jira.com/rest/agile/1.0/sprint/776", + "startDate": "2016-05-19T13:56:00.000-07:00", + "state": "closed" + }, + { + "completeDate": "2016-06-08T07:54:13.723-07:00", + "endDate": "2016-06-08T01:06:00.000-07:00", + "id": 807, + "name": "Iteration-12-2", + "originBoardId": 734, + "self": "https://jira.com/rest/agile/1.0/sprint/807", + "startDate": "2016-06-01T00:06:00.000-07:00", + "state": "closed" + }, + { + "endDate": "2016-06-28T14:24:00.000-07:00", + "id": 832, + "name": "Iteration-13-2", + "originBoardId": 734, + "self": "https://jira.com/rest/agile/1.0/sprint/832", + "startDate": "2016-06-20T13:24:39.161-07:00", + "state": "active" + } + ] +} diff --git a/vendor/src/github.com/andygrunwald/go-jira/mocks/transitions.json b/vendor/src/github.com/andygrunwald/go-jira/mocks/transitions.json new file mode 100644 index 0000000..d21f409 --- /dev/null +++ b/vendor/src/github.com/andygrunwald/go-jira/mocks/transitions.json @@ -0,0 +1,101 @@ +{ + "expand": "transitions", + "transitions": [ + { + "id": "2", + "name": "Close Issue", + "to": { + "self": "http://localhost:8090/jira/rest/api/2.0/status/10000", + "description": "The issue is currently being worked on.", + "iconUrl": "http://localhost:8090/jira/images/icons/progress.gif", + "name": "In Progress", + "id": "10000", + "statusCategory": { + "self": "http://localhost:8090/jira/rest/api/2.0/statuscategory/1", + "id": 1, + "key": "in-flight", + "colorName": "yellow", + "name": "In Progress" + } + }, + "fields": { + "summary": { + "required": false, + "schema": { + "type": "array", + "items": "option", + "custom": "com.atlassian.jira.plugin.system.customfieldtypes:multiselect", + "customId": 10001 + }, + "name": "My Multi Select", + "hasDefaultValue": false, + "operations": [ + "set", + "add" + ], + "allowedValues": [ + "red", + "blue" + ] + } + } + }, + { + "id": "711", + "name": "QA Review", + "to": { + "self": "http://localhost:8090/jira/rest/api/2.0/status/5", + "description": "The issue is closed.", + "iconUrl": "http://localhost:8090/jira/images/icons/closed.gif", + "name": "Closed", + "id": "5", + "statusCategory": { + "self": "http://localhost:8090/jira/rest/api/2.0/statuscategory/9", + "id": 9, + "key": "completed", + "colorName": "green" + } + }, + "fields": { + "summary": { + "required": false, + "schema": { + "type": "array", + "items": "option", + "custom": "com.atlassian.jira.plugin.system.customfieldtypes:multiselect", + "customId": 10001 + }, + "name": "My Multi Select", + "hasDefaultValue": false, + "operations": [ + "set", + "add" + ], + "allowedValues": [ + "red", + "blue" + ] + }, + "colour": { + "required": false, + "schema": { + "type": "array", + "items": "option", + "custom": "com.atlassian.jira.plugin.system.customfieldtypes:multiselect", + "customId": 10001 + }, + "name": "My Multi Select", + "hasDefaultValue": false, + "operations": [ + "set", + "add" + ], + "allowedValues": [ + "red", + "blue" + ] + } + } + } + ] +} diff --git a/vendor/src/github.com/andygrunwald/go-jira/project.go b/vendor/src/github.com/andygrunwald/go-jira/project.go new file mode 100644 index 0000000..77b7e15 --- /dev/null +++ b/vendor/src/github.com/andygrunwald/go-jira/project.go @@ -0,0 +1,120 @@ +package jira + +import ( + "fmt" +) + +// ProjectService handles projects for the JIRA instance / API. +// +// JIRA API docs: https://docs.atlassian.com/jira/REST/latest/#api/2/project +type ProjectService struct { + client *Client +} + +// ProjectList represent a list of Projects +type ProjectList []struct { + Expand string `json:"expand"` + Self string `json:"self"` + ID string `json:"id"` + Key string `json:"key"` + Name string `json:"name"` + AvatarUrls AvatarUrls `json:"avatarUrls"` + ProjectTypeKey string `json:"projectTypeKey"` + ProjectCategory ProjectCategory `json:"projectCategory,omitempty"` +} + +// ProjectCategory represents a single project category +type ProjectCategory struct { + Self string `json:"self"` + ID string `json:"id"` + Name string `json:"name"` + Description string `json:"description"` +} + +// Project represents a JIRA Project. +type Project struct { + Expand string `json:"expand,omitempty"` + Self string `json:"self,omitempty"` + ID string `json:"id,omitempty"` + Key string `json:"key,omitempty"` + Description string `json:"description,omitempty"` + Lead User `json:"lead,omitempty"` + Components []ProjectComponent `json:"components,omitempty"` + IssueTypes []IssueType `json:"issueTypes,omitempty"` + URL string `json:"url,omitempty"` + Email string `json:"email,omitempty"` + AssigneeType string `json:"assigneeType,omitempty"` + Versions []Version `json:"versions,omitempty"` + Name string `json:"name,omitempty"` + Roles struct { + Developers string `json:"Developers,omitempty"` + } `json:"roles,omitempty"` + AvatarUrls AvatarUrls `json:"avatarUrls,omitempty"` + ProjectCategory ProjectCategory `json:"projectCategory,omitempty"` +} + +// Version represents a single release version of a project +type Version struct { + Self string `json:"self"` + ID string `json:"id"` + Name string `json:"name"` + Archived bool `json:"archived"` + Released bool `json:"released"` + ReleaseDate string `json:"releaseDate"` + UserReleaseDate string `json:"userReleaseDate"` + ProjectID int `json:"projectId"` // Unlike other IDs, this is returned as a number +} + +// ProjectComponent represents a single component of a project +type ProjectComponent struct { + Self string `json:"self"` + ID string `json:"id"` + Name string `json:"name"` + Description string `json:"description"` + Lead User `json:"lead"` + AssigneeType string `json:"assigneeType"` + Assignee User `json:"assignee"` + RealAssigneeType string `json:"realAssigneeType"` + RealAssignee User `json:"realAssignee"` + IsAssigneeTypeValid bool `json:"isAssigneeTypeValid"` + Project string `json:"project"` + ProjectID int `json:"projectId"` +} + +// GetList gets all projects form JIRA +// +// JIRA API docs: https://docs.atlassian.com/jira/REST/latest/#api/2/project-getAllProjects +func (s *ProjectService) GetList() (*ProjectList, *Response, error) { + apiEndpoint := "rest/api/2/project" + req, err := s.client.NewRequest("GET", apiEndpoint, nil) + if err != nil { + return nil, nil, err + } + + projectList := new(ProjectList) + resp, err := s.client.Do(req, projectList) + if err != nil { + return nil, resp, err + } + return projectList, resp, nil +} + +// Get returns a full representation of the project for the given issue key. +// JIRA will attempt to identify the project by the projectIdOrKey path parameter. +// This can be an project id, or an project key. +// +// JIRA API docs: https://docs.atlassian.com/jira/REST/latest/#api/2/project-getProject +func (s *ProjectService) Get(projectID string) (*Project, *Response, error) { + apiEndpoint := fmt.Sprintf("/rest/api/2/project/%s", projectID) + req, err := s.client.NewRequest("GET", apiEndpoint, nil) + if err != nil { + return nil, nil, err + } + + project := new(Project) + resp, err := s.client.Do(req, project) + if err != nil { + return nil, resp, err + } + return project, resp, nil +} diff --git a/vendor/src/github.com/andygrunwald/go-jira/project_test.go b/vendor/src/github.com/andygrunwald/go-jira/project_test.go new file mode 100644 index 0000000..f2d53d0 --- /dev/null +++ b/vendor/src/github.com/andygrunwald/go-jira/project_test.go @@ -0,0 +1,80 @@ +package jira + +import ( + "fmt" + "io/ioutil" + "net/http" + "testing" +) + +func TestProjectService_GetList(t *testing.T) { + setup() + defer teardown() + testAPIEdpoint := "/rest/api/2/project" + + raw, err := ioutil.ReadFile("./mocks/all_projects.json") + if err != nil { + t.Error(err.Error()) + } + testMux.HandleFunc(testAPIEdpoint, func(w http.ResponseWriter, r *http.Request) { + testMethod(t, r, "GET") + testRequestURL(t, r, testAPIEdpoint) + fmt.Fprint(w, string(raw)) + }) + + projects, _, err := testClient.Project.GetList() + if projects == nil { + t.Error("Expected project list. Project list is nil") + } + if err != nil { + t.Errorf("Error given: %s", err) + } +} + +func TestProjectService_Get(t *testing.T) { + setup() + defer teardown() + testAPIEdpoint := "/rest/api/2/project/12310505" + + raw, err := ioutil.ReadFile("./mocks/project.json") + if err != nil { + t.Error(err.Error()) + } + testMux.HandleFunc(testAPIEdpoint, func(w http.ResponseWriter, r *http.Request) { + testMethod(t, r, "GET") + testRequestURL(t, r, testAPIEdpoint) + fmt.Fprint(w, string(raw)) + }) + + projects, _, err := testClient.Project.Get("12310505") + if projects == nil { + t.Error("Expected project list. Project list is nil") + } + if err != nil { + t.Errorf("Error given: %s", err) + } +} + +func TestProjectService_Get_NoProject(t *testing.T) { + setup() + defer teardown() + testAPIEdpoint := "/rest/api/2/project/99999999" + + testMux.HandleFunc(testAPIEdpoint, func(w http.ResponseWriter, r *http.Request) { + testMethod(t, r, "GET") + testRequestURL(t, r, testAPIEdpoint) + fmt.Fprint(w, nil) + }) + + projects, resp, err := testClient.Project.Get("99999999") + if projects != nil { + t.Errorf("Expected nil. Got %+v", projects) + } + + if resp.Status == "404" { + t.Errorf("Expected status 404. Got %s", resp.Status) + } + if err == nil { + t.Errorf("Error given: %s", err) + } +} diff --git a/vendor/src/github.com/andygrunwald/go-jira/sprint.go b/vendor/src/github.com/andygrunwald/go-jira/sprint.go new file mode 100644 index 0000000..a101eb9 --- /dev/null +++ b/vendor/src/github.com/andygrunwald/go-jira/sprint.go @@ -0,0 +1,60 @@ +package jira + +import ( + "fmt" +) + +// SprintService handles sprints in JIRA Agile API. +// See https://docs.atlassian.com/jira-software/REST/cloud/ +type SprintService struct { + client *Client +} + +// IssuesWrapper represents a wrapper struct for moving issues to sprint +type IssuesWrapper struct { + Issues []string `json:"issues"` +} + +// IssuesInSprintResult represents a wrapper struct for search result +type IssuesInSprintResult struct { + Issues []Issue `json:"issues"` +} + +// MoveIssuesToSprint moves issues to a sprint, for a given sprint Id. +// Issues can only be moved to open or active sprints. +// The maximum number of issues that can be moved in one operation is 50. +// +// JIRA API docs: https://docs.atlassian.com/jira-software/REST/cloud/#agile/1.0/sprint-moveIssuesToSprint +func (s *SprintService) MoveIssuesToSprint(sprintID int, issueIDs []string) (*Response, error) { + apiEndpoint := fmt.Sprintf("rest/agile/1.0/sprint/%d/issue", sprintID) + + payload := IssuesWrapper{Issues: issueIDs} + + req, err := s.client.NewRequest("POST", apiEndpoint, payload) + + if err != nil { + return nil, err + } + + resp, err := s.client.Do(req, nil) + return resp, err +} + +// GetIssuesForSprint returns all issues in a sprint, for a given sprint Id. +// This only includes issues that the user has permission to view. +// By default, the returned issues are ordered by rank. +// +// JIRA API Docs: https://docs.atlassian.com/jira-software/REST/cloud/#agile/1.0/sprint-getIssuesForSprint +func (s *SprintService) GetIssuesForSprint(sprintID int) ([]Issue, *Response, error) { + apiEndpoint := fmt.Sprintf("rest/agile/1.0/sprint/%d/issue", sprintID) + + req, err := s.client.NewRequest("GET", apiEndpoint, nil) + + if err != nil { + return nil, nil, err + } + + result := new(IssuesInSprintResult) + resp, err := s.client.Do(req, result) + return result.Issues, resp, err +} diff --git a/vendor/src/github.com/andygrunwald/go-jira/sprint_test.go b/vendor/src/github.com/andygrunwald/go-jira/sprint_test.go new file mode 100644 index 0000000..40f0546 --- /dev/null +++ b/vendor/src/github.com/andygrunwald/go-jira/sprint_test.go @@ -0,0 +1,67 @@ +package jira + +import ( + "encoding/json" + "fmt" + "io/ioutil" + "net/http" + "testing" +) + +func TestSprintService_MoveIssuesToSprint(t *testing.T) { + setup() + defer teardown() + + testAPIEndpoint := "/rest/agile/1.0/sprint/123/issue" + + issuesToMove := []string{"KEY-1", "KEY-2"} + + testMux.HandleFunc(testAPIEndpoint, func(w http.ResponseWriter, r *http.Request) { + testMethod(t, r, "POST") + testRequestURL(t, r, testAPIEndpoint) + + decoder := json.NewDecoder(r.Body) + var payload IssuesWrapper + err := decoder.Decode(&payload) + if err != nil { + t.Errorf("Got error: %v", err) + } + + if payload.Issues[0] != issuesToMove[0] { + t.Errorf("Expected %s to be in payload, got %s instead", issuesToMove[0], payload.Issues[0]) + } + }) + _, err := testClient.Sprint.MoveIssuesToSprint(123, issuesToMove) + + if err != nil { + t.Errorf("Got error: %v", err) + } +} + +func TestSprintService_GetIssuesForSprint(t *testing.T) { + setup() + defer teardown() + testAPIEdpoint := "/rest/agile/1.0/sprint/123/issue" + + raw, err := ioutil.ReadFile("./mocks/issues_in_sprint.json") + if err != nil { + t.Error(err.Error()) + } + testMux.HandleFunc(testAPIEdpoint, func(w http.ResponseWriter, r *http.Request) { + testMethod(t, r, "GET") + testRequestURL(t, r, testAPIEdpoint) + fmt.Fprint(w, string(raw)) + }) + + issues, _, err := testClient.Sprint.GetIssuesForSprint(123) + if err != nil { + t.Errorf("Error given: %v", err) + } + if issues == nil { + t.Error("Expected issues in sprint list. Issues list is nil") + } + if len(issues) != 1 { + t.Errorf("Expect there to be 1 issue in the sprint, found %v", len(issues)) + } + +}