asana 2.0.0 → 2.0.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 79c29d830033169faeef65fea64f81703176051201c2047cb951f9456471baa6
4
- data.tar.gz: fe391a1e882fe5291437eb9f2052b887c888b8e259f3182cf35d2ddf2ffc72c8
3
+ metadata.gz: 0c78f9f4dcaa8199ba6ba6422dc0691255e5c2f27688b2a4dd0a25839dc18d1e
4
+ data.tar.gz: 8bc1e52ce2cf1644a96e6d7a57a1d01e894e299d1af3c9dc6dbc1550015fe17b
5
5
  SHA512:
6
- metadata.gz: 789b9cd1fb242c9c07496f2fc4123de1c6e1218ead39952ff1965526ed0bf3910f4f392bbead235f4ba1a1df17b1af09410d89dfb92d96077ebadcb9919615f1
7
- data.tar.gz: bb90c3775c43110ce691e19d594cb696f477d10012e7c693318a7d9f1a04365c527fce606668948cf9ead376bdb098ee010c62aae55843d785a43759dd6b0785
6
+ metadata.gz: c8a8b9ab41a2587fe635037c180c6c68e945e5cab02f260c8d171cd8915247f5ea0195c24245ab59861a8d165f462acaf8cc8daaec6b59d965eedce338ba3416
7
+ data.tar.gz: 155604a2b12f2962685b5ebd35319ef19e5cc9b01d71bfb4fcbdf687b19623d0ba038853897011e9ade58c40e3611fac1307bf4f2937d6114517912636ad383e
@@ -14,7 +14,7 @@ jobs:
14
14
  runs-on: ubuntu-latest
15
15
  strategy:
16
16
  matrix:
17
- ruby: [2.5, 2.7, 3.0]
17
+ ruby: [2.7, 3.0, 3.1]
18
18
  steps:
19
19
  - uses: actions/checkout@v3
20
20
  - uses: ruby/setup-ruby@v1
data/.ruby-version CHANGED
@@ -1 +1 @@
1
- 2.5.0
1
+ 2.7.6
data/Appraisals CHANGED
@@ -1,4 +1,8 @@
1
1
 
2
- appraise "faraday-1.0.0" do
3
- gem "faraday", "1.0.0"
2
+ appraise "faraday-2.7.0" do
3
+ gem "faraday", "2.7.0"
4
4
  end
5
+
6
+ appraise "faraday-2.6.0" do
7
+ gem "faraday", "2.6.0"
8
+ end
data/Gemfile CHANGED
@@ -12,6 +12,8 @@ group :tools do
12
12
  gem 'rubocop', '~> 0.52.1'
13
13
  gem 'rubocop-rspec', '~> 1.22.2'
14
14
 
15
+ gem 'oauth2', '~> 2.0.3'
16
+
15
17
  gem 'guard'
16
18
  gem 'guard-rspec'
17
19
  gem 'guard-rubocop'
data/Gemfile.lock CHANGED
@@ -1,10 +1,10 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- asana (2.0.0)
5
- faraday (~> 1.0)
6
- faraday_middleware (~> 1.0)
7
- faraday_middleware-multi_json (~> 0.0)
4
+ asana (2.0.1)
5
+ faraday (~> 2.0)
6
+ faraday-follow_redirects
7
+ faraday-multipart
8
8
  oauth2 (>= 1.4, < 3)
9
9
 
10
10
  GEM
@@ -19,34 +19,14 @@ GEM
19
19
  coderay (1.1.3)
20
20
  diff-lcs (1.5.0)
21
21
  docile (1.4.0)
22
- faraday (1.10.2)
23
- faraday-em_http (~> 1.0)
24
- faraday-em_synchrony (~> 1.0)
25
- faraday-excon (~> 1.1)
26
- faraday-httpclient (~> 1.0)
27
- faraday-multipart (~> 1.0)
28
- faraday-net_http (~> 1.0)
29
- faraday-net_http_persistent (~> 1.0)
30
- faraday-patron (~> 1.0)
31
- faraday-rack (~> 1.0)
32
- faraday-retry (~> 1.0)
22
+ faraday (2.7.4)
23
+ faraday-net_http (>= 2.0, < 3.1)
33
24
  ruby2_keywords (>= 0.0.4)
