lex-aha 0.1.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.
- checksums.yaml +7 -0
- data/.github/workflows/ci.yml +16 -0
- data/.gitignore +12 -0
- data/.rspec +3 -0
- data/.rubocop.yml +66 -0
- data/CHANGELOG.md +12 -0
- data/CLAUDE.md +88 -0
- data/Dockerfile +6 -0
- data/Gemfile +12 -0
- data/LICENSE +21 -0
- data/README.md +62 -0
- data/lex-aha.gemspec +30 -0
- data/lib/legion/extensions/aha/base_client.rb +23 -0
- data/lib/legion/extensions/aha/core/client.rb +42 -0
- data/lib/legion/extensions/aha/core/runners/admin.rb +65 -0
- data/lib/legion/extensions/aha/core/runners/attachments.rb +39 -0
- data/lib/legion/extensions/aha/core/runners/audits.rb +37 -0
- data/lib/legion/extensions/aha/core/runners/comments.rb +66 -0
- data/lib/legion/extensions/aha/core/runners/custom_fields.rb +59 -0
- data/lib/legion/extensions/aha/core/runners/custom_table_records.rb +42 -0
- data/lib/legion/extensions/aha/core/runners/integrations.rb +49 -0
- data/lib/legion/extensions/aha/core/runners/me.rb +35 -0
- data/lib/legion/extensions/aha/core/runners/record_links.rb +42 -0
- data/lib/legion/extensions/aha/core/runners/teams.rb +71 -0
- data/lib/legion/extensions/aha/core/runners/todos.rb +59 -0
- data/lib/legion/extensions/aha/core/runners/users.rb +49 -0
- data/lib/legion/extensions/aha/core/runners/webhooks.rb +25 -0
- data/lib/legion/extensions/aha/core/runners/workflows.rb +30 -0
- data/lib/legion/extensions/aha/core.rb +26 -0
- data/lib/legion/extensions/aha/helpers/client.rb +23 -0
- data/lib/legion/extensions/aha/ideas/client.rb +30 -0
- data/lib/legion/extensions/aha/ideas/runners/idea_categories.rb +25 -0
- data/lib/legion/extensions/aha/ideas/runners/idea_comments.rb +40 -0
- data/lib/legion/extensions/aha/ideas/runners/idea_organizations.rb +45 -0
- data/lib/legion/extensions/aha/ideas/runners/idea_portals.rb +30 -0
- data/lib/legion/extensions/aha/ideas/runners/idea_subscriptions.rb +40 -0
- data/lib/legion/extensions/aha/ideas/runners/idea_users.rb +45 -0
- data/lib/legion/extensions/aha/ideas/runners/idea_votes.rb +50 -0
- data/lib/legion/extensions/aha/ideas/runners/ideas.rb +55 -0
- data/lib/legion/extensions/aha/ideas.rb +20 -0
- data/lib/legion/extensions/aha/knowledge/client.rb +20 -0
- data/lib/legion/extensions/aha/knowledge/runners/knowledge_bases.rb +29 -0
- data/lib/legion/extensions/aha/knowledge/runners/notes.rb +44 -0
- data/lib/legion/extensions/aha/knowledge/runners/pages.rb +44 -0
- data/lib/legion/extensions/aha/knowledge.rb +15 -0
- data/lib/legion/extensions/aha/roadmaps/client.rb +42 -0
- data/lib/legion/extensions/aha/roadmaps/runners/capacity.rb +54 -0
- data/lib/legion/extensions/aha/roadmaps/runners/competitors.rb +44 -0
- data/lib/legion/extensions/aha/roadmaps/runners/epics.rb +59 -0
- data/lib/legion/extensions/aha/roadmaps/runners/features.rb +59 -0
- data/lib/legion/extensions/aha/roadmaps/runners/goals.rb +54 -0
- data/lib/legion/extensions/aha/roadmaps/runners/initiatives.rb +54 -0
- data/lib/legion/extensions/aha/roadmaps/runners/key_results.rb +44 -0
- data/lib/legion/extensions/aha/roadmaps/runners/personas.rb +44 -0
- data/lib/legion/extensions/aha/roadmaps/runners/products.rb +34 -0
- data/lib/legion/extensions/aha/roadmaps/runners/release_phases.rb +49 -0
- data/lib/legion/extensions/aha/roadmaps/runners/releases.rb +49 -0
- data/lib/legion/extensions/aha/roadmaps/runners/requirements.rb +44 -0
- data/lib/legion/extensions/aha/roadmaps/runners/roll_up_releases.rb +39 -0
- data/lib/legion/extensions/aha/roadmaps/runners/strategy.rb +49 -0
- data/lib/legion/extensions/aha/roadmaps.rb +26 -0
- data/lib/legion/extensions/aha/version.rb +9 -0
- data/lib/legion/extensions/aha.rb +17 -0
- metadata +122 -0
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'legion/extensions/aha/helpers/client'
|
|
4
|
+
|
|
5
|
+
module Legion
|
|
6
|
+
module Extensions
|
|
7
|
+
module Aha
|
|
8
|
+
module Ideas
|
|
9
|
+
module Runners
|
|
10
|
+
module IdeaPortals
|
|
11
|
+
extend Legion::Extensions::Aha::Helpers::Client
|
|
12
|
+
|
|
13
|
+
def list_idea_portals(**)
|
|
14
|
+
response = client(**).get('/idea_portals')
|
|
15
|
+
{ result: response.body, status: response.status }
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def list_idea_portals_in_product(product_id:, **)
|
|
19
|
+
response = client(**).get("/products/#{product_id}/idea_portals")
|
|
20
|
+
{ result: response.body, status: response.status }
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
include Legion::Extensions::Helpers::Lex if Legion::Extensions.const_defined?(:Helpers) &&
|
|
24
|
+
Legion::Extensions::Helpers.const_defined?(:Lex)
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
end
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'legion/extensions/aha/helpers/client'
|
|
4
|
+
|
|
5
|
+
module Legion
|
|
6
|
+
module Extensions
|
|
7
|
+
module Aha
|
|
8
|
+
module Ideas
|
|
9
|
+
module Runners
|
|
10
|
+
module IdeaSubscriptions
|
|
11
|
+
extend Legion::Extensions::Aha::Helpers::Client
|
|
12
|
+
|
|
13
|
+
def list_subscriptions(idea_id:, **)
|
|
14
|
+
response = client(**).get("/ideas/#{idea_id}/subscriptions")
|
|
15
|
+
{ result: response.body, status: response.status }
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def get_subscription(idea_id:, id:, **)
|
|
19
|
+
response = client(**).get("/ideas/#{idea_id}/subscriptions/#{id}")
|
|
20
|
+
{ result: response.body, status: response.status }
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def create_subscription(idea_id:, subscription:, **)
|
|
24
|
+
response = client(**).post("/ideas/#{idea_id}/subscriptions", { subscription: subscription })
|
|
25
|
+
{ result: response.body, status: response.status }
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def delete_subscription(idea_id:, id:, **)
|
|
29
|
+
response = client(**).delete("/ideas/#{idea_id}/subscriptions/#{id}")
|
|
30
|
+
{ result: response.body, status: response.status }
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
include Legion::Extensions::Helpers::Lex if Legion::Extensions.const_defined?(:Helpers) &&
|
|
34
|
+
Legion::Extensions::Helpers.const_defined?(:Lex)
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
end
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'legion/extensions/aha/helpers/client'
|
|
4
|
+
|
|
5
|
+
module Legion
|
|
6
|
+
module Extensions
|
|
7
|
+
module Aha
|
|
8
|
+
module Ideas
|
|
9
|
+
module Runners
|
|
10
|
+
module IdeaUsers
|
|
11
|
+
extend Legion::Extensions::Aha::Helpers::Client
|
|
12
|
+
|
|
13
|
+
def list_idea_users(**)
|
|
14
|
+
response = client(**).get('/idea_users')
|
|
15
|
+
{ result: response.body, status: response.status }
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def get_idea_user(id:, **)
|
|
19
|
+
response = client(**).get("/idea_users/#{id}")
|
|
20
|
+
{ result: response.body, status: response.status }
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def create_idea_user(idea_user:, **)
|
|
24
|
+
response = client(**).post('/idea_users', { idea_user: idea_user })
|
|
25
|
+
{ result: response.body, status: response.status }
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def update_idea_user(id:, idea_user:, **)
|
|
29
|
+
response = client(**).put("/idea_users/#{id}", { idea_user: idea_user })
|
|
30
|
+
{ result: response.body, status: response.status }
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def delete_idea_user(id:, **)
|
|
34
|
+
response = client(**).delete("/idea_users/#{id}")
|
|
35
|
+
{ result: response.body, status: response.status }
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
include Legion::Extensions::Helpers::Lex if Legion::Extensions.const_defined?(:Helpers) &&
|
|
39
|
+
Legion::Extensions::Helpers.const_defined?(:Lex)
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
end
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'legion/extensions/aha/helpers/client'
|
|
4
|
+
|
|
5
|
+
module Legion
|
|
6
|
+
module Extensions
|
|
7
|
+
module Aha
|
|
8
|
+
module Ideas
|
|
9
|
+
module Runners
|
|
10
|
+
module IdeaVotes
|
|
11
|
+
extend Legion::Extensions::Aha::Helpers::Client
|
|
12
|
+
|
|
13
|
+
def list_votes(idea_id:, **)
|
|
14
|
+
response = client(**).get("/ideas/#{idea_id}/endorsements")
|
|
15
|
+
{ result: response.body, status: response.status }
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def list_account_votes(**)
|
|
19
|
+
response = client(**).get('/ideas/endorsements')
|
|
20
|
+
{ result: response.body, status: response.status }
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def get_vote(idea_id:, id:, **)
|
|
24
|
+
response = client(**).get("/ideas/#{idea_id}/endorsements/#{id}")
|
|
25
|
+
{ result: response.body, status: response.status }
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def create_vote(idea_id:, endorsement:, **)
|
|
29
|
+
response = client(**).post("/ideas/#{idea_id}/endorsements", { endorsement: endorsement })
|
|
30
|
+
{ result: response.body, status: response.status }
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def update_vote(idea_id:, id:, endorsement:, **)
|
|
34
|
+
response = client(**).put("/ideas/#{idea_id}/endorsements/#{id}", { endorsement: endorsement })
|
|
35
|
+
{ result: response.body, status: response.status }
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
def delete_vote(idea_id:, id:, **)
|
|
39
|
+
response = client(**).delete("/ideas/#{idea_id}/endorsements/#{id}")
|
|
40
|
+
{ result: response.body, status: response.status }
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
include Legion::Extensions::Helpers::Lex if Legion::Extensions.const_defined?(:Helpers) &&
|
|
44
|
+
Legion::Extensions::Helpers.const_defined?(:Lex)
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
end
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'legion/extensions/aha/helpers/client'
|
|
4
|
+
|
|
5
|
+
module Legion
|
|
6
|
+
module Extensions
|
|
7
|
+
module Aha
|
|
8
|
+
module Ideas
|
|
9
|
+
module Runners
|
|
10
|
+
module Ideas
|
|
11
|
+
extend Legion::Extensions::Aha::Helpers::Client
|
|
12
|
+
|
|
13
|
+
def list_ideas(**)
|
|
14
|
+
response = client(**).get('/ideas')
|
|
15
|
+
{ result: response.body, status: response.status }
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def list_ideas_in_product(product_id:, **)
|
|
19
|
+
response = client(**).get("/products/#{product_id}/ideas")
|
|
20
|
+
{ result: response.body, status: response.status }
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def get_idea(id:, **)
|
|
24
|
+
response = client(**).get("/ideas/#{id}")
|
|
25
|
+
{ result: response.body, status: response.status }
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def create_idea(product_id:, idea:, **)
|
|
29
|
+
response = client(**).post("/products/#{product_id}/ideas", { idea: idea })
|
|
30
|
+
{ result: response.body, status: response.status }
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def delete_idea(id:, **)
|
|
34
|
+
response = client(**).delete("/ideas/#{id}")
|
|
35
|
+
{ result: response.body, status: response.status }
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
def promote_idea(id:, **)
|
|
39
|
+
response = client(**).put("/ideas/#{id}/promote")
|
|
40
|
+
{ result: response.body, status: response.status }
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
def list_related_ideas(term:, **)
|
|
44
|
+
response = client(**).get("/ideas/related?term=#{term}")
|
|
45
|
+
{ result: response.body, status: response.status }
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
include Legion::Extensions::Helpers::Lex if Legion::Extensions.const_defined?(:Helpers) &&
|
|
49
|
+
Legion::Extensions::Helpers.const_defined?(:Lex)
|
|
50
|
+
end
|
|
51
|
+
end
|
|
52
|
+
end
|
|
53
|
+
end
|
|
54
|
+
end
|
|
55
|
+
end
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'legion/extensions/aha/ideas/runners/ideas'
|
|
4
|
+
require 'legion/extensions/aha/ideas/runners/idea_comments'
|
|
5
|
+
require 'legion/extensions/aha/ideas/runners/idea_portals'
|
|
6
|
+
require 'legion/extensions/aha/ideas/runners/idea_organizations'
|
|
7
|
+
require 'legion/extensions/aha/ideas/runners/idea_users'
|
|
8
|
+
require 'legion/extensions/aha/ideas/runners/idea_votes'
|
|
9
|
+
require 'legion/extensions/aha/ideas/runners/idea_subscriptions'
|
|
10
|
+
require 'legion/extensions/aha/ideas/runners/idea_categories'
|
|
11
|
+
require_relative 'ideas/client'
|
|
12
|
+
|
|
13
|
+
module Legion
|
|
14
|
+
module Extensions
|
|
15
|
+
module Aha
|
|
16
|
+
module Ideas
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require_relative '../base_client'
|
|
4
|
+
require_relative 'runners/knowledge_bases'
|
|
5
|
+
require_relative 'runners/pages'
|
|
6
|
+
require_relative 'runners/notes'
|
|
7
|
+
|
|
8
|
+
module Legion
|
|
9
|
+
module Extensions
|
|
10
|
+
module Aha
|
|
11
|
+
module Knowledge
|
|
12
|
+
class Client < Legion::Extensions::Aha::BaseClient
|
|
13
|
+
include Runners::KnowledgeBases
|
|
14
|
+
include Runners::Pages
|
|
15
|
+
include Runners::Notes
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'legion/extensions/aha/helpers/client'
|
|
4
|
+
|
|
5
|
+
module Legion
|
|
6
|
+
module Extensions
|
|
7
|
+
module Aha
|
|
8
|
+
module Knowledge
|
|
9
|
+
module Runners
|
|
10
|
+
module KnowledgeBases
|
|
11
|
+
extend Legion::Extensions::Aha::Helpers::Client
|
|
12
|
+
|
|
13
|
+
def list_knowledge_bases(product_id:, **)
|
|
14
|
+
response = client(**).get("/products/#{product_id}/knowledge_bases")
|
|
15
|
+
{ result: response.body, status: response.status }
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def get_knowledge_base(id:, **)
|
|
19
|
+
response = client(**).get("/knowledge_bases/#{id}")
|
|
20
|
+
{ result: response.body, status: response.status }
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
include Legion::Extensions::Helpers::Lex if Legion::Extensions.const_defined?(:Helpers) && Legion::Extensions::Helpers.const_defined?(:Lex)
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'legion/extensions/aha/helpers/client'
|
|
4
|
+
|
|
5
|
+
module Legion
|
|
6
|
+
module Extensions
|
|
7
|
+
module Aha
|
|
8
|
+
module Knowledge
|
|
9
|
+
module Runners
|
|
10
|
+
module Notes
|
|
11
|
+
extend Legion::Extensions::Aha::Helpers::Client
|
|
12
|
+
|
|
13
|
+
def list_notes(product_id:, **)
|
|
14
|
+
response = client(**).get("/products/#{product_id}/pages")
|
|
15
|
+
{ result: response.body, status: response.status }
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def get_note(id:, **)
|
|
19
|
+
response = client(**).get("/pages/#{id}")
|
|
20
|
+
{ result: response.body, status: response.status }
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def create_note(product_id:, page:, **)
|
|
24
|
+
response = client(**).post("/products/#{product_id}/pages", { page: page })
|
|
25
|
+
{ result: response.body, status: response.status }
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def update_note(id:, page:, **)
|
|
29
|
+
response = client(**).put("/pages/#{id}", { page: page })
|
|
30
|
+
{ result: response.body, status: response.status }
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def delete_note(id:, **)
|
|
34
|
+
response = client(**).delete("/pages/#{id}")
|
|
35
|
+
{ result: response.body, status: response.status }
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
include Legion::Extensions::Helpers::Lex if Legion::Extensions.const_defined?(:Helpers) && Legion::Extensions::Helpers.const_defined?(:Lex)
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
end
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'legion/extensions/aha/helpers/client'
|
|
4
|
+
|
|
5
|
+
module Legion
|
|
6
|
+
module Extensions
|
|
7
|
+
module Aha
|
|
8
|
+
module Knowledge
|
|
9
|
+
module Runners
|
|
10
|
+
module Pages
|
|
11
|
+
extend Legion::Extensions::Aha::Helpers::Client
|
|
12
|
+
|
|
13
|
+
def list_pages(knowledge_base_id:, **)
|
|
14
|
+
response = client(**).get("/knowledge_bases/#{knowledge_base_id}/pages")
|
|
15
|
+
{ result: response.body, status: response.status }
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def get_page(id:, **)
|
|
19
|
+
response = client(**).get("/pages/#{id}")
|
|
20
|
+
{ result: response.body, status: response.status }
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def create_page(knowledge_base_id:, page:, **)
|
|
24
|
+
response = client(**).post("/knowledge_bases/#{knowledge_base_id}/pages", { page: page })
|
|
25
|
+
{ result: response.body, status: response.status }
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def update_page(id:, page:, **)
|
|
29
|
+
response = client(**).put("/pages/#{id}", { page: page })
|
|
30
|
+
{ result: response.body, status: response.status }
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def delete_page(id:, **)
|
|
34
|
+
response = client(**).delete("/pages/#{id}")
|
|
35
|
+
{ result: response.body, status: response.status }
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
include Legion::Extensions::Helpers::Lex if Legion::Extensions.const_defined?(:Helpers) && Legion::Extensions::Helpers.const_defined?(:Lex)
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
end
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'legion/extensions/aha/knowledge/runners/knowledge_bases'
|
|
4
|
+
require 'legion/extensions/aha/knowledge/runners/pages'
|
|
5
|
+
require 'legion/extensions/aha/knowledge/runners/notes'
|
|
6
|
+
require_relative 'knowledge/client'
|
|
7
|
+
|
|
8
|
+
module Legion
|
|
9
|
+
module Extensions
|
|
10
|
+
module Aha
|
|
11
|
+
module Knowledge
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require_relative '../base_client'
|
|
4
|
+
require_relative 'runners/products'
|
|
5
|
+
require_relative 'runners/releases'
|
|
6
|
+
require_relative 'runners/release_phases'
|
|
7
|
+
require_relative 'runners/roll_up_releases'
|
|
8
|
+
require_relative 'runners/features'
|
|
9
|
+
require_relative 'runners/epics'
|
|
10
|
+
require_relative 'runners/requirements'
|
|
11
|
+
require_relative 'runners/initiatives'
|
|
12
|
+
require_relative 'runners/goals'
|
|
13
|
+
require_relative 'runners/key_results'
|
|
14
|
+
require_relative 'runners/strategy'
|
|
15
|
+
require_relative 'runners/competitors'
|
|
16
|
+
require_relative 'runners/personas'
|
|
17
|
+
require_relative 'runners/capacity'
|
|
18
|
+
|
|
19
|
+
module Legion
|
|
20
|
+
module Extensions
|
|
21
|
+
module Aha
|
|
22
|
+
module Roadmaps
|
|
23
|
+
class Client < Legion::Extensions::Aha::BaseClient
|
|
24
|
+
include Runners::Products
|
|
25
|
+
include Runners::Releases
|
|
26
|
+
include Runners::ReleasePhases
|
|
27
|
+
include Runners::RollUpReleases
|
|
28
|
+
include Runners::Features
|
|
29
|
+
include Runners::Epics
|
|
30
|
+
include Runners::Requirements
|
|
31
|
+
include Runners::Initiatives
|
|
32
|
+
include Runners::Goals
|
|
33
|
+
include Runners::KeyResults
|
|
34
|
+
include Runners::Strategy
|
|
35
|
+
include Runners::Competitors
|
|
36
|
+
include Runners::Personas
|
|
37
|
+
include Runners::Capacity
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
end
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'legion/extensions/aha/helpers/client'
|
|
4
|
+
|
|
5
|
+
module Legion
|
|
6
|
+
module Extensions
|
|
7
|
+
module Aha
|
|
8
|
+
module Roadmaps
|
|
9
|
+
module Runners
|
|
10
|
+
module Capacity
|
|
11
|
+
extend Legion::Extensions::Aha::Helpers::Client
|
|
12
|
+
|
|
13
|
+
def list_capacity_scenarios(**)
|
|
14
|
+
response = client(**).get('/capacity_scenarios')
|
|
15
|
+
{ result: response.body, status: response.status }
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def get_capacity_scenario(id:, **)
|
|
19
|
+
response = client(**).get("/capacity_scenarios/#{id}")
|
|
20
|
+
{ result: response.body, status: response.status }
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def list_capacity_investments(product_id:, **)
|
|
24
|
+
response = client(**).get("/products/#{product_id}/capacity_investments")
|
|
25
|
+
{ result: response.body, status: response.status }
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def get_capacity_investment(id:, **)
|
|
29
|
+
response = client(**).get("/capacity_investments/#{id}")
|
|
30
|
+
{ result: response.body, status: response.status }
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def create_capacity_investment_on_feature(feature_id:, capacity_investment:, **)
|
|
34
|
+
response = client(**).post("/features/#{feature_id}/capacity_investments", { capacity_investment: capacity_investment })
|
|
35
|
+
{ result: response.body, status: response.status }
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
def list_estimate_values(capacity_investment_id:, **)
|
|
39
|
+
response = client(**).get("/capacity_investments/#{capacity_investment_id}/estimate_values")
|
|
40
|
+
{ result: response.body, status: response.status }
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
def create_estimate_values(capacity_investment_id:, estimate_values:, **)
|
|
44
|
+
response = client(**).post("/capacity_investments/#{capacity_investment_id}/estimate_values", { estimate_values: estimate_values })
|
|
45
|
+
{ result: response.body, status: response.status }
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
include Legion::Extensions::Helpers::Lex if Legion::Extensions.const_defined?(:Helpers) && Legion::Extensions::Helpers.const_defined?(:Lex)
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
end
|
|
52
|
+
end
|
|
53
|
+
end
|
|
54
|
+
end
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'legion/extensions/aha/helpers/client'
|
|
4
|
+
|
|
5
|
+
module Legion
|
|
6
|
+
module Extensions
|
|
7
|
+
module Aha
|
|
8
|
+
module Roadmaps
|
|
9
|
+
module Runners
|
|
10
|
+
module Competitors
|
|
11
|
+
extend Legion::Extensions::Aha::Helpers::Client
|
|
12
|
+
|
|
13
|
+
def list_competitors(product_id:, **)
|
|
14
|
+
response = client(**).get("/products/#{product_id}/competitors")
|
|
15
|
+
{ result: response.body, status: response.status }
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def get_competitor(id:, **)
|
|
19
|
+
response = client(**).get("/competitors/#{id}")
|
|
20
|
+
{ result: response.body, status: response.status }
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def create_competitor(product_id:, competitor:, **)
|
|
24
|
+
response = client(**).post("/products/#{product_id}/competitors", { competitor: competitor })
|
|
25
|
+
{ result: response.body, status: response.status }
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def update_competitor(product_id:, id:, competitor:, **)
|
|
29
|
+
response = client(**).put("/products/#{product_id}/competitors/#{id}", { competitor: competitor })
|
|
30
|
+
{ result: response.body, status: response.status }
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def delete_competitor(product_id:, id:, **)
|
|
34
|
+
response = client(**).delete("/products/#{product_id}/competitors/#{id}")
|
|
35
|
+
{ result: response.body, status: response.status }
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
include Legion::Extensions::Helpers::Lex if Legion::Extensions.const_defined?(:Helpers) && Legion::Extensions::Helpers.const_defined?(:Lex)
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
end
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'legion/extensions/aha/helpers/client'
|
|
4
|
+
|
|
5
|
+
module Legion
|
|
6
|
+
module Extensions
|
|
7
|
+
module Aha
|
|
8
|
+
module Roadmaps
|
|
9
|
+
module Runners
|
|
10
|
+
module Epics
|
|
11
|
+
extend Legion::Extensions::Aha::Helpers::Client
|
|
12
|
+
|
|
13
|
+
def list_epics(**)
|
|
14
|
+
response = client(**).get('/epics')
|
|
15
|
+
{ result: response.body, status: response.status }
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def list_epics_in_release(release_id:, **)
|
|
19
|
+
response = client(**).get("/releases/#{release_id}/epics")
|
|
20
|
+
{ result: response.body, status: response.status }
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def list_epics_in_product(product_id:, **)
|
|
24
|
+
response = client(**).get("/products/#{product_id}/epics")
|
|
25
|
+
{ result: response.body, status: response.status }
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def get_epic(id:, **)
|
|
29
|
+
response = client(**).get("/epics/#{id}")
|
|
30
|
+
{ result: response.body, status: response.status }
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def create_epic(release_id:, epic:, **)
|
|
34
|
+
response = client(**).post("/releases/#{release_id}/epics", { epic: epic })
|
|
35
|
+
{ result: response.body, status: response.status }
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
def create_epic_in_product(product_id:, epic:, **)
|
|
39
|
+
response = client(**).post("/products/#{product_id}/epics", { epic: epic })
|
|
40
|
+
{ result: response.body, status: response.status }
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
def update_epic(id:, epic:, **)
|
|
44
|
+
response = client(**).put("/epics/#{id}", { epic: epic })
|
|
45
|
+
{ result: response.body, status: response.status }
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
def delete_epic(id:, **)
|
|
49
|
+
response = client(**).delete("/epics/#{id}")
|
|
50
|
+
{ result: response.body, status: response.status }
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
include Legion::Extensions::Helpers::Lex if Legion::Extensions.const_defined?(:Helpers) && Legion::Extensions::Helpers.const_defined?(:Lex)
|
|
54
|
+
end
|
|
55
|
+
end
|
|
56
|
+
end
|
|
57
|
+
end
|
|
58
|
+
end
|
|
59
|
+
end
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'legion/extensions/aha/helpers/client'
|
|
4
|
+
|
|
5
|
+
module Legion
|
|
6
|
+
module Extensions
|
|
7
|
+
module Aha
|
|
8
|
+
module Roadmaps
|
|
9
|
+
module Runners
|
|
10
|
+
module Features
|
|
11
|
+
extend Legion::Extensions::Aha::Helpers::Client
|
|
12
|
+
|
|
13
|
+
def list_features(**)
|
|
14
|
+
response = client(**).get('/features')
|
|
15
|
+
{ result: response.body, status: response.status }
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def list_features_in_release(release_id:, **)
|
|
19
|
+
response = client(**).get("/releases/#{release_id}/features")
|
|
20
|
+
{ result: response.body, status: response.status }
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def list_features_in_product(product_id:, **)
|
|
24
|
+
response = client(**).get("/products/#{product_id}/features")
|
|
25
|
+
{ result: response.body, status: response.status }
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def list_features_in_epic(epic_id:, **)
|
|
29
|
+
response = client(**).get("/epics/#{epic_id}/features")
|
|
30
|
+
{ result: response.body, status: response.status }
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def get_feature(id:, **)
|
|
34
|
+
response = client(**).get("/features/#{id}")
|
|
35
|
+
{ result: response.body, status: response.status }
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
def create_feature(release_id:, feature:, **)
|
|
39
|
+
response = client(**).post("/releases/#{release_id}/features", { feature: feature })
|
|
40
|
+
{ result: response.body, status: response.status }
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
def delete_feature(id:, **)
|
|
44
|
+
response = client(**).delete("/features/#{id}")
|
|
45
|
+
{ result: response.body, status: response.status }
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
def convert_to_epic(id:, **)
|
|
49
|
+
response = client(**).post("/features/#{id}/convert_to_epic")
|
|
50
|
+
{ result: response.body, status: response.status }
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
include Legion::Extensions::Helpers::Lex if Legion::Extensions.const_defined?(:Helpers) && Legion::Extensions::Helpers.const_defined?(:Lex)
|
|
54
|
+
end
|
|
55
|
+
end
|
|
56
|
+
end
|
|
57
|
+
end
|
|
58
|
+
end
|
|
59
|
+
end
|