jigit 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (59) hide show
  1. checksums.yaml +7 -0
  2. data/.gitattributes +1 -0
  3. data/.gitignore +60 -0
  4. data/.rspec +2 -0
  5. data/.rubocop.yml +117 -0
  6. data/.travis.yml +20 -0
  7. data/CHANGELOG.md +5 -0
  8. data/Dangerfile +22 -0
  9. data/Gemfile +7 -0
  10. data/Gemfile.lock +138 -0
  11. data/LICENSE +21 -0
  12. data/README.md +66 -0
  13. data/Rakefile +32 -0
  14. data/bin/jigit +5 -0
  15. data/jigit.gemspec +35 -0
  16. data/lib/jigit.rb +12 -0
  17. data/lib/jigit/commands/init.rb +309 -0
  18. data/lib/jigit/commands/issue.rb +56 -0
  19. data/lib/jigit/commands/runner.rb +22 -0
  20. data/lib/jigit/commands/start_issue.rb +58 -0
  21. data/lib/jigit/commands/stop_issue.rb +53 -0
  22. data/lib/jigit/core/jigitfile.rb +31 -0
  23. data/lib/jigit/core/jigitfile_constants.rb +15 -0
  24. data/lib/jigit/core/jigitfile_generator.rb +34 -0
  25. data/lib/jigit/git/git_hook.rb +11 -0
  26. data/lib/jigit/git/git_hook_installer.rb +60 -0
  27. data/lib/jigit/git/git_ignore_updater.rb +20 -0
  28. data/lib/jigit/git/post_checkout_hook.rb +23 -0
  29. data/lib/jigit/helpers/informator.rb +131 -0
  30. data/lib/jigit/helpers/keychain_storage.rb +19 -0
  31. data/lib/jigit/jira/jira_api_client.rb +80 -0
  32. data/lib/jigit/jira/jira_api_client_error.rb +10 -0
  33. data/lib/jigit/jira/jira_config.rb +16 -0
  34. data/lib/jigit/jira/jira_transition_finder.rb +16 -0
  35. data/lib/jigit/jira/resources/jira_issue.rb +34 -0
  36. data/lib/jigit/jira/resources/jira_status.rb +18 -0
  37. data/lib/jigit/jira/resources/jira_transition.rb +18 -0
  38. data/lib/jigit/version.rb +4 -0
  39. data/spec/fixtures/jigitfile_invalid.yaml +2 -0
  40. data/spec/fixtures/jigitfile_valid.yaml +5 -0
  41. data/spec/lib/integration/jigit/core/jigitfile_generator_spec.rb +27 -0
  42. data/spec/lib/integration/jigit/core/keychain_storage_spec.rb +35 -0
  43. data/spec/lib/integration/jigit/git/git_hook_installer_spec.rb +66 -0
  44. data/spec/lib/integration/jigit/git/git_ignore_updater_spec.rb +45 -0
  45. data/spec/lib/integration/jigit/jira/jira_api_client_spec.rb +154 -0
  46. data/spec/lib/unit/jigit/core/jigitfile_spec.rb +33 -0
  47. data/spec/lib/unit/jigit/git/post_checkout_hook_spec.rb +22 -0
  48. data/spec/lib/unit/jigit/git_hooks/post_checkout_hook_spec.rb +22 -0
  49. data/spec/lib/unit/jigit/jira/jira_config_spec.rb +23 -0
  50. data/spec/lib/unit/jigit/jira/jira_issue_spec.rb +101 -0
  51. data/spec/lib/unit/jigit/jira/jira_status_spec.rb +62 -0
  52. data/spec/lib/unit/jigit/jira/jira_transition_finder_spec.rb +70 -0
  53. data/spec/lib/unit/jigit/jira/jira_transition_spec.rb +64 -0
  54. data/spec/mock_responses/issue.json +1108 -0
  55. data/spec/mock_responses/issue_1002_transitions.json +49 -0
  56. data/spec/mock_responses/statuses.json +37 -0
  57. data/spec/spec_helper.rb +17 -0
  58. data/tasks/generate_jira_localhost.rake +20 -0
  59. metadata +293 -0