34
- faraday-em_http (1.0.0)
35
- faraday-em_synchrony (1.0.0)
36
- faraday-excon (1.1.0)
37
- faraday-httpclient (1.0.1)
25
+ faraday-follow_redirects (0.3.0)
26
+ faraday (>= 1, < 3)
38
27
  faraday-multipart (1.0.4)
39
28
  multipart-post (~> 2)
40
- faraday-net_http (1.0.1)
41
- faraday-net_http_persistent (1.2.0)
42
- faraday-patron (1.0.0)
43
- faraday-rack (1.0.0)
44
- faraday-retry (1.0.3)
45
- faraday_middleware (1.2.0)
46
- faraday (~> 1.0)
47
- faraday_middleware-multi_json (0.0.6)
48
- faraday_middleware
49
- multi_json
29
+ faraday-net_http (3.0.2)
50
30
  ffi (1.15.5)
51
31
  formatador (1.1.0)
52
32
  guard (2.18.0)
@@ -70,34 +50,33 @@ GEM
70
50
  guard (>= 1.1.0)
71
51
  yard (>= 0.7.0)
72
52
  hashie (5.0.0)
73
- jwt (2.5.0)
74
- listen (3.7.1)
53
+ jwt (2.7.0)
54
+ listen (3.8.0)
75
55
  rb-fsevent (~> 0.10, >= 0.10.3)
76
56
  rb-inotify (~> 0.9, >= 0.9.10)
77
57
  lumberjack (1.2.8)
78
58
  method_source (1.0.0)
79
- multi_json (1.15.0)
80
59
  multi_xml (0.6.0)
81
- multipart-post (2.2.3)
60
+ multipart-post (2.3.0)
82
61
  nenv (0.3.0)
83
62
  notiffany (0.1.3)
84
63
  nenv (~> 0.1)
85
64
  shellany (~> 0.0)
86
- oauth2 (2.0.8)
65
+ oauth2 (2.0.9)
87
66
  faraday (>= 0.17.3, < 3.0)
88
67
  jwt (>= 1.0, < 3.0)
89
68
  multi_xml (~> 0.5)
90
- rack (>= 1.2, < 3)
69
+ rack (>= 1.2, < 4)
91
70
  snaky_hash (~> 2.0)
92
71
  version_gem (~> 1.1)
93
72
  parallel (1.22.1)
94
73
  parser (2.7.2.0)
95
74
  ast (~> 2.4.1)
96
75
  powerpack (0.1.3)
97
- pry (0.14.1)
76
+ pry (0.14.2)
98
77
  coderay (~> 1.1)
99
78
  method_source (~> 1.0)
100
- rack (2.2.4)
79
+ rack (3.0.4.2)
101
80
  rack-protection (1.5.5)
102
81
  rack
103
82
  rainbow (3.1.1)
@@ -105,19 +84,19 @@ GEM
105
84
  rb-fsevent (0.11.2)
106
85
  rb-inotify (0.10.1)
107
86
  ffi (~> 1.0)
108
- rspec (3.11.0)
109
- rspec-core (~> 3.11.0)
110
- rspec-expectations (~> 3.11.0)
111
- rspec-mocks (~> 3.11.0)
112
- rspec-core (3.11.0)
113
- rspec-support (~> 3.11.0)
114
- rspec-expectations (3.11.0)
87
+ rspec (3.12.0)
88
+ rspec-core (~> 3.12.0)
89
+ rspec-expectations (~> 3.12.0)
90
+ rspec-mocks (~> 3.12.0)
91
+ rspec-core (3.12.1)
92
+ rspec-support (~> 3.12.0)
93
+ rspec-expectations (3.12.2)
115
94
  diff-lcs (>= 1.2.0, < 2.0)
116
- rspec-support (~> 3.11.0)
117
- rspec-mocks (3.11.1)
95
+ rspec-support (~> 3.12.0)
96
+ rspec-mocks (3.12.3)
118
97
  diff-lcs (>= 1.2.0, < 2.0)
119
- rspec-support (~> 3.11.0)
120
- rspec-support (3.11.0)
98
+ rspec-support (~> 3.12.0)
99
+ rspec-support (3.12.0)
121
100
  rubocop (0.52.1)
122
101
  parallel (~> 1.10)
123
102
  parser (>= 2.4.0.2, < 3.0)
@@ -127,22 +106,22 @@ GEM
127
106
  unicode-display_width (~> 1.0, >= 1.0.1)
128
107
  rubocop-rspec (1.22.2)
129
108
  rubocop (>= 0.52.1)
130
- ruby-progressbar (1.11.0)
109
+ ruby-progressbar (1.13.0)
131
110
  ruby2_keywords (0.0.5)
132
111
  shellany (0.0.1)
133
- simplecov (0.21.2)
112
+ simplecov (0.22.0)
134
113
  docile (~> 1.1)
135
114
  simplecov-html (~> 0.11)
136
115
  simplecov_json_formatter (~> 0.1)
137
116
  simplecov-html (0.12.3)
138
117
  simplecov_json_formatter (0.1.4)
139
- snaky_hash (2.0.0)
118
+ snaky_hash (2.0.1)
140
119
  hashie
141
- version_gem (~> 1.1)
120
+ version_gem (~> 1.1, >= 1.1.1)
142
121
  thor (1.2.1)
143
122
  tomparse (0.4.2)
144
123
  unicode-display_width (1.8.0)
145
- version_gem (1.1.0)
124
+ version_gem (1.1.1)
146
125
  webrick (1.7.0)
147
126
  yard (0.9.28)
148
127
  webrick (~> 1.7.0)
@@ -151,6 +130,7 @@ GEM
151
130
  yard
152
131
 
153
132
  PLATFORMS
133
+ ruby
154
134
  universal-darwin-21
155
135
  x86_64-linux
156
136
 
data/README.md CHANGED
@@ -41,7 +41,7 @@ client = Asana::Client.new do |c|
41
41
  c.authentication :access_token, 'personal_access_token'
42
42
  end
43
43
 
44
- client.workspaces.find_all.first
44
+ client.workspaces.get_workspaces.first
45
45
  ```
46
46
 
47
47
  A full-blown customized client using OAuth2 wih a previously obtained refresh
@@ -61,7 +61,7 @@ client = Asana::Client.new do |c|
61
61
  c.configure_faraday { |conn| conn.use SomeFaradayMiddleware }
62
62
  end
63
63
 
64
- workspace = client.workspaces.find_by_id(12)
64
+ workspace = client.workspaces.get_workspace(12)
65
65
  workspace.users
66
66
  # => #<Asana::Collection<User> ...>
67
67
  client.tags.create_in_workspace(workspace: workspace.id, name: 'foo')
@@ -152,7 +152,7 @@ client = Asana::Client.new do |c|
152
152
  c.authentication :oauth2, access_token
153
153
  end
154
154
 
155
- client.tasks.find_by_id(12)
155
+ client.tasks.get_task(12)
156
156
  ```
157
157
 
158
158
  This will print an authorization URL on STDOUT, and block until you paste in the
@@ -166,7 +166,7 @@ results per page to fetch, between 1 and 100. If you don't provide any, it
166
166
  defaults to 20.
167
167
 
168
168
  ```ruby
169
- my_tasks = client.tasks.find_by_tag(tag: tag_id, per_page: 5)
169
+ my_tasks = client.tasks.get_tasks_for_tag(tag: tag_id, per_page: 5)
170
170
  # => #<Asana::Collection<Task> ...>
171
171
  ```
172
172
 
@@ -226,7 +226,7 @@ All requests (except `DELETE`) accept extra I/O options
226
226
  request:
227
227
 
228
228
  ```ruby
229
- client.tasks.find_by_id(12, options: { expand: ['workspace'] })
229
+ client.tasks.get_task(12, options: { expand: ['workspace'] })
230
230
  ```
231
231
 
232
232
  ### Attachment uploading
@@ -235,7 +235,7 @@ To attach a file to a task or a project, you just need its absolute path on your
235
235
  filesystem and its MIME type, and the file will be uploaded for you:
236
236
 
237
237
  ```ruby
238
- task = client.tasks.find_by_id(12)
238
+ task = client.tasks.get_task(12)
239
239
  attachment = task.attach(filename: '/absolute/path/to/my/file.png',
240
240
  mime: 'image/png')
241
241
  attachment.name # => 'file.png'
@@ -247,7 +247,7 @@ To subscribe to an event stream of a task or a project, just call `#events` on
247
247
  it:
248
248
 
249
249
  ```ruby
250
- task = client.tasks.find_by_id(12)
250
+ task = client.tasks.get_task(12)
251
251
  task.events # => #<Asana::Events ...>
252
252
 
253
253
  # You can do the same with only the task id:
@@ -272,7 +272,7 @@ normal Ruby Enumerable. Read below to get some ideas.
272
272
 
273
273
  ```ruby
274
274
  # Run this in another thread so that we don't block forever
275
- events = client.tasks.find_by_id(12).events(wait: 2)
275
+ events = client.tasks.get_task(12).events(wait: 2)
276
276
  Thread.new do
277
277
  events.each do |event|
278
278
  notify_someone "New event arrived! #{event}"
@@ -286,7 +286,7 @@ To do that we need to call `#lazy` on the `Events` instance, just like with any
286
286
  other `Enumerable`.
287
287
 