@@ -0,0 +1,33 @@
1
+ require "jigit/core/jigitfile"
2
+
3
+ describe Jigit::Jigitfile do
4
+ describe ".initialize" do
5
+ context "when there is no jigitfile at the given path" do
6
+ it "raises an exception" do
7
+ expect { Jigit::Jigitfile.new("./jigitfile.yml") }.to raise_error("Couldn't find Jigitfile file at './jigitfile.yml'")
8
+ end
9
+ end
10
+
11
+ context "when the file does not have a legit YAML syntax" do
12
+ it "raises an exception" do
13
+ expect { Jigit::Jigitfile.new("spec/fixtures/jigitfile_invalid.yaml") }.to raise_error("File at 'spec/fixtures/jigitfile_invalid.yaml' doesn't have a legit YAML syntax")
14
+ end
15
+ end
16
+
17
+ context "when file exista and sytax is valid" do
18
+ let(:subject) { Jigit::Jigitfile.new("spec/fixtures/jigitfile_valid.yaml") }
19
+
20
+ it "assigns in_progress_status" do
21
+ expect(subject.in_progress_status).to be == "In Progress"
22
+ end
23
+
24
+ it "assigns other_statuses" do
25
+ expect(subject.other_statuses).to be == ["To Do", "In Review"]
26
+ end
27
+
28
+ it "assigns the host" do
29
+ expect(subject.host).to be == "myhost.atlassian.net"
30
+ end
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,22 @@
1
+ require "jigit/git/post_checkout_hook"
2
+
3
+ describe Jigit::PostCheckoutHook do
4
+ it "is correct" do
5
+ expected_lines = ["#!/usr/bin/env bash",
6
+ "checkoutType=$3",
7
+ "[[ $checkoutType == 1 ]] && checkoutType='branch' || checkoutType='file'",
8
+ "if [ $checkoutType == 'branch' ]; then",
9
+ " newBranchName=`git symbolic-ref --short HEAD`",
10
+ " oldBranchName=`git rev-parse --abbrev-ref @{-1}`",
11
+ " if [ $newBranchName != $oldBranchName ]; then",
12
+ " jigit issue start --name=$newBranchName",
13
+ " jigit issue stop --name=$oldBranchName",
14
+ " fi",
15
+ "fi"]
16
+ expect(Jigit::PostCheckoutHook.hook_lines).to be == expected_lines
17
+ end
18
+
19
+ it "has correct name" do
20
+ expect(Jigit::PostCheckoutHook.name).to be == "post-checkout"
21
+ end
22
+ end
@@ -0,0 +1,22 @@
1
+ require "jigit/git/post_checkout_hook"
2
+
3
+ describe Jigit::PostCheckoutHook do
4
+ it "has correct hook lines" do
5
+ expected_lines = ["#!/usr/bin/env bash",
6
+ "checkoutType=$3",
7
+ "[[ $checkoutType == 1 ]] && checkoutType='branch' || checkoutType='file'",
8
+ "if [ $checkoutType == 'branch' ]; then",
9
+ " newBranchName=`git symbolic-ref --short HEAD`",
10
+ " oldBranchName=`git rev-parse --abbrev-ref @{-1}`",
11
+ " if [ $newBranchName != $oldBranchName ]; then",
12
+ " jigit issue start --name=$newBranchName",
13
+ " jigit issue stop --name=$oldBranchName",
14
+ " fi",
15
+ "fi"]
16
+ expect(Jigit::PostCheckoutHook.hook_lines).to be == expected_lines
17
+ end
18
+
19
+ it "has correct name" do
20
+ expect(Jigit::PostCheckoutHook.name).to be == "post-checkout"
21
+ end
22
+ end
@@ -0,0 +1,23 @@
1
+ require "jigit/jira/jira_config"
2
+
3
+ describe Jigit::JiraConfig do
4
+ context "when initialize" do
5
+ context "when no user" do
6
+ it "raises an error" do
7
+ expect { Jigit::JiraConfig.new(nil, "1234567890", "my.jira.com") }.to raise_error("User name must not be nil")
8
+ end
9
+ end
10
+
11
+ context "when no password" do
12
+ it "raises an error" do
13
+ expect { Jigit::JiraConfig.new("superman", nil, "my.jira.com") }.to raise_error("Password must not be nil")
14
+ end
15
+ end
16
+
17
+ context "when no host" do
18
+ it "raises an error" do
19
+ expect { Jigit::JiraConfig.new("superman", "1234567890", nil) }.to raise_error("Host must not be nil")
20
+ end
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,101 @@
1
+ require "jigit/jira/resources/jira_issue"
2
+
3
+ describe Jigit::JiraIssue do
4
+ let(:config) { object_double(Jigit::JiraConfig) }
5
+ let(:site_url) { "http://foo:bar@localhost:2990" }
6
+ let(:jira_client) do
7
+ basic_client = JIRA::Client.new({ username: "foo", password: "bar", auth_type: :basic, use_ssl: false })
8
+ basic_client
9
+ end
10
+
11
+ describe(".status") do
12
+ let(:issue) do
13
+ base_issue = JIRA::Resource::Issue.new(jira_client, attrs: {
14
+ "id" => "10002",
15
+ "self" => "http://localhost:2990/jira/rest/api/2/issue/10002",
16
+ "fields" => {
17
+ "status" => {
18
+ "self" => "http://localhost:2990/jira/rest/api/2/status/1",
19
+ "description" => "The issue is open and ready for the assignee to start work on it.",
20
+ "name" => "Open",
21
+ "id" => "1"
22
+ }
23
+ }
24
+ })
25
+ issue = Jigit::JiraIssue.new(base_issue)
26
+ issue
27
+ end
28
+
29
+ it("returns jigit status") do
30
+ expect(issue.status).to be_instance_of(Jigit::JiraStatus)
31
+ end
32
+ end
33
+
34
+ describe(".name") do
35
+ let(:issue) do
36
+ base_issue = JIRA::Resource::Issue.new(jira_client, attrs: {
37
+ "id" => "10002",
38
+ "key" => "ADT-1",
39
+ "self" => "http://localhost:2990/jira/rest/api/2/issue/10002",
40
+ "fields" => {
41
+ "assignee" => {
42
+ "self" => "http://localhost:2990/jira/rest/api/2/user?username=admin",
43
+ "name" => "admin",
44
+ "emailAddress" => "admin@example.com"
45
+ }
46
+ }
47
+ })
48
+ issue = Jigit::JiraIssue.new(base_issue)
49
+ issue
50
+ end
51
+
52
+ it("returns issue key") do
53
+ expect(issue.key).to be == "ADT-1"
54
+ end
55
+ end
56
+
57
+ describe(".assignee_name") do
58
+ let(:issue) do
59
+ base_issue = JIRA::Resource::Issue.new(jira_client, attrs: {
60
+ "id" => "10002",
61
+ "self" => "http://localhost:2990/jira/rest/api/2/issue/10002",
62
+ "fields" => {
63
+ "assignee" => {
64
+ "self" => "http://localhost:2990/jira/rest/api/2/user?username=admin",
65
+ "name" => "admin",
66
+ "emailAddress" => "admin@example.com"
67
+ }
68
+ }
69
+ })
70
+ issue = Jigit::JiraIssue.new(base_issue)
71
+ issue
72
+ end
73
+
74
+ it("returns assignee name") do
75
+ expect(issue.assignee_name).to be == "admin"
76
+ end
77
+ end
78
+
79
+ describe(".new") do
80
+ context("when without base issue") do
81
+ it("raises and error") do
82
+ expect { Jigit::JiraIssue.new(nil) }.to raise_error("Can not initialize JiraIssue without jira-ruby issue")
83
+ end
84
+ end
85
+
86
+ context("when with base issue") do
87
+ let(:base_issue) do
88
+ base_issue = JIRA::Resource::Issue.new(jira_client, attrs: {
89
+ "id" => "10002",
90
+ "self" => "http://localhost:2990/jira/rest/api/2/issue/10002"
91
+ })
92
+ base_issue
93
+ end
94
+
95
+ it("assigns the base issue") do
96
+ issue = Jigit::JiraIssue.new(base_issue)
97
+ expect(issue.jira_ruby_issue).to be(base_issue)
98
+ end
99
+ end
100
+ end
101
+ end
@@ -0,0 +1,62 @@
1
+ require "jigit/jira/resources/jira_status"
2
+
3
+ describe Jigit::JiraStatus do
4
+ let(:config) { object_double(Jigit::JiraConfig) }
5
+ let(:site_url) { "http://foo:bar@localhost:2990" }
6
+ let(:jira_client) do
7
+ basic_client = JIRA::Client.new({ username: "foo", password: "bar", auth_type: :basic, use_ssl: false })
8
+ basic_client
9
+ end
10
+
11
+ describe(".id") do
12
+ let(:base_status) do
13
+ base_status = JIRA::Resource::Status.new(jira_client, attrs: {
14
+ "id" => "1",
15
+ "self" => "http://localhost:2990/jira/rest/api/2/status/1"
16
+ })
17
+ base_status
18
+ end
19
+
20
+ it("returns id of the base status") do
21
+ expect(Jigit::JiraStatus.new(base_status).id).to be == "1"
22
+ end
23
+ end
24
+
25
+ describe(".name") do
26
+ let(:base_status) do
27
+ base_status = JIRA::Resource::Status.new(jira_client, attrs: {
28
+ "id" => "1",
29
+ "self" => "http://localhost:2990/jira/rest/api/2/status/1",
30
+ "name" => "In Progress"
31
+ })
32
+ base_status
33
+ end
34
+
35
+ it("returns name of the base status") do
36
+ expect(Jigit::JiraStatus.new(base_status).name).to be == "In Progress"
37
+ end
38
+ end
39
+
40
+ describe(".new") do
41
+ context("when without base status") do
42
+ it("raises an error") do
43
+ expect { Jigit::JiraStatus.new(nil) }.to raise_error("Can not initialize JiraStatus without jira-ruby status")
44
+ end
45
+ end
46
+
47
+ context("when with base status") do
48
+ let(:base_status) do
49
+ base_status = JIRA::Resource::Status.new(jira_client, attrs: {
50
+ "id" => "1",
51
+ "self" => "http://localhost:2990/jira/rest/api/2/status/1"
52
+ })
53
+ base_status
54
+ end
55
+
56
+ it("assigns the base issue") do
57
+ status = Jigit::JiraStatus.new(base_status)
58
+ expect(status.jira_ruby_status).to be(base_status)
59
+ end
60
+ end
61
+ end
62
+ end
@@ -0,0 +1,70 @@
1
+ require "jigit/jira/jira_transition_finder"
2
+
3
+ describe Jigit::JiraTransitionFinder do
4
+ describe ".initialize" do
5
+ context "when transitions are nil" do
6
+ it "returns an object" do
7
+ expect(Jigit::JiraTransitionFinder.new(nil)).to_not be_nil
8
+ end
9
+ end
10
+
11
+ context "when there are no transitions" do
12
+ it "returns an object" do
13
+ expect(Jigit::JiraTransitionFinder.new([])).to_not be_nil
14
+ end
15
+ end
16
+
17
+ context "when there are transitions" do
18
+ it "returns an object" do
19
+ expect(Jigit::JiraTransitionFinder.new([double(Jigit::JiraTransition)])).to_not be_nil
20
+ end
21
+ end
22
+ end
23
+
24
+ describe ".find_transition_to_in_progress" do
25
+ context "when there is transition with to_status == in progress" do
26
+ before(:each) do
27
+ transition1 = double(Jigit::JiraTransition)
28
+ status1 = double(Jigit::JiraStatus)
29
+ allow(status1).to receive(:name).and_return("Done")
30
+ allow(transition1).to receive(:to_status).and_return(status1)
31
+
32
+ @transition2 = double(Jigit::JiraTransition)
33
+ status2 = double(Jigit::JiraStatus)
34
+ allow(status2).to receive(:name).and_return("In Progress")
35
+ allow(@transition2).to receive(:to_status).and_return(status2)
36
+
37
+ transition3 = double(Jigit::JiraTransition)
38
+ status3 = double(Jigit::JiraStatus)
39
+ allow(status3).to receive(:name).and_return("In Review")
40
+ allow(transition3).to receive(:to_status).and_return(status3)
41
+
42
+ @jira_transition_finder = Jigit::JiraTransitionFinder.new([transition1, @transition2, transition3])
43
+ end
44
+
45
+ it "finds a transition" do
46
+ expect(@jira_transition_finder.find_transition_to("In Progress")).to be == @transition2
47
+ end
48
+ end
49
+
50
+ context "when there is no transition with to_status == in progress" do
51
+ before(:each) do
52
+ transition1 = double(Jigit::JiraTransition)
53
+ status1 = double(Jigit::JiraStatus)
54
+ allow(status1).to receive(:name).and_return("Done")
55
+ allow(transition1).to receive(:to_status).and_return(status1)
56
+
57
+ transition2 = double(Jigit::JiraTransition)
58
+ status2 = double(Jigit::JiraStatus)
59
+ allow(status2).to receive(:name).and_return("In Review")
60
+ allow(transition2).to receive(:to_status).and_return(status2)
61
+
62
+ @jira_transition_finder = Jigit::JiraTransitionFinder.new([transition1, transition2])
63
+ end
64
+
65
+ it "doesn't find a transition" do
66
+ expect(@jira_transition_finder.find_transition_to("In Progress")).to be_nil
67
+ end
68
+ end
69
+ end
70
+ end
@@ -0,0 +1,64 @@
1
+ require "jigit/jira/resources/jira_transition"
2
+
3
+ describe Jigit::JiraTransition do
4
+ let(:config) { object_double(Jigit::JiraConfig) }
5
+ let(:site_url) { "http://foo:bar@localhost:2990" }
6
+ let(:jira_client) do
7
+ basic_client = JIRA::Client.new({ username: "foo", password: "bar", auth_type: :basic, use_ssl: false })
8
+ basic_client
9
+ end
10
+
11
+ describe(".to_status") do
12
+ let(:base_transition) do
13
+ base_transition = JIRA::Resource::Transition.new(jira_client, attrs: {
14
+ "id" => "52",
15
+ "name" => "Review",
16
+ "to" => {
17
+ "id" => "1003"
18
+ }
19
+ }, issue_id: "10014")
20
+ base_transition
21
+ end
22
+
23
+ it("returns the wrapped jira status") do
24
+ expect(Jigit::JiraTransition.new(base_transition).to_status).to be_instance_of(Jigit::JiraStatus)
25
+ end
26
+ end
27
+
28
+ describe(".id") do
29
+ let(:base_transition) do
30
+ base_transition = JIRA::Resource::Transition.new(jira_client, attrs: {
31
+ "id" => "52",
32
+ "name" => "Review"
33
+ }, issue_id: "10014")
34
+ base_transition
35
+ end
36
+
37
+ it("returns id of the base transition") do
38
+ expect(Jigit::JiraTransition.new(base_transition).id).to be == "52"
39
+ end
40
+ end
41
+
42
+ describe(".new") do
43
+ context("when without base transition") do
44
+ it("raises an error") do
45
+ expect { Jigit::JiraTransition.new(nil) }.to raise_error("Can not initialize transition without jira-ruby transition")
46
+ end
47
+ end
48
+
49
+ context("when with base transition") do
50
+ let(:base_transition) do
51
+ base_transition = JIRA::Resource::Transition.new(jira_client, attrs: {
52
+ "id" => "52",
53
+ "name" => "Review"
54
+ }, issue_id: "10014")
55
+ base_transition
56
+ end
57
+
58
+ it("assigns the base transition") do
59
+ transition = Jigit::JiraTransition.new(base_transition)
60
+ expect(transition.jira_ruby_transition).to be(base_transition)
61
+ end
62
+ end
63
+ end
64
+ end
@@ -0,0 +1,1108 @@
1
+ {
2
+ "expand": "schema,names",
3
+ "startAt": 0,
4
+ "maxResults": 50,
5
+ "total": 11,
6
+ "issues": [
7
+ {
8
+ "expand": "editmeta,renderedFields,transitions,changelog",
9
+ "id": "10014",
10
+ "self": "http://localhost:2990/jira/rest/api/2/issue/10014",
11
+ "key": "SAMPLEPROJECT-13",
12
+ "fields": {
13
+ "summary": "blarg from in example.rb",
14
+ "progress": {
15
+ "progress": 0,
16
+ "total": 0
17
+ },
18
+ "issuetype": {
19
+ "self": "http://localhost:2990/jira/rest/api/2/issuetype/3",
20
+ "id": "3",
21
+ "description": "A task that needs to be done.",
22
+ "iconUrl": "http://localhost:2990/jira/images/icons/task.gif",
23
+ "name": "Task",
24
+ "subtask": false
25
+ },
26
+ "votes": {
27
+ "self": "http://localhost:2990/jira/rest/api/2/issue/SAMPLEPROJECT-13/votes",
28
+ "votes": 0,
29
+ "hasVoted": false
30
+ },
31
+ "resolution": null,
32
+ "fixVersions": [],
33
+ "resolutiondate": null,
34
+ "timespent": null,
35
+ "reporter": {
36
+ "self": "http://localhost:2990/jira/rest/api/2/user?username=admin",
37
+ "name": "admin",
38
+ "emailAddress": "admin@example.com",
39
+ "avatarUrls": {
40
+ "16x16": "http://localhost:2990/jira/secure/useravatar?size=small&avatarId=10122",
41
+ "48x48": "http://localhost:2990/jira/secure/useravatar?avatarId=10122"
42
+ },
43
+ "displayName": "admin",
44
+ "active": true
45
+ },
46
+ "aggregatetimeoriginalestimate": null,
47
+ "updated": "2011-12-15T15:35:06.000+1300",
48
+ "created": "2011-12-15T15:35:06.000+1300",
49
+ "description": null,
50
+ "priority": {
51
+ "self": "http://localhost:2990/jira/rest/api/2/priority/3",
52
+ "iconUrl": "http://localhost:2990/jira/images/icons/priority_major.gif",
53
+ "name": "Major",
54
+ "id": "3"
55
+ },
56
+ "duedate": null,
57
+ "issuelinks": [],
58
+ "watches": {
59
+ "self": "http://localhost:2990/jira/rest/api/2/issue/SAMPLEPROJECT-13/watchers",
60
+ "watchCount": 0,
61
+ "isWatching": false
62
+ },
63
+ "subtasks": [],
64
+ "status": {
65
+ "self": "http://localhost:2990/jira/rest/api/2/status/1",
66
+ "description": "The issue is open and ready for the assignee to start work on it.",
67
+ "iconUrl": "http://localhost:2990/jira/images/icons/status_open.gif",
68
+ "name": "Open",
69
+ "id": "1"
70
+ },
71
+ "labels": [],
72
+ "assignee": {
73
+ "self": "http://localhost:2990/jira/rest/api/2/user?username=admin",
74
+ "name": "admin",
75
+ "emailAddress": "admin@example.com",
76
+ "avatarUrls": {
77
+ "16x16": "http://localhost:2990/jira/secure/useravatar?size=small&avatarId=10122",
78
+ "48x48": "http://localhost:2990/jira/secure/useravatar?avatarId=10122"
79
+ },
80
+ "displayName": "admin",
81
+ "active": true
82
+ },
83
+ "workratio": -1,
84
+ "aggregatetimeestimate": null,
85
+ "project": {
86
+ "self": "http://localhost:2990/jira/rest/api/2/project/SAMPLEPROJECT",
87
+ "id": "10001",
88
+ "key": "SAMPLEPROJECT",
89
+ "name": "Sample Project for Developing RoR RESTful API",
90
+ "avatarUrls": {
91
+ "16x16": "http://localhost:2990/jira/secure/projectavatar?size=small&pid=10001&avatarId=10011",
92
+ "48x48": "http://localhost:2990/jira/secure/projectavatar?pid=10001&avatarId=10011"
93
+ }
94
+ },
95
+ "versions": [],
96
+ "environment": null,
97
+ "timeestimate": null,
98
+ "aggregateprogress": {
99
+ "progress": 0,
100
+ "total": 0
101
+ },
102
+ "components": [],
103
+ "timeoriginalestimate": null,
104
+ "aggregatetimespent": null
105
+ }
106
+ },
107
+ {
108
+ "expand": "editmeta,renderedFields,transitions,changelog",
109
+ "id": "10013",
110
+ "self": "http://localhost:2990/jira/rest/api/2/issue/10013",
111
+ "key": "SAMPLEPROJECT-12",
112
+ "fields": {
113
+ "summary": "blarg from in example.rb",
114
+ "progress": {
115
+ "progress": 0,
116
+ "total": 0
117
+ },
118
+ "issuetype": {
119
+ "self": "http://localhost:2990/jira/rest/api/2/issuetype/3",
120
+ "id": "3",
121
+ "description": "A task that needs to be done.",
122
+ "iconUrl": "http://localhost:2990/jira/images/icons/task.gif",
123
+ "name": "Task",
124
+ "subtask": false
125
+ },
126
+ "votes": {
127
+ "self": "http://localhost:2990/jira/rest/api/2/issue/SAMPLEPROJECT-12/votes",
128
+ "votes": 0,
129
+ "hasVoted": false
130
+ },
131
+ "resolution": null,
132
+ "fixVersions": [],
133
+ "resolutiondate": null,
134
+ "timespent": null,
135
+ "reporter": {
136
+ "self": "http://localhost:2990/jira/rest/api/2/user?username=admin",
137
+ "name": "admin",
138
+ "emailAddress": "admin@example.com",
139
+ "avatarUrls": {
140
+ "16x16": "http://localhost:2990/jira/secure/useravatar?size=small&avatarId=10122",
141
+ "48x48": "http://localhost:2990/jira/secure/useravatar?avatarId=10122"
142
+ },
143
+ "displayName": "admin",
144
+ "active": true
145
+ },
146
+ "aggregatetimeoriginalestimate": null,
147
+ "updated": "2011-12-15T15:34:58.000+1300",
148
+ "created": "2011-12-15T15:34:58.000+1300",
149
+ "description": null,
150
+ "priority": {
151
+ "self": "http://localhost:2990/jira/rest/api/2/priority/3",
152
+ "iconUrl": "http://localhost:2990/jira/images/icons/priority_major.gif",
153
+ "name": "Major",
154
+ "id": "3"
155
+ },
156
+ "duedate": null,
157
+ "issuelinks": [],
158
+ "watches": {
159
+ "self": "http://localhost:2990/jira/rest/api/2/issue/SAMPLEPROJECT-12/watchers",
160
+ "watchCount": 0,
161
+ "isWatching": false
162
+ },
163
+ "subtasks": [],
164
+ "status": {
165
+ "self": "http://localhost:2990/jira/rest/api/2/status/1",
166
+ "description": "The issue is open and ready for the assignee to start work on it.",
167
+ "iconUrl": "http://localhost:2990/jira/images/icons/status_open.gif",
168
+ "name": "Open",
169
+ "id": "1"
170
+ },
171
+ "labels": [],
172
+ "assignee": {
173
+ "self": "http://localhost:2990/jira/rest/api/2/user?username=admin",
174
+ "name": "admin",
175
+ "emailAddress": "admin@example.com",
176
+ "avatarUrls": {
177
+ "16x16": "http://localhost:2990/jira/secure/useravatar?size=small&avatarId=10122",
178
+ "48x48": "http://localhost:2990/jira/secure/useravatar?avatarId=10122"
179
+ },
180
+ "displayName": "admin",
181
+ "active": true
182
+ },
183
+ "workratio": -1,
184
+ "aggregatetimeestimate": null,
185
+ "project": {
186
+ "self": "http://localhost:2990/jira/rest/api/2/project/SAMPLEPROJECT",
187
+ "id": "10001",
188
+ "key": "SAMPLEPROJECT",
189
+ "name": "Sample Project for Developing RoR RESTful API",
190
+ "avatarUrls": {
191
+ "16x16": "http://localhost:2990/jira/secure/projectavatar?size=small&pid=10001&avatarId=10011",
192
+ "48x48": "http://localhost:2990/jira/secure/projectavatar?pid=10001&avatarId=10011"
193
+ }
194
+ },
195
+ "versions": [],
196
+ "environment": null,
197
+ "timeestimate": null,
198
+ "aggregateprogress": {
199
+ "progress": 0,
200
+ "total": 0
201
+ },
202
+ "components": [],
203
+ "timeoriginalestimate": null,
204
+ "aggregatetimespent": null
205
+ }
206
+ },
207
+ {
208
+ "expand": "editmeta,renderedFields,transitions,changelog",
209
+ "id": "10012",
210
+ "self": "http://localhost:2990/jira/rest/api/2/issue/10012",
211
+ "key": "SAMPLEPROJECT-11",
212
+ "fields": {
213
+ "summary": "blarg from in example.rb",
214
+ "progress": {
215
+ "progress": 0,
216
+ "total": 0
217
+ },
218
+ "issuetype": {
219
+ "self": "http://localhost:2990/jira/rest/api/2/issuetype/3",
220
+ "id": "3",
221
+ "description": "A task that needs to be done.",
222
+ "iconUrl": "http://localhost:2990/jira/images/icons/task.gif",
223
+ "name": "Task",
224
+ "subtask": false
225
+ },
226
+ "votes": {
227
+ "self": "http://localhost:2990/jira/rest/api/2/issue/SAMPLEPROJECT-11/votes",
228
+ "votes": 0,
229
+ "hasVoted": false
230
+ },
231
+ "resolution": null,
232
+ "fixVersions": [],
233
+ "resolutiondate": null,
234
+ "timespent": null,
235
+ "reporter": {
236
+ "self": "http://localhost:2990/jira/rest/api/2/user?username=admin",
237
+ "name": "admin",
238
+ "emailAddress": "admin@example.com",
239
+ "avatarUrls": {
240
+ "16x16": "http://localhost:2990/jira/secure/useravatar?size=small&avatarId=10122",
241
+ "48x48": "http://localhost:2990/jira/secure/useravatar?avatarId=10122"
242
+ },
243
+ "displayName": "admin",
244
+ "active": true
245
+ },
246
+ "aggregatetimeoriginalestimate": null,
247
+ "updated": "2011-12-15T15:34:48.000+1300",
248
+ "created": "2011-12-15T15:34:48.000+1300",
249
+ "description": null,
250
+ "priority": {
251
+ "self": "http://localhost:2990/jira/rest/api/2/priority/3",
252
+ "iconUrl": "http://localhost:2990/jira/images/icons/priority_major.gif",
253
+ "name": "Major",
254
+ "id": "3"
255
+ },
256
+ "duedate": null,
257
+ "issuelinks": [],
258
+ "watches": {
259
+ "self": "http://localhost:2990/jira/rest/api/2/issue/SAMPLEPROJECT-11/watchers",
260
+ "watchCount": 0,
261
+ "isWatching": false
262
+ },
263
+ "subtasks": [],
264
+ "status": {
265
+ "self": "http://localhost:2990/jira/rest/api/2/status/1",
266
+ "description": "The issue is open and ready for the assignee to start work on it.",
267
+ "iconUrl": "http://localhost:2990/jira/images/icons/status_open.gif",
268
+ "name": "Open",
269
+ "id": "1"
270
+ },
271
+ "labels": [],
272
+ "assignee": {
273
+ "self": "http://localhost:2990/jira/rest/api/2/user?username=admin",
274
+ "name": "admin",
275
+ "emailAddress": "admin@example.com",
276
+ "avatarUrls": {
277
+ "16x16": "http://localhost:2990/jira/secure/useravatar?size=small&avatarId=10122",
278
+ "48x48": "http://localhost:2990/jira/secure/useravatar?avatarId=10122"
279
+ },
280
+ "displayName": "admin",
281
+ "active": true
282
+ },
283
+ "workratio": -1,
284
+ "aggregatetimeestimate": null,
285
+ "project": {
286
+ "self": "http://localhost:2990/jira/rest/api/2/project/SAMPLEPROJECT",
287
+ "id": "10001",
288
+ "key": "SAMPLEPROJECT",
289
+ "name": "Sample Project for Developing RoR RESTful API",
290
+ "avatarUrls": {
291
+ "16x16": "http://localhost:2990/jira/secure/projectavatar?size=small&pid=10001&avatarId=10011",
292
+ "48x48": "http://localhost:2990/jira/secure/projectavatar?pid=10001&avatarId=10011"
293
+ }
294
+ },
295
+ "versions": [],
296
+ "environment": null,
297
+ "timeestimate": null,
298
+ "aggregateprogress": {
299
+ "progress": 0,
300
+ "total": 0
301
+ },
302
+ "components": [],
303
+ "timeoriginalestimate": null,
304
+ "aggregatetimespent": null
305
+ }
306
+ },
307
+ {
308
+ "expand": "editmeta,renderedFields,transitions,changelog",
309
+ "id": "10011",
310
+ "self": "http://localhost:2990/jira/rest/api/2/issue/10011",
311
+ "key": "SAMPLEPROJECT-10",
312
+ "fields": {
313
+ "summary": "blarg from in example.rb",
314
+ "progress": {
315
+ "progress": 0,
316
+ "total": 0
317
+ },
318
+ "issuetype": {
319
+ "self": "http://localhost:2990/jira/rest/api/2/issuetype/3",
320
+ "id": "3",
321
+ "description": "A task that needs to be done.",
322
+ "iconUrl": "http://localhost:2990/jira/images/icons/task.gif",
323
+ "name": "Task",
324
+ "subtask": false
325
+ },
326
+ "votes": {
327
+ "self": "http://localhost:2990/jira/rest/api/2/issue/SAMPLEPROJECT-10/votes",
328
+ "votes": 0,
329
+ "hasVoted": false
330
+ },
331
+ "resolution": null,
332
+ "fixVersions": [],
333
+ "resolutiondate": null,
334
+ "timespent": null,
335
+ "reporter": {
336
+ "self": "http://localhost:2990/jira/rest/api/2/user?username=admin",
337
+ "name": "admin",
338
+ "emailAddress": "admin@example.com",
339
+ "avatarUrls": {
340
+ "16x16": "http://localhost:2990/jira/secure/useravatar?size=small&avatarId=10122",
341
+ "48x48": "http://localhost:2990/jira/secure/useravatar?avatarId=10122"
342
+ },
343
+ "displayName": "admin",
344
+ "active": true
345
+ },
346
+ "aggregatetimeoriginalestimate": null,
347
+ "updated": "2011-12-15T15:11:57.000+1300",
348
+ "created": "2011-12-15T15:11:57.000+1300",
349
+ "description": null,
350
+ "priority": {
351
+ "self": "http://localhost:2990/jira/rest/api/2/priority/3",
352
+ "iconUrl": "http://localhost:2990/jira/images/icons/priority_major.gif",
353
+ "name": "Major",
354
+ "id": "3"
355
+ },
356
+ "duedate": null,
357
+ "issuelinks": [],
358
+ "watches": {
359
+ "self": "http://localhost:2990/jira/rest/api/2/issue/SAMPLEPROJECT-10/watchers",
360
+ "watchCount": 0,
361
+ "isWatching": false
362
+ },
363
+ "subtasks": [],
364
+ "status": {
365
+ "self": "http://localhost:2990/jira/rest/api/2/status/1",
366
+ "description": "The issue is open and ready for the assignee to start work on it.",
367
+ "iconUrl": "http://localhost:2990/jira/images/icons/status_open.gif",
368
+ "name": "Open",
369
+ "id": "1"
370
+ },
371
+ "labels": [],
372
+ "assignee": {
373
+ "self": "http://localhost:2990/jira/rest/api/2/user?username=admin",
374
+ "name": "admin",
375
+ "emailAddress": "admin@example.com",
376
+ "avatarUrls": {
377
+ "16x16": "http://localhost:2990/jira/secure/useravatar?size=small&avatarId=10122",
378
+ "48x48": "http://localhost:2990/jira/secure/useravatar?avatarId=10122"
379
+ },
380
+ "displayName": "admin",
381
+ "active": true
382
+ },
383
+ "workratio": -1,
384
+ "aggregatetimeestimate": null,
385
+ "project": {
386
+ "self": "http://localhost:2990/jira/rest/api/2/project/SAMPLEPROJECT",
387
+ "id": "10001",
388
+ "key": "SAMPLEPROJECT",
389
+ "name": "Sample Project for Developing RoR RESTful API",
390
+ "avatarUrls": {
391
+ "16x16": "http://localhost:2990/jira/secure/projectavatar?size=small&pid=10001&avatarId=10011",
392
+ "48x48": "http://localhost:2990/jira/secure/projectavatar?pid=10001&avatarId=10011"
393
+ }
394
+ },
395
+ "versions": [],
396
+ "environment": null,
397
+ "timeestimate": null,
398
+ "aggregateprogress": {
399
+ "progress": 0,
400
+ "total": 0
401
+ },
402
+ "components": [],
403
+ "timeoriginalestimate": null,
404
+ "aggregatetimespent": null
405
+ }
406
+ },
407
+ {
408
+ "expand": "editmeta,renderedFields,transitions,changelog",
409
+ "id": "10010",
410
+ "self": "http://localhost:2990/jira/rest/api/2/issue/10010",
411
+ "key": "SAMPLEPROJECT-9",
412
+ "fields": {
413
+ "summary": "blarg from in example.rb",
414
+ "progress": {
415
+ "progress": 0,
416
+ "total": 0
417
+ },
418
+ "issuetype": {
419
+ "self": "http://localhost:2990/jira/rest/api/2/issuetype/3",
420
+ "id": "3",
421
+ "description": "A task that needs to be done.",
422
+ "iconUrl": "http://localhost:2990/jira/images/icons/task.gif",
423
+ "name": "Task",
424
+ "subtask": false
425
+ },
426
+ "votes": {
427
+ "self": "http://localhost:2990/jira/rest/api/2/issue/SAMPLEPROJECT-9/votes",
428
+ "votes": 0,
429
+ "hasVoted": false
430
+ },
431
+ "resolution": null,
432
+ "fixVersions": [],
433
+ "resolutiondate": null,
434
+ "timespent": null,
435
+ "reporter": {
436
+ "self": "http://localhost:2990/jira/rest/api/2/user?username=admin",
437
+ "name": "admin",
438
+ "emailAddress": "admin@example.com",
439
+ "avatarUrls": {
440
+ "16x16": "http://localhost:2990/jira/secure/useravatar?size=small&avatarId=10122",
441
+ "48x48": "http://localhost:2990/jira/secure/useravatar?avatarId=10122"
442
+ },
443
+ "displayName": "admin",
444
+ "active": true
445
+ },
446
+ "aggregatetimeoriginalestimate": null,
447
+ "updated": "2011-12-15T15:11:45.000+1300",
448
+ "created": "2011-12-15T15:11:45.000+1300",
449
+ "description": null,
450
+ "priority": {
451
+ "self": "http://localhost:2990/jira/rest/api/2/priority/3",
452
+ "iconUrl": "http://localhost:2990/jira/images/icons/priority_major.gif",
453
+ "name": "Major",
454
+ "id": "3"
455
+ },
456
+ "duedate": null,
457
+ "issuelinks": [],
458
+ "watches": {
459
+ "self": "http://localhost:2990/jira/rest/api/2/issue/SAMPLEPROJECT-9/watchers",
460
+ "watchCount": 0,
461
+ "isWatching": false
462
+ },
463
+ "subtasks": [],
464
+ "status": {
465
+ "self": "http://localhost:2990/jira/rest/api/2/status/1",
466
+ "description": "The issue is open and ready for the assignee to start work on it.",
467
+ "iconUrl": "http://localhost:2990/jira/images/icons/status_open.gif",
468
+ "name": "Open",
469
+ "id": "1"
470
+ },
471
+ "labels": [],
472
+ "assignee": {
473
+ "self": "http://localhost:2990/jira/rest/api/2/user?username=admin",
474
+ "name": "admin",
475
+ "emailAddress": "admin@example.com",
476
+ "avatarUrls": {
477
+ "16x16": "http://localhost:2990/jira/secure/useravatar?size=small&avatarId=10122",
478
+ "48x48": "http://localhost:2990/jira/secure/useravatar?avatarId=10122"
479
+ },
480
+ "displayName": "admin",
481
+ "active": true
482
+ },
483
+ "workratio": -1,
484
+ "aggregatetimeestimate": null,
485
+ "project": {
486
+ "self": "http://localhost:2990/jira/rest/api/2/project/SAMPLEPROJECT",
487
+ "id": "10001",
488
+ "key": "SAMPLEPROJECT",
489
+ "name": "Sample Project for Developing RoR RESTful API",
490
+ "avatarUrls": {
491
+ "16x16": "http://localhost:2990/jira/secure/projectavatar?size=small&pid=10001&avatarId=10011",
492
+ "48x48": "http://localhost:2990/jira/secure/projectavatar?pid=10001&avatarId=10011"
493
+ }
494
+ },
495
+ "versions": [],
496
+ "environment": null,
497
+ "timeestimate": null,
498
+ "aggregateprogress": {
499
+ "progress": 0,
500
+ "total": 0
501
+ },
502
+ "components": [],
503
+ "timeoriginalestimate": null,
504
+ "aggregatetimespent": null
505
+ }
506
+ },
507
+ {
508
+ "expand": "editmeta,renderedFields,transitions,changelog",
509
+ "id": "10009",
510
+ "self": "http://localhost:2990/jira/rest/api/2/issue/10009",
511
+ "key": "SAMPLEPROJECT-8",
512
+ "fields": {
513
+ "summary": "blarg from in example.rb",
514
+ "progress": {
515
+ "progress": 0,
516
+ "total": 0
517
+ },
518
+ "issuetype": {
519
+ "self": "http://localhost:2990/jira/rest/api/2/issuetype/3",
520
+ "id": "3",
521
+ "description": "A task that needs to be done.",
522
+ "iconUrl": "http://localhost:2990/jira/images/icons/task.gif",
523
+ "name": "Task",
524
+ "subtask": false
525
+ },
526
+ "votes": {
527
+ "self": "http://localhost:2990/jira/rest/api/2/issue/SAMPLEPROJECT-8/votes",
528
+ "votes": 0,
529
+ "hasVoted": false
530
+ },
531
+ "resolution": null,
532
+ "fixVersions": [],
533
+ "resolutiondate": null,
534
+ "timespent": null,
535
+ "reporter": {
536
+ "self": "http://localhost:2990/jira/rest/api/2/user?username=admin",
537
+ "name": "admin",
538
+ "emailAddress": "admin@example.com",
539
+ "avatarUrls": {
540
+ "16x16": "http://localhost:2990/jira/secure/useravatar?size=small&avatarId=10122",
541
+ "48x48": "http://localhost:2990/jira/secure/useravatar?avatarId=10122"
542
+ },
543
+ "displayName": "admin",
544
+ "active": true
545
+ },
546
+ "aggregatetimeoriginalestimate": null,
547
+ "updated": "2011-12-15T14:19:49.000+1300",
548
+ "created": "2011-12-15T14:19:49.000+1300",
549
+ "description": null,
550
+ "priority": {
551
+ "self": "http://localhost:2990/jira/rest/api/2/priority/3",
552
+ "iconUrl": "http://localhost:2990/jira/images/icons/priority_major.gif",
553
+ "name": "Major",
554
+ "id": "3"
555
+ },
556
+ "duedate": null,
557
+ "issuelinks": [],
558
+ "watches": {
559
+ "self": "http://localhost:2990/jira/rest/api/2/issue/SAMPLEPROJECT-8/watchers",
560
+ "watchCount": 0,
561
+ "isWatching": false
562
+ },
563
+ "subtasks": [],
564
+ "status": {
565
+ "self": "http://localhost:2990/jira/rest/api/2/status/1",
566
+ "description": "The issue is open and ready for the assignee to start work on it.",
567
+ "iconUrl": "http://localhost:2990/jira/images/icons/status_open.gif",
568
+ "name": "Open",
569
+ "id": "1"
570
+ },
571
+ "labels": [],
572
+ "assignee": {
573
+ "self": "http://localhost:2990/jira/rest/api/2/user?username=admin",
574
+ "name": "admin",
575
+ "emailAddress": "admin@example.com",
576
+ "avatarUrls": {
577
+ "16x16": "http://localhost:2990/jira/secure/useravatar?size=small&avatarId=10122",
578
+ "48x48": "http://localhost:2990/jira/secure/useravatar?avatarId=10122"
579
+ },
580
+ "displayName": "admin",
581
+ "active": true
582
+ },
583
+ "workratio": -1,
584
+ "aggregatetimeestimate": null,
585
+ "project": {
586
+ "self": "http://localhost:2990/jira/rest/api/2/project/SAMPLEPROJECT",
587
+ "id": "10001",
588
+ "key": "SAMPLEPROJECT",
589
+ "name": "Sample Project for Developing RoR RESTful API",
590
+ "avatarUrls": {
591
+ "16x16": "http://localhost:2990/jira/secure/projectavatar?size=small&pid=10001&avatarId=10011",
592
+ "48x48": "http://localhost:2990/jira/secure/projectavatar?pid=10001&avatarId=10011"
593
+ }
594
+ },
595
+ "versions": [],
596
+ "environment": null,
597
+ "timeestimate": null,
598
+ "aggregateprogress": {
599
+ "progress": 0,
600
+ "total": 0
601
+ },
602
+ "components": [],
603
+ "timeoriginalestimate": null,
604
+ "aggregatetimespent": null
605
+ }
606
+ },
607
+ {
608
+ "expand": "editmeta,renderedFields,transitions,changelog",
609
+ "id": "10008",
610
+ "self": "http://localhost:2990/jira/rest/api/2/issue/10008",
611
+ "key": "SAMPLEPROJECT-7",
612
+ "fields": {
613
+ "summary": "blarg from in example.rb",
614
+ "progress": {
615
+ "progress": 0,
616
+ "total": 0
617
+ },
618
+ "issuetype": {
619
+ "self": "http://localhost:2990/jira/rest/api/2/issuetype/3",
620
+ "id": "3",
621
+ "description": "A task that needs to be done.",
622
+ "iconUrl": "http://localhost:2990/jira/images/icons/task.gif",
623
+ "name": "Task",
624
+ "subtask": false
625
+ },
626
+ "votes": {
627
+ "self": "http://localhost:2990/jira/rest/api/2/issue/SAMPLEPROJECT-7/votes",
628
+ "votes": 0,
629
+ "hasVoted": false
630
+ },
631
+ "resolution": null,
632
+ "fixVersions": [],
633
+ "resolutiondate": null,
634
+ "timespent": null,
635
+ "reporter": {
636
+ "self": "http://localhost:2990/jira/rest/api/2/user?username=admin",
637
+ "name": "admin",
638
+ "emailAddress": "admin@example.com",
639
+ "avatarUrls": {
640
+ "16x16": "http://localhost:2990/jira/secure/useravatar?size=small&avatarId=10122",
641
+ "48x48": "http://localhost:2990/jira/secure/useravatar?avatarId=10122"
642
+ },
643
+ "displayName": "admin",
644
+ "active": true
645
+ },
646
+ "aggregatetimeoriginalestimate": null,
647
+ "updated": "2011-12-14T14:50:38.000+1300",
648
+ "created": "2011-12-14T14:50:38.000+1300",
649
+ "description": null,
650
+ "priority": {
651
+ "self": "http://localhost:2990/jira/rest/api/2/priority/3",
652
+ "iconUrl": "http://localhost:2990/jira/images/icons/priority_major.gif",
653
+ "name": "Major",
654
+ "id": "3"
655
+ },
656
+ "duedate": null,
657
+ "issuelinks": [],
658
+ "watches": {
659
+ "self": "http://localhost:2990/jira/rest/api/2/issue/SAMPLEPROJECT-7/watchers",
660
+ "watchCount": 0,
661
+ "isWatching": false
662
+ },
663
+ "subtasks": [],
664
+ "status": {
665
+ "self": "http://localhost:2990/jira/rest/api/2/status/1",
666
+ "description": "The issue is open and ready for the assignee to start work on it.",
667
+ "iconUrl": "http://localhost:2990/jira/images/icons/status_open.gif",
668
+ "name": "Open",
669
+ "id": "1"
670
+ },
671
+ "labels": [],
672
+ "assignee": {
673
+ "self": "http://localhost:2990/jira/rest/api/2/user?username=admin",
674
+ "name": "admin",
675
+ "emailAddress": "admin@example.com",
676
+ "avatarUrls": {
677
+ "16x16": "http://localhost:2990/jira/secure/useravatar?size=small&avatarId=10122",
678
+ "48x48": "http://localhost:2990/jira/secure/useravatar?avatarId=10122"
679
+ },
680
+ "displayName": "admin",
681
+ "active": true
682
+ },
683
+ "workratio": -1,
684
+ "aggregatetimeestimate": null,
685
+ "project": {
686
+ "self": "http://localhost:2990/jira/rest/api/2/project/SAMPLEPROJECT",
687
+ "id": "10001",
688
+ "key": "SAMPLEPROJECT",
689
+ "name": "Sample Project for Developing RoR RESTful API",
690
+ "avatarUrls": {
691
+ "16x16": "http://localhost:2990/jira/secure/projectavatar?size=small&pid=10001&avatarId=10011",
692
+ "48x48": "http://localhost:2990/jira/secure/projectavatar?pid=10001&avatarId=10011"
693
+ }
694
+ },
695
+ "versions": [],
696
+ "environment": null,
697
+ "timeestimate": null,
698
+ "aggregateprogress": {
699
+ "progress": 0,
700
+ "total": 0
701
+ },
702
+ "components": [],
703
+ "timeoriginalestimate": null,
704
+ "aggregatetimespent": null
705
+ }
706
+ },
707
+ {
708
+ "expand": "editmeta,renderedFields,transitions,changelog",
709
+ "id": "10007",
710
+ "self": "http://localhost:2990/jira/rest/api/2/issue/10007",
711
+ "key": "SAMPLEPROJECT-6",
712
+ "fields": {
713
+ "summary": "blarg from in example.rb",
714
+ "progress": {
715
+ "progress": 0,
716
+ "total": 0
717
+ },
718
+ "issuetype": {
719
+ "self": "http://localhost:2990/jira/rest/api/2/issuetype/3",
720
+ "id": "3",
721
+ "description": "A task that needs to be done.",
722
+ "iconUrl": "http://localhost:2990/jira/images/icons/task.gif",
723
+ "name": "Task",
724
+ "subtask": false
725
+ },
726
+ "votes": {
727
+ "self": "http://localhost:2990/jira/rest/api/2/issue/SAMPLEPROJECT-6/votes",
728
+ "votes": 0,
729
+ "hasVoted": false
730
+ },
731
+ "resolution": null,
732
+ "fixVersions": [],
733
+ "resolutiondate": null,
734
+ "timespent": null,
735
+ "reporter": {
736
+ "self": "http://localhost:2990/jira/rest/api/2/user?username=admin",
737
+ "name": "admin",
738
+ "emailAddress": "admin@example.com",
739
+ "avatarUrls": {
740
+ "16x16": "http://localhost:2990/jira/secure/useravatar?size=small&avatarId=10122",
741
+ "48x48": "http://localhost:2990/jira/secure/useravatar?avatarId=10122"
742
+ },
743
+ "displayName": "admin",
744
+ "active": true
745
+ },
746
+ "aggregatetimeoriginalestimate": null,
747
+ "updated": "2011-12-14T14:49:35.000+1300",
748
+ "created": "2011-12-14T14:49:35.000+1300",
749
+ "description": null,
750
+ "priority": {
751
+ "self": "http://localhost:2990/jira/rest/api/2/priority/3",
752
+ "iconUrl": "http://localhost:2990/jira/images/icons/priority_major.gif",
753
+ "name": "Major",
754
+ "id": "3"
755
+ },
756
+ "duedate": null,
757
+ "issuelinks": [],
758
+ "watches": {
759
+ "self": "http://localhost:2990/jira/rest/api/2/issue/SAMPLEPROJECT-6/watchers",
760
+ "watchCount": 0,
761
+ "isWatching": false
762
+ },
763
+ "subtasks": [],
764
+ "status": {
765
+ "self": "http://localhost:2990/jira/rest/api/2/status/1",
766
+ "description": "The issue is open and ready for the assignee to start work on it.",
767
+ "iconUrl": "http://localhost:2990/jira/images/icons/status_open.gif",
768
+ "name": "Open",
769
+ "id": "1"
770
+ },
771
+ "labels": [],
772
+ "assignee": {
773
+ "self": "http://localhost:2990/jira/rest/api/2/user?username=admin",
774
+ "name": "admin",
775
+ "emailAddress": "admin@example.com",
776
+ "avatarUrls": {
777
+ "16x16": "http://localhost:2990/jira/secure/useravatar?size=small&avatarId=10122",
778
+ "48x48": "http://localhost:2990/jira/secure/useravatar?avatarId=10122"
779
+ },
780
+ "displayName": "admin",
781
+ "active": true
782
+ },
783
+ "workratio": -1,
784
+ "aggregatetimeestimate": null,
785
+ "project": {
786
+ "self": "http://localhost:2990/jira/rest/api/2/project/SAMPLEPROJECT",
787
+ "id": "10001",
788
+ "key": "SAMPLEPROJECT",
789
+ "name": "Sample Project for Developing RoR RESTful API",
790
+ "avatarUrls": {
791
+ "16x16": "http://localhost:2990/jira/secure/projectavatar?size=small&pid=10001&avatarId=10011",
792
+ "48x48": "http://localhost:2990/jira/secure/projectavatar?pid=10001&avatarId=10011"
793
+ }
794
+ },
795
+ "versions": [],
796
+ "environment": null,
797
+ "timeestimate": null,
798
+ "aggregateprogress": {
799
+ "progress": 0,
800
+ "total": 0
801
+ },
802
+ "components": [],
803
+ "timeoriginalestimate": null,
804
+ "aggregatetimespent": null
805
+ }
806
+ },
807
+ {
808
+ "expand": "editmeta,renderedFields,transitions,changelog",
809
+ "id": "10006",
810
+ "self": "http://localhost:2990/jira/rest/api/2/issue/10006",
811
+ "key": "SAMPLEPROJECT-5",
812
+ "fields": {
813
+ "summary": "blah",
814
+ "progress": {
815
+ "progress": 0,
816
+ "total": 0
817
+ },
818
+ "issuetype": {
819
+ "self": "http://localhost:2990/jira/rest/api/2/issuetype/3",
820
+ "id": "3",
821
+ "description": "A task that needs to be done.",
822
+ "iconUrl": "http://localhost:2990/jira/images/icons/task.gif",
823
+ "name": "Task",
824
+ "subtask": false
825
+ },
826
+ "votes": {
827
+ "self": "http://localhost:2990/jira/rest/api/2/issue/SAMPLEPROJECT-5/votes",
828
+ "votes": 0,
829
+ "hasVoted": false
830
+ },
831
+ "resolution": null,
832
+ "fixVersions": [],
833
+ "resolutiondate": null,
834
+ "timespent": null,
835
+ "reporter": {
836
+ "self": "http://localhost:2990/jira/rest/api/2/user?username=admin",
837
+ "name": "admin",
838
+ "emailAddress": "admin@example.com",
839
+ "avatarUrls": {
840
+ "16x16": "http://localhost:2990/jira/secure/useravatar?size=small&avatarId=10122",
841
+ "48x48": "http://localhost:2990/jira/secure/useravatar?avatarId=10122"
842
+ },
843
+ "displayName": "admin",
844
+ "active": true
845
+ },
846
+ "aggregatetimeoriginalestimate": null,
847
+ "updated": "2011-12-14T14:46:58.000+1300",
848
+ "created": "2011-12-14T14:46:58.000+1300",
849
+ "description": null,
850
+ "priority": {
851
+ "self": "http://localhost:2990/jira/rest/api/2/priority/3",
852
+ "iconUrl": "http://localhost:2990/jira/images/icons/priority_major.gif",
853
+ "name": "Major",
854
+ "id": "3"
855
+ },
856
+ "duedate": null,
857
+ "issuelinks": [],
858
+ "watches": {
859
+ "self": "http://localhost:2990/jira/rest/api/2/issue/SAMPLEPROJECT-5/watchers",
860
+ "watchCount": 0,
861
+ "isWatching": false
862
+ },
863
+ "subtasks": [],
864
+ "status": {
865
+ "self": "http://localhost:2990/jira/rest/api/2/status/1",
866
+ "description": "The issue is open and ready for the assignee to start work on it.",
867
+ "iconUrl": "http://localhost:2990/jira/images/icons/status_open.gif",
868
+ "name": "Open",
869
+ "id": "1"
870
+ },
871
+ "labels": [],
872
+ "assignee": {
873
+ "self": "http://localhost:2990/jira/rest/api/2/user?username=admin",
874
+ "name": "admin",
875
+ "emailAddress": "admin@example.com",
876
+ "avatarUrls": {
877
+ "16x16": "http://localhost:2990/jira/secure/useravatar?size=small&avatarId=10122",
878
+ "48x48": "http://localhost:2990/jira/secure/useravatar?avatarId=10122"
879
+ },
880
+ "displayName": "admin",
881
+ "active": true
882
+ },
883
+ "workratio": -1,
884
+ "aggregatetimeestimate": null,
885
+ "project": {
886
+ "self": "http://localhost:2990/jira/rest/api/2/project/SAMPLEPROJECT",
887
+ "id": "10001",
888
+ "key": "SAMPLEPROJECT",
889
+ "name": "Sample Project for Developing RoR RESTful API",
890
+ "avatarUrls": {
891
+ "16x16": "http://localhost:2990/jira/secure/projectavatar?size=small&pid=10001&avatarId=10011",
892
+ "48x48": "http://localhost:2990/jira/secure/projectavatar?pid=10001&avatarId=10011"
893
+ }
894
+ },
895
+ "versions": [],
896
+ "environment": null,
897
+ "timeestimate": null,
898
+ "aggregateprogress": {
899
+ "progress": 0,
900
+ "total": 0
901
+ },
902
+ "components": [],
903
+ "timeoriginalestimate": null,
904
+ "aggregatetimespent": null
905
+ }
906
+ },
907
+ {
908
+ "expand": "editmeta,renderedFields,transitions,changelog",
909
+ "id": "10005",
910
+ "self": "http://localhost:2990/jira/rest/api/2/issue/10005",
911
+ "key": "SAMPLEPROJECT-4",
912
+ "fields": {
913
+ "summary": "blah",
914
+ "progress": {
915
+ "progress": 0,
916
+ "total": 0
917
+ },
918
+ "issuetype": {
919
+ "self": "http://localhost:2990/jira/rest/api/2/issuetype/3",
920
+ "id": "3",
921
+ "description": "A task that needs to be done.",
922
+ "iconUrl": "http://localhost:2990/jira/images/icons/task.gif",
923
+ "name": "Task",
924
+ "subtask": false
925
+ },
926
+ "votes": {
927
+ "self": "http://localhost:2990/jira/rest/api/2/issue/SAMPLEPROJECT-4/votes",
928
+ "votes": 0,
929
+ "hasVoted": false
930
+ },
931
+ "resolution": null,
932
+ "fixVersions": [],
933
+ "resolutiondate": null,
934
+ "timespent": null,
935
+ "reporter": {
936
+ "self": "http://localhost:2990/jira/rest/api/2/user?username=admin",
937
+ "name": "admin",
938
+ "emailAddress": "admin@example.com",
939
+ "avatarUrls": {
940
+ "16x16": "http://localhost:2990/jira/secure/useravatar?size=small&avatarId=10122",
941
+ "48x48": "http://localhost:2990/jira/secure/useravatar?avatarId=10122"
942
+ },
943
+ "displayName": "admin",
944
+ "active": true
945
+ },
946
+ "aggregatetimeoriginalestimate": null,
947
+ "updated": "2011-12-14T12:11:48.000+1300",
948
+ "created": "2011-12-14T12:11:48.000+1300",
949
+ "description": null,
950
+ "priority": {
951
+ "self": "http://localhost:2990/jira/rest/api/2/priority/3",
952
+ "iconUrl": "http://localhost:2990/jira/images/icons/priority_major.gif",
953
+ "name": "Major",
954
+ "id": "3"
955
+ },
956
+ "duedate": null,
957
+ "issuelinks": [],
958
+ "watches": {
959
+ "self": "http://localhost:2990/jira/rest/api/2/issue/SAMPLEPROJECT-4/watchers",
960
+ "watchCount": 0,
961
+ "isWatching": false
962
+ },
963
+ "subtasks": [],
964
+ "status": {
965
+ "self": "http://localhost:2990/jira/rest/api/2/status/1",
966
+ "description": "The issue is open and ready for the assignee to start work on it.",
967
+ "iconUrl": "http://localhost:2990/jira/images/icons/status_open.gif",
968
+ "name": "Open",
969
+ "id": "1"
970
+ },
971
+ "labels": [],
972
+ "assignee": {
973
+ "self": "http://localhost:2990/jira/rest/api/2/user?username=admin",
974
+ "name": "admin",
975
+ "emailAddress": "admin@example.com",
976
+ "avatarUrls": {
977
+ "16x16": "http://localhost:2990/jira/secure/useravatar?size=small&avatarId=10122",
978
+ "48x48": "http://localhost:2990/jira/secure/useravatar?avatarId=10122"
979
+ },
980
+ "displayName": "admin",
981
+ "active": true
982
+ },
983
+ "workratio": -1,
984
+ "aggregatetimeestimate": null,
985
+ "project": {
986
+ "self": "http://localhost:2990/jira/rest/api/2/project/SAMPLEPROJECT",
987
+ "id": "10001",
988
+ "key": "SAMPLEPROJECT",
989
+ "name": "Sample Project for Developing RoR RESTful API",
990
+ "avatarUrls": {
991
+ "16x16": "http://localhost:2990/jira/secure/projectavatar?size=small&pid=10001&avatarId=10011",
992
+ "48x48": "http://localhost:2990/jira/secure/projectavatar?pid=10001&avatarId=10011"
993
+ }
994
+ },
995
+ "versions": [],
996
+ "environment": null,
997
+ "timeestimate": null,
998
+ "aggregateprogress": {
999
+ "progress": 0,
1000
+ "total": 0
1001
+ },
1002
+ "components": [],
1003
+ "timeoriginalestimate": null,
1004
+ "aggregatetimespent": null
1005
+ }
1006
+ },
1007
+ {
1008
+ "expand": "editmeta,renderedFields,transitions,changelog",
1009
+ "id": "10002",
1010
+ "self": "http://localhost:2990/jira/rest/api/2/issue/10002",
1011
+ "key": "SAMPLEPROJECT-1",
1012
+ "fields": {
1013
+ "summary": "MOOOOOOARRR NINJAAAA!",
1014
+ "progress": {
1015
+ "progress": 0,
1016
+ "total": 0
1017
+ },
1018
+ "issuetype": {
1019
+ "self": "http://localhost:2990/jira/rest/api/2/issuetype/3",
1020
+ "id": "3",
1021
+ "description": "A task that needs to be done.",
1022
+ "iconUrl": "http://localhost:2990/jira/images/icons/task.gif",
1023
+ "name": "Task",
1024
+ "subtask": false
1025
+ },
1026
+ "votes": {
1027
+ "self": "http://localhost:2990/jira/rest/api/2/issue/SAMPLEPROJECT-1/votes",
1028
+ "votes": 0,
1029
+ "hasVoted": false
1030
+ },
1031
+ "resolution": null,
1032
+ "fixVersions": [],
1033
+ "resolutiondate": null,
1034
+ "timespent": null,
1035
+ "reporter": {
1036
+ "self": "http://localhost:2990/jira/rest/api/2/user?username=admin",
1037
+ "name": "admin",
1038
+ "emailAddress": "admin@example.com",
1039
+ "avatarUrls": {
1040
+ "16x16": "http://localhost:2990/jira/secure/useravatar?size=small&avatarId=10122",
1041
+ "48x48": "http://localhost:2990/jira/secure/useravatar?avatarId=10122"
1042
+ },
1043
+ "displayName": "admin",
1044
+ "active": true
1045
+ },
1046
+ "aggregatetimeoriginalestimate": null,
1047
+ "updated": "2011-12-15T15:37:33.000+1300",
1048
+ "created": "2011-12-14T10:26:06.000+1300",
1049
+ "description": null,
1050
+ "priority": {
1051
+ "self": "http://localhost:2990/jira/rest/api/2/priority/3",
1052
+ "iconUrl": "http://localhost:2990/jira/images/icons/priority_major.gif",
1053
+ "name": "Major",
1054
+ "id": "3"
1055
+ },
1056
+ "duedate": "2011-12-14",
1057
+ "issuelinks": [],
1058
+ "watches": {
1059
+ "self": "http://localhost:2990/jira/rest/api/2/issue/SAMPLEPROJECT-1/watchers",
1060
+ "watchCount": 0,
1061
+ "isWatching": false
1062
+ },
1063
+ "subtasks": [],
1064
+ "status": {
1065
+ "self": "http://localhost:2990/jira/rest/api/2/status/1",
1066
+ "description": "The issue is open and ready for the assignee to start work on it.",
1067
+ "iconUrl": "http://localhost:2990/jira/images/icons/status_open.gif",
1068
+ "name": "Open",
1069
+ "id": "1"
1070
+ },
1071
+ "labels": [],
1072
+ "assignee": {
1073
+ "self": "http://localhost:2990/jira/rest/api/2/user?username=admin",
1074
+ "name": "admin",
1075
+ "emailAddress": "admin@example.com",
1076
+ "avatarUrls": {
1077
+ "16x16": "http://localhost:2990/jira/secure/useravatar?size=small&avatarId=10122",
1078
+ "48x48": "http://localhost:2990/jira/secure/useravatar?avatarId=10122"
1079
+ },
1080
+ "displayName": "admin",
1081
+ "active": true
1082
+ },
1083
+ "workratio": -1,
1084
+ "aggregatetimeestimate": null,
1085
+ "project": {
1086
+ "self": "http://localhost:2990/jira/rest/api/2/project/SAMPLEPROJECT",
1087
+ "id": "10001",
1088
+ "key": "SAMPLEPROJECT",
1089
+ "name": "Sample Project for Developing RoR RESTful API",
1090
+ "avatarUrls": {
1091
+ "16x16": "http://localhost:2990/jira/secure/projectavatar?size=small&pid=10001&avatarId=10011",
1092
+ "48x48": "http://localhost:2990/jira/secure/projectavatar?pid=10001&avatarId=10011"
1093
+ }
1094
+ },
1095
+ "versions": [],
1096
+ "environment": null,
1097
+ "timeestimate": null,
1098
+ "aggregateprogress": {
1099
+ "progress": 0,
1100
+ "total": 0
1101
+ },
1102
+ "components": [],
1103
+ "timeoriginalestimate": null,
1104
+ "aggregatetimespent": null
1105
+ }
1106
+ }
1107
+ ]
1108
+ }