288
288
  ```ruby
289
- events = client.tasks.find_by_id(12).events
289
+ events = client.tasks.get_task(12).events
290
290
  only_change_events = events.lazy.select { |event| event.action == 'changed' }
291
291
  Thread.new do
292
292
  only_change_events.each do |event|
@@ -316,7 +316,7 @@ If you would rather suppress these warnings, you can set
316
316
 
317
317
  ## Development
318
318
 
319
- You'll need Ruby 2.5+ and Node v0.10.26+ / NPM 1.4.3+ installed.
319
+ You'll need Ruby 2.7+ and Node v0.10.26+ / NPM 1.4.3+ installed.
320
320
 
321
321
  After checking out the repo, run `bin/setup` to install dependencies. Then, run
322
322
  `bin/console` for an interactive prompt that will allow you to experiment.
@@ -329,7 +329,17 @@ To install this gem onto your local machine, run `bundle exec rake install`.
329
329
 
330
330
  ## Releasing a new version
331
331
 
332
- To release a new version, run either of these commands:
332
+ Prerequisite: Before deployment, make sure you have Ruby version `2.7` installed
333
+
334
+ ### Automatic Deployment
335
+
336
+ First, install dependencies:
337
+
338
+ ```
339
+ bundle install
340
+ ```
341
+
342
+ Then, to release a new version, run one of these commands:
333
343
 
334
344
  rake bump:patch
335
345
  rake bump:minor
data/VERSION CHANGED
@@ -1 +1 @@
1
- 2.0.0
1
+ 2.0.1
data/asana.gemspec CHANGED
@@ -19,12 +19,12 @@ Gem::Specification.new do |spec|
19
19
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
20
20
  spec.require_paths = ["lib"]
21
21
 
22
- spec.required_ruby_version = '>= 2.5'
22
+ spec.required_ruby_version = '>= 2.7'
23
23
 
24
24
  spec.add_dependency "oauth2", ">= 1.4", '< 3'
25
- spec.add_dependency "faraday", "~> 1.0"
26
- spec.add_dependency "faraday_middleware", "~> 1.0"
27
- spec.add_dependency "faraday_middleware-multi_json", "~> 0.0"
25
+ spec.add_dependency "faraday", "~> 2.0"
26
+ spec.add_dependency "faraday-follow_redirects"
27
+ spec.add_dependency "faraday-multipart"
28
28
 
29
29
  spec.add_development_dependency "rake", "~> 13.0"
30
30
  spec.add_development_dependency "rspec", "~> 3.2"
data/examples/cli_app.rb CHANGED
@@ -17,9 +17,9 @@ client = Asana::Client.new do |c|
17
17
  end
18
18
 
19
19
  puts "My Workspaces:"
20
- client.workspaces.find_all.each do |workspace|
20
+ client.workspaces.get_workspaces.each do |workspace|
21
21
  puts "\t* #{workspace.name} - tags:"
22
- client.tags.find_by_workspace(workspace: workspace.id).each do |tag|
22
+ client.tags.get_tags_for_workspace(workspace: workspace.id).each do |tag|
23
23
  puts "\t\t- #{tag.name}"
24
24
  end
25
25
  end
data/examples/events.rb CHANGED
@@ -13,10 +13,10 @@ client = Asana::Client.new do |c|
13
13
  c.authentication :access_token, access_token
14
14
  end
15
15
 
16
- workspace = client.workspaces.find_all.first
17
- task = client.tasks.find_all(assignee: "me", workspace: workspace.id).first
16
+ workspace = client.workspaces.get_workspaces.first
17
+ task = client.tasks.get_tasks(assignee: "me", workspace: workspace.id).first
18
18
  unless task
19
- task = client.tasks.create(workspace: workspace.id, name: "Hello world!", assignee: "me")
19
+ task = client.tasks.create_task(workspace: workspace.id, name: "Hello world!", assignee: "me")
20
20
  end
21
21
 
22
22
  Thread.abort_on_exception = true
@@ -13,9 +13,9 @@ client = Asana::Client.new do |c|
13
13
  end
14
14
 
15
15
  puts "My Workspaces:"
16
- client.workspaces.find_all.each do |workspace|
16
+ client.workspaces.get_workspaces.each do |workspace|
17
17
  puts "\t* #{workspace.name} - tags:"
18
- client.tags.find_by_workspace(workspace: workspace.id).each do |tag|
18
+ client.tags.get_tags_for_workspace(workspace: workspace.id).each do |tag|
19
19
  puts "\t\t- #{tag.name}"
20
20
  end
21
21
  end
@@ -43,7 +43,8 @@ module Asana
43
43
  # Returns nothing.
44
44
  def configure(connection)
45
45
  @token = @token.refresh! if @token.expired?
46
- connection.request :oauth2, @token.token
46
+
47
+ connection.request :authorization, 'Bearer', @token.token
47
48
  end
48
49
  end
49
50
  end
@@ -24,8 +24,7 @@ module Asana
24
24
  #
25
25
  # Returns nothing.
26
26
  def configure(connection)
27
- connection.authorization :Bearer, @token
28
- connection.request :oauth2, token_type: 'bearer'
27
+ connection.request :authorization, 'Bearer', @token
29
28
  end
30
29
  end
31
30
  end
@@ -13,7 +13,7 @@ module Asana
13
13
  #
14
14
  # Returns nothing.
15
15
  def configure(connection)
16
- connection.basic_auth(@token, '')
16
+ connection.request :authorization, :basic, @token, ''
17
17
  end
18
18
  end
19
19
  end
@@ -1,5 +1,3 @@
1
- require 'multi_json'
2
-
3
1
  require_relative '../errors'
4
2
 
5
3
  module Asana
@@ -112,7 +110,7 @@ module Asana
112
110
 
113
111
  # Internal: Parser a response body from JSON.
114
112
  def body(response)
115
- MultiJson.load(response[:body])
113
+ JSON.load(response[:body])
116
114
  end
117
115
 
118
116
  def recover_response(response)
@@ -1,6 +1,5 @@
1
1
  require 'faraday'
2
- require 'faraday_middleware'
3
- require 'faraday_middleware/multi_json'
2
+ require 'faraday/follow_redirects'
4
3
 
5
4
  require_relative 'http_client/error_handling'
6
5
  require_relative 'http_client/environment_info'
@@ -130,6 +129,7 @@ module Asana
130
129
  yield builder if request_config
131
130
  configure_format(builder)
132
131
  add_middleware(builder)
132
+ configure_redirects(builder)
133
133
  @config.call(builder) if @config
134
134
  use_adapter(builder, @adapter)
135
135
  end
@@ -147,13 +147,16 @@ module Asana
147
147
  end
148
148
 
149
149
  def configure_format(builder)
150
- builder.request :multi_json
151
- builder.response :multi_json
150
+ builder.request :json
151
+ builder.response :json
152
152
  end
153
153
 
154
154
  def add_middleware(builder)
155
155
  builder.use Faraday::Response::RaiseError
156
- builder.use FaradayMiddleware::FollowRedirects
156
+ end
157
+
158
+ def configure_redirects(builder)
159
+ builder.response :follow_redirects
157
160
  end
158
161
 
159
162
  def use_adapter(builder, adapter)
@@ -1,3 +1,5 @@
1
+ require 'faraday/multipart'
2
+
1
3
  module Asana
2
4
  module Resources
3
5
  # Internal: Mixin to add the ability to upload an attachment to a specific
@@ -21,9 +23,9 @@ module Asana
21
23
  path = File.expand_path(filename)
22
24
  raise ArgumentError, "file #{filename} doesn't exist" unless File.exist?(path)
23
25
 
24
- Faraday::FilePart.new(path, mime)
26
+ Faraday::Multipart::FilePart.new(path, mime)
25
27
  else
26
- Faraday::FilePart.new(io, mime, filename)
28
+ Faraday::Multipart::FilePart.new(io, mime, filename)
27
29
  end
28
30
 
29
31
  response = client.post("/#{self.class.plural_name}/#{gid}/attachments",
data/lib/asana/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  #:nodoc:
2
2
  module Asana
3
3
  # Public: Version of the gem.
4
- VERSION = '2.0.0'
4
+ VERSION = '2.0.1'
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: asana
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.0
4
+ version: 2.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Txus
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-09-09 00:00:00.000000000 Z
11
+ date: 2023-03-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: oauth2
@@ -36,42 +36,42 @@ dependencies:
36
36
  requirements:
37
37
  - - "~>"
38
38
  - !ruby/object:Gem::Version
39
- version: '1.0'
39
+ version: '2.0'
40
40
  type: :runtime
41
41
  prerelease: false
42
42
  version_requirements: !ruby/object:Gem::Requirement
43
43
  requirements:
44
44
  - - "~>"
45
45
  - !ruby/object:Gem::Version
46
- version: '1.0'
46
+ version: '2.0'
47
47
  - !ruby/object:Gem::Dependency
48
- name: faraday_middleware
48
+ name: faraday-follow_redirects
49
49
  requirement: !ruby/object:Gem::Requirement
50
50
  requirements:
51
- - - "~>"
51
+ - - ">="
52
52
  - !ruby/object:Gem::Version
53
- version: '1.0'
53
+ version: '0'
54
54
  type: :runtime
55
55
  prerelease: false
56
56
  version_requirements: !ruby/object:Gem::Requirement
57
57
  requirements:
58
- - - "~>"
58
+ - - ">="
59
59
  - !ruby/object:Gem::Version
60
- version: '1.0'
60
+ version: '0'
61
61
  - !ruby/object:Gem::Dependency
62
- name: faraday_middleware-multi_json
62
+ name: faraday-multipart
63
63
  requirement: !ruby/object:Gem::Requirement
64
64
  requirements:
65
- - - "~>"
65
+ - - ">="
66
66
  - !ruby/object:Gem::Version
67
- version: '0.0'
67
+ version: '0'
68
68
  type: :runtime
69
69
  prerelease: false
70
70
  version_requirements: !ruby/object:Gem::Requirement
71
71
  requirements:
72
- - - "~>"
72
+ - - ">="
73
73
  - !ruby/object:Gem::Version
74
- version: '0.0'
74
+ version: '0'
75
75
  - !ruby/object:Gem::Dependency
76
76
  name: rake
77
77
  requirement: !ruby/object:Gem::Requirement
@@ -284,14 +284,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
284
284
  requirements:
285
285
  - - ">="
286
286
  - !ruby/object:Gem::Version
287
- version: '2.5'
287
+ version: '2.7'
288
288
  required_rubygems_version: !ruby/object:Gem::Requirement
289
289
  requirements:
290
290
  - - ">="
291
291
  - !ruby/object:Gem::Version
292
292
  version: '0'
293
293
  requirements: []
294
- rubygems_version: 3.1.2
294
+ rubygems_version: 3.3.5
295
295
  signing_key:
296
296
  specification_version: 4
297
297
  summary: Official Ruby client for the Asana API