knockapi 0.3.0 → 0.4.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: c8d8593021545fcd9b7c40062469882c43afe76a8777579719978ba9e54027ae
4
- data.tar.gz: daad9dcf8d90f026cf056711b0616663edc9715d214e4a8e6b46a8c9ab021424
3
+ metadata.gz: 4565e1e9c707c9edcb5fad6fbe69c90dfabce8362507b7a1b817c1bf6440e094
4
+ data.tar.gz: cdf934876f3e28a57ac42e8f6af8746f1ff9114987f692d1d419ff2cdec2cf49
5
5
  SHA512:
6
- metadata.gz: 4525ed1305fded0310eb782031bd2e832dea431c94a6cddbeab5b72e06ee67b35458e78f1135f03911f41e0b669ee4819b514160a2bb198a648241972e3f3c6d
7
- data.tar.gz: ab4906c79209c2159e6e2b420a1c7ad53752f174fd1bf10312afbe0775b47d38cbd11d793e7e400a3411fb6f48166018d9b5a4f8af7497b50b2ee40b0f72cb66
6
+ metadata.gz: c3e4cbf5daa9efb7c4c4ab1742ee403e2a3e7bd628c2b5540e93bfe6702dd99e4aae7a8748ced4bd5bd31942c454964ede695eceacf978e89ec608d39cc72520
7
+ data.tar.gz: 04d8e14f0c4244897f0a5f8083fd993a2aa306506c755f81163bc739f5b357b5a621cb10b2493c3b9a6916269f1eed710a9823798cf4c1292550363bdd327083
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- knockapi (0.3.0)
4
+ knockapi (0.4.0)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
@@ -35,6 +35,7 @@ GEM
35
35
  unicode-display_width (2.0.0)
36
36
 
37
37
  PLATFORMS
38
+ ruby
38
39
  x86_64-darwin-19
39
40
 
40
41
  DEPENDENCIES
data/README.md CHANGED
@@ -98,7 +98,7 @@ require "knockapi"
98
98
  Knock.key = "sk_12345"
99
99
 
100
100
  # Set an entire preference set
101
- Knock::Preferences.set(
101
+ Knock::Users.set_preferences(
102
102
  user_id: "jhammond",
103
103
  channel_types: { email: true, sms: false },
104
104
  workflows: {
@@ -109,7 +109,7 @@ Knock::Preferences.set(
109
109
  )
110
110
 
111
111
  # Get an entire preference set
112
- Knock::Preferences.get(user_id: "jhammond")
112
+ Knock::Users.get_preferences(user_id: "jhammond")
113
113
  ```
114
114
 
115
115
  ### Getting and setting channel data
@@ -0,0 +1,26 @@
1
+ require "net/http"
2
+ require "uri"
3
+
4
+ module Knock
5
+ # Provides convienience methods for working with bulk operations
6
+ module BulkOperations
7
+ class << self
8
+ include Base
9
+ include Client
10
+
11
+ # Retrieves the given bulk operation
12
+ #
13
+ # @param [String] id The bulk operation ID
14
+ #
15
+ # @return [Hash] The bulk operation
16
+ def get(id:)
17
+ request = get_request(
18
+ auth: true,
19
+ path: "/v1/bulk_operations/#{id}"
20
+ )
21
+
22
+ execute_request(request: request)
23
+ end
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,125 @@
1
+ require "net/http"
2
+ require "uri"
3
+
4
+ module Knock
5
+ # Provides convienience methods for working with bulk operations
6
+ module Objects
7
+ class << self
8
+ include Base
9
+ include Client
10
+
11
+ # Retrieves an Object in a collection
12
+ #
13
+ # @param [String] collection The collection the object is in
14
+ # @param [String] id The object id
15
+ #
16
+ # @return [Hash] The Object
17
+ def get(collection:, id:)
18
+ request = get_request(
19
+ auth: true,
20
+ path: "/v1/objects/#{collection}/#{id}"
21
+ )
22
+
23
+ execute_request(request: request)
24
+ end
25
+
26
+ # Upserts an Object in a collection
27
+ #
28
+ # @param [String] collection The collection the object is in
29
+ # @param [String] id The object id
30
+ # @param [Hash] properties The properties to set on the object
31
+ #
32
+ # @return [Hash] The Object
33
+ def set(collection:, id:, properties: {})
34
+ request = put_request(
35
+ auth: true,
36
+ path: "/v1/objects/#{collection}/#{id}",
37
+ body: properties
38
+ )
39
+
40
+ execute_request(request: request)
41
+ end
42
+
43
+ # Bulk upserts Objects in a collection
44
+ #
45
+ # @param [String] collection The collection the object is in
46
+ # @param [Array<Hash>] objects The objects to upsert
47
+ #
48
+ # @return [Hash] a BulkOperation
49
+ def bulk_set(collection:, objects: [])
50
+ request = post_request(
51
+ auth: true,
52
+ path: "/v1/objects/#{collection}/bulk/set",
53
+ body: {objects: objects}
54
+ )
55
+
56
+ execute_request(request: request)
57
+ end
58
+
59
+ # Deletes an Object in a collection
60
+ #
61
+ # @param [String] collection The collection the object is in
62
+ # @param [String] id The object id
63
+ #
64
+ # @return [nil] Nothing
65
+ def delete(collection:, id:)
66
+ request = delete_request(
67
+ auth: true,
68
+ path: "/v1/objects/#{collection}/#{id}"
69
+ )
70
+
71
+ execute_request(request: request)
72
+ end
73
+
74
+ # Bulk deletes Objects in a collection
75
+ #
76
+ # @param [String] collection The collection the object is in
77
+ # @param [Array<String>] object_ids The object ids to delete
78
+ #
79
+ # @return [Hash] a BulkOperation
80
+ def bulk_delete(collection:, object_ids: [])
81
+ request = post_request(
82
+ auth: true,
83
+ path: "/v1/objects/#{collection}/bulk/delete",
84
+ body: {object_ids: object_ids}
85
+ )
86
+
87
+ execute_request(request: request)
88
+ end
89
+
90
+ # Get object channel data for the given channel id
91
+ #
92
+ # @param [String] collection The collection the object is in
93
+ # @param [String] id The object id
94
+ # @param [String] channel_id target channel ID
95
+ #
96
+ # @return [Hash] channel data
97
+ def get_channel_data(collection:, id:, channel_id:)
98
+ request = get_request(
99
+ auth: true,
100
+ path: "/v1/objects/#{collection}/#{id}/channel_data/#{channel_id}"
101
+ )
102
+
103
+ execute_request(request: request)
104
+ end
105
+
106
+ # Upserts object channel data for the given channel id
107
+ #
108
+ # @param [String] collection The collection the object is in
109
+ # @param [String] id The object id
110
+ # @param [String] channel_id target channel ID
111
+ # @param [Hash] channel_data channel data
112
+ #
113
+ # @return [Hash] channel data
114
+ def set_channel_data(id:, channel_id:, channel_data:)
115
+ request = put_request(
116
+ auth: true,
117
+ path: "/v1/objects/#{collection}/#{id}/channel_data/#{channel_id}",
118
+ body: {data: channel_data}
119
+ )
120
+
121
+ execute_request(request: request)
122
+ end
123
+ end
124
+ end
125
+ end
@@ -2,28 +2,20 @@ require "net/http"
2
2
  require "uri"
3
3
 
4
4
  module Knock
5
- # Provides convienience methods for working with preferences
5
+ # Provides convienience methods for working with preferences (deprecated)
6
6
  module Preferences
7
7
  class << self
8
8
  include Base
9
9
  include Client
10
10
 
11
- DEFAULT_SET_ID = "default"
12
-
13
11
  # Returns all preference sets for the user
14
12
  #
15
13
  # @param [String] user_id The ID of the user to retrieve preferences for
16
14
  #
17
15
  # @return [Hash] The preference sets
16
+ # @deprecated Please use {#Knock::Users.get_all_preferences} instead
18
17
  def get_all(user_id:)
19
- endpoint = "/v1/users/#{user_id}/preferences"
20
-
21
- request = get_request(
22
- auth: true,
23
- path: endpoint
24
- )
25
-
26
- execute_request(request: request)
18
+ Knock::Users.get_all_preferences(user_id: user_id)
27
19
  end
28
20
 
29
21
  # Gets a single preference set, defaults to the 'default' set
@@ -33,15 +25,9 @@ module Knock
33
25
  # @param [String] preference_set The preference set ID (defaults to `default`)
34
26
  #
35
27
  # @return [Hash] The preference set (if it exists)
36
- def get(user_id:, preference_set: DEFAULT_SET_ID)
37
- endpoint = "/v1/users/#{user_id}/preferences/#{preference_set}"
38
-
39
- request = get_request(
40
- auth: true,
41
- path: endpoint
42
- )
43
-
44
- execute_request(request: request)
28
+ # @deprecated Please use {#Knock::Users.get_preferences} instead
29
+ def get(user_id:, preference_set:)
30
+ Knock::Users.get_preferences(user_id: user_id, preference_set: preference_set)
45
31
  end
46
32
 
47
33
  # Sets multiple preferences at once for the preference set.
@@ -51,26 +37,20 @@ module Knock
51
37
  # @param [Hash] preferences The preferences hash to set
52
38
  #
53
39
  #  @return [Hash] The preference set
40
+ # @deprecated Please use {#Knock::Users.set_preferences} instead
54
41
  def update(
55
42
  user_id:,
56
- channel_types: nil,
43
+ preference_set:, channel_types: nil,
57
44
  workflows: nil,
58
- categories: nil,
59
- preference_set: DEFAULT_SET_ID
45
+ categories: nil
60
46
  )
61
- endpoint = "/v1/users/#{user_id}/preferences/#{preference_set}"
62
-
63
- request = put_request(
64
- auth: true,
65
- path: endpoint,
66
- body: {
67
- channel_types: channel_types,
68
- workflows: workflows,
69
- categories: categories
70
- }
47
+ Knock::Users.set_preferences(
48
+ user_id: user_id,
49
+ channel_types: channel_types,
50
+ workflows: workflows,
51
+ categories: categories,
52
+ preference_set: preference_set
71
53
  )
72
-
73
- execute_request(request: request)
74
54
  end
75
55
 
76
56
  # Sets preferences for the given channel type
@@ -80,17 +60,15 @@ module Knock
80
60
  # @param [String] channel_type The channel type to set
81
61
  # @param [Bool] setting Whether the channel type is enabled or not
82
62
  #
83
- #  @return [Hash] The preference set
84
- def set_channel_type(user_id:, channel_type:, setting:, preference_set: DEFAULT_SET_ID)
85
- endpoint = "/v1/users/#{user_id}/preferences/#{preference_set}/channel_types/#{channel_type}"
86
-
87
- request = put_request(
88
- auth: true,
89
- path: endpoint,
90
- body: {subscribed: setting}
63
+ # @return [Hash] The preference set
64
+ # @deprecated Please use {#Knock::Users.set_channel_type_preferences} instead
65
+ def set_channel_type(user_id:, channel_type:, setting:, preference_set:)
66
+ Knock::Users.set_channel_type_preferences(
67
+ user_id: user_id,
68
+ channel_type: channel_type,
69
+ setting: setting,
70
+ preference_set: preference_set
91
71
  )
92
-
93
- execute_request(request: request)
94
72
  end
95
73
 
96
74
  # Sets preferences for the given workflow
@@ -101,18 +79,15 @@ module Knock
101
79
  # @param [Bool | Hash] setting Either a boolean to indicate if the type is enabled
102
80
  # or a hash containing channel types and settings
103
81
  #
104
- #  @return [Hash] The preference set
105
- def set_workflow(user_id:, workflow:, setting:, preference_set: DEFAULT_SET_ID)
106
- params = setting.is_a?(Hash) ? setting : {subscribed: setting}
107
- endpoint = "/v1/users/#{user_id}/preferences/#{preference_set}/workflows/#{workflow}"
108
-
109
- request = put_request(
110
- auth: true,
111
- path: endpoint,
112
- body: params
82
+ # @return [Hash] The preference set
83
+ # @deprecated Please use {#Knock::Users.set_workflow_preferences} instead
84
+ def set_workflow(user_id:, workflow:, setting:, preference_set:)
85
+ Knock::Users.set_workflow_preferences(
86
+ user_id: user_id,
87
+ workflow: workflow,
88
+ setting: setting,
89
+ preference_set: preference_set
113
90
  )
114
-
115
- execute_request(request: request)
116
91
  end
117
92
 
118
93
  # Sets preferences for the given category
@@ -123,18 +98,15 @@ module Knock
123
98
  # @param [Bool | Hash] setting Either a boolean to indicate if the type is enabled
124
99
  # or a hash containing channel types and settings
125
100
  #
126
- #  @return [Hash] The preference set
127
- def set_category(user_id:, category:, setting:, preference_set: DEFAULT_SET_ID)
128
- params = setting.is_a?(Hash) ? setting : {subscribed: setting}
129
- endpoint = "/v1/users/#{user_id}/preferences/#{preference_set}/categories/#{category}"
130
-
131
- request = put_request(
132
- auth: true,
133
- path: endpoint,
134
- body: params
101
+ # @return [Hash] The preference set
102
+ # @deprecated Please use {#Knock::Users.set_category_preferences} instead
103
+ def set_category(user_id:, category:, setting:, preference_set:)
104
+ Knock::Users.set_category_preferences(
105
+ user_id: user_id,
106
+ category: category,
107
+ setting: setting,
108
+ preference_set: preference_set
135
109
  )
136
-
137
- execute_request(request: request)
138
110
  end
139
111
  end
140
112
  end
data/lib/knock/users.rb CHANGED
@@ -8,6 +8,8 @@ module Knock
8
8
  include Base
9
9
  include Client
10
10
 
11
+ DEFAULT_PREFERENCE_SET_ID = "default"
12
+
11
13
  # Identifies the user
12
14
  #
13
15
  # @param [String] id The user ID
@@ -24,6 +26,21 @@ module Knock
24
26
  execute_request(request: request)
25
27
  end
26
28
 
29
+ # Bulk identifies users
30
+ #
31
+ # @param [Array<Hash>] users The users to upsert
32
+ #
33
+ # @return [Hash] the BulkOperation
34
+ def bulk_identify(users: [])
35
+ request = post_request(
36
+ auth: true,
37
+ path: "/v1/users/bulk/identify",
38
+ body: {users: users}
39
+ )
40
+
41
+ execute_request(request: request)
42
+ end
43
+
27
44
  # Retrieves the given user
28
45
  #
29
46
  # @param [String] id The user ID
@@ -52,6 +69,206 @@ module Knock
52
69
  execute_request(request: request)
53
70
  end
54
71
 
72
+ # Bulk deletes users
73
+ #
74
+ # @param [Array<String>] user_ids The users to delete
75
+ #
76
+ # @return [Hash] the BulkOperation
77
+ def bulk_delete(user_ids: [])
78
+ request = post_request(
79
+ auth: true,
80
+ path: "/v1/users/bulk/delete",
81
+ body: {user_ids: user_ids}
82
+ )
83
+
84
+ execute_request(request: request)
85
+ end
86
+
87
+ # Gets a feed for a user
88
+ #
89
+ # @param [String] id The user id
90
+ # @param [String] channel_id The feed id to retrieve
91
+ # @param [Hash] options Options to pass to the feed query
92
+ #
93
+ # @return [Hash] the feed response
94
+ def get_feed(id:, channel_id:, options: {})
95
+ request = get_request(
96
+ auth: true,
97
+ path: "/v1/users/#{id}/feeds/#{channel_id}",
98
+ params: options
99
+ )
100
+
101
+ execute_request(request: request)
102
+ end
103
+
104
+ ##
105
+ # Preferences
106
+ ##
107
+
108
+ # Returns all preference sets for the user
109
+ #
110
+ # @param [String] user_id The ID of the user to retrieve preferences for
111
+ #
112
+ # @return [Hash] The preference sets
113
+ def get_all_preferences(user_id:)
114
+ endpoint = "/v1/users/#{user_id}/preferences"
115
+
116
+ request = get_request(
117
+ auth: true,
118
+ path: endpoint
119
+ )
120
+
121
+ execute_request(request: request)
122
+ end
123
+
124
+ # Gets a single preference set, defaults to the 'default' set
125
+ # for the user given.
126
+ #
127
+ # @param [String] user_id The ID of the user to retrieve preferences for
128
+ # @param [String] preference_set The preference set ID (defaults to `default`)
129
+ #
130
+ # @return [Hash] The preference set (if it exists)
131
+ def get_preferences(user_id:, preference_set: DEFAULT_PREFERENCE_SET_ID)
132
+ endpoint = "/v1/users/#{user_id}/preferences/#{preference_set}"
133
+
134
+ request = get_request(
135
+ auth: true,
136
+ path: endpoint
137
+ )
138
+
139
+ execute_request(request: request)
140
+ end
141
+
142
+ # Sets multiple preferences at once for the preference set.
143
+ #
144
+ # @param [String] user_id The ID of the user to set preferences for
145
+ # @param [String] preference_set The preference set ID (defaults to `default`)
146
+ # @param [Hash] channel_types The channel_types hash to set
147
+ # @param [Hash] workflows The workflows hash to set
148
+ # @param [Hash] categories The categories hash to set
149
+ #
150
+ # @return [Hash] The preference set
151
+ def set_preferences(
152
+ user_id:,
153
+ channel_types: nil,
154
+ workflows: nil,
155
+ categories: nil,
156
+ preference_set: DEFAULT_PREFERENCE_SET_ID
157
+ )
158
+ endpoint = "/v1/users/#{user_id}/preferences/#{preference_set}"
159
+
160
+ request = put_request(
161
+ auth: true,
162
+ path: endpoint,
163
+ body: {
164
+ channel_types: channel_types,
165
+ workflows: workflows,
166
+ categories: categories
167
+ }
168
+ )
169
+
170
+ execute_request(request: request)
171
+ end
172
+
173
+ # Bulk sets the preference object for the users.
174
+ #
175
+ # @param [Array<String>] user_ids The ID of the user to set preferences for
176
+ # @param [Hash] preferences The preferences hash to set
177
+ # @param [String] preference_set The preference set ID (defaults to `default`)
178
+ #
179
+ # @return [Hash] BulkOperation
180
+ def bulk_set_preferences(
181
+ user_ids: [],
182
+ preferences: {},
183
+ preference_set: DEFAULT_PREFERENCE_SET_ID
184
+ )
185
+ endpoint = "/v1/users/bulk/preferences"
186
+
187
+ # Put the preference set id if it doesn't already exist
188
+ unless preferences.has_key("id")
189
+ preferences["id"] = preference_set
190
+ end
191
+
192
+ request = put_request(
193
+ auth: true,
194
+ path: endpoint,
195
+ body: {
196
+ user_ids: user_ids,
197
+ preferences: preferences
198
+ }
199
+ )
200
+
201
+ execute_request(request: request)
202
+ end
203
+
204
+ # Sets preferences for the given channel type
205
+ #
206
+ # @param [String] user_id The ID of the user to set preferences for
207
+ # @param [String] preference_set The preference set ID (defaults to `default`)
208
+ # @param [String] channel_type The channel type to set
209
+ # @param [Bool] setting Whether the channel type is enabled or not
210
+ #
211
+ # @return [Hash] The preference set
212
+ def set_channel_type_preferences(user_id:, channel_type:, setting:, preference_set: DEFAULT_PREFERENCE_SET_ID)
213
+ endpoint = "/v1/users/#{user_id}/preferences/#{preference_set}/channel_types/#{channel_type}"
214
+
215
+ request = put_request(
216
+ auth: true,
217
+ path: endpoint,
218
+ body: {subscribed: setting}
219
+ )
220
+
221
+ execute_request(request: request)
222
+ end
223
+
224
+ # Sets preferences for the given workflow
225
+ #
226
+ # @param [String] user_id The ID of the user to set preferences for
227
+ # @param [String] preference_set The preference set ID (defaults to `default`)
228
+ # @param [String] workflow The workflow to set preferences for
229
+ # @param [Bool | Hash] setting Either a boolean to indicate if the type is enabled
230
+ # or a hash containing channel types and settings
231
+ #
232
+ # @return [Hash] The preference set
233
+ def set_workflow_preferences(user_id:, workflow:, setting:, preference_set: DEFAULT_PREFERENCE_SET_ID)
234
+ params = setting.is_a?(Hash) ? setting : {subscribed: setting}
235
+ endpoint = "/v1/users/#{user_id}/preferences/#{preference_set}/workflows/#{workflow}"
236
+
237
+ request = put_request(
238
+ auth: true,
239
+ path: endpoint,
240
+ body: params
241
+ )
242
+
243
+ execute_request(request: request)
244
+ end
245
+
246
+ # Sets preferences for the given category
247
+ #
248
+ # @param [String] user_id The ID of the user to set preferences for
249
+ # @param [String] preference_set The preference set ID (defaults to `default`)
250
+ # @param [String] category The category to set preferences for
251
+ # @param [Bool | Hash] setting Either a boolean to indicate if the type is enabled
252
+ # or a hash containing channel types and settings
253
+ #
254
+ # @return [Hash] The preference set
255
+ def set_category_preferences(user_id:, category:, setting:, preference_set: DEFAULT_PREFERENCE_SET_ID)
256
+ params = setting.is_a?(Hash) ? setting : {subscribed: setting}
257
+ endpoint = "/v1/users/#{user_id}/preferences/#{preference_set}/categories/#{category}"
258
+
259
+ request = put_request(
260
+ auth: true,
261
+ path: endpoint,
262
+ body: params
263
+ )
264
+
265
+ execute_request(request: request)
266
+ end
267
+
268
+ ##
269
+ # Channel data
270
+ ##
271
+
55
272
  # Get user's channel data for the given channel id
56
273
  #
57
274
  # @param [String] id the user ID
@@ -71,14 +288,14 @@ module Knock
71
288
  #
72
289
  # @param [String] id the user ID
73
290
  # @param [String] channel_id target channel ID
74
- # @param [String] channel_data channel data
291
+ # @param [Hash] channel_data channel data
75
292
  #
76
293
  # @return [Hash] channel data
77
294
  def set_channel_data(id:, channel_id:, channel_data:)
78
295
  request = put_request(
79
296
  auth: true,
80
297
  path: "/v1/users/#{id}/channel_data/#{channel_id}",
81
- body: { "data": channel_data }
298
+ body: {data: channel_data}
82
299
  )
83
300
 
84
301
  execute_request(request: request)
data/lib/knock/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Knock
4
- VERSION = "0.3.0"
4
+ VERSION = "0.4.0"
5
5
  end
@@ -11,8 +11,8 @@ module Knock
11
11
  # Triggers the workflow with the given key
12
12
  #
13
13
  # @param [String] key The workflow key
14
- # @param [String] actor The actor ID
15
- # @param [Array<String>] recipients The recipient IDs
14
+ # @param [String, Hash] actor The actor identifier
15
+ # @param [Array<String, Hash>] recipients The recipient identifiers
16
16
  # @param [Hash] data The data to pass to the workflow
17
17
  # @param [String] cancellation_key An optional key to identify this workflow
18
18
  # invocation for cancelling
@@ -41,7 +41,7 @@ module Knock
41
41
  #
42
42
  # @param [String] key The workflow key
43
43
  # @param [String] cancellation_key The cancellation key
44
- # @param [Array<String>] recipients The recipient IDs to cancel for
44
+ # @param [Array<String, Hash>] recipients The recipient identifiers
45
45
  #
46
46
  # @return [Hash] - Cancellation result
47
47
  def cancel(key:, cancellation_key:, recipients: nil)
data/lib/knock.rb CHANGED
@@ -25,6 +25,8 @@ module Knock
25
25
  autoload :Preferences, "knock/preferences"
26
26
  autoload :Users, "knock/users"
27
27
  autoload :Workflows, "knock/workflows"
28
+ autoload :BulkOperations, "knock/bulk_operations"
29
+ autoload :Objects, "knock/objects"
28
30
 
29
31
  # Errors
30
32
  autoload :APIError, "knock/errors"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: knockapi
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Knock Labs, Inc.
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-08-26 00:00:00.000000000 Z
11
+ date: 2022-01-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -73,8 +73,10 @@ files:
73
73
  - knockapi.gemspec
74
74
  - lib/knock.rb
75
75
  - lib/knock/base.rb
76
+ - lib/knock/bulk_operations.rb
76
77
  - lib/knock/client.rb
77
78
  - lib/knock/errors.rb
79
+ - lib/knock/objects.rb
78
80
  - lib/knock/preferences.rb
79
81
  - lib/knock/users.rb
80
82
  - lib/knock/version.rb
@@ -84,7 +86,7 @@ licenses:
84
86
  - MIT
85
87
  metadata:
86
88
  documentation_uri: https://docs.knock.app
87
- post_install_message:
89
+ post_install_message:
88
90
  rdoc_options: []
89
91
  require_paths:
90
92
  - lib
@@ -99,8 +101,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
99
101
  - !ruby/object:Gem::Version
100
102
  version: '0'
101
103
  requirements: []
102
- rubygems_version: 3.2.26
103
- signing_key:
104
+ rubygems_version: 3.3.3
105
+ signing_key:
104
106
  specification_version: 4
105
107
  summary: API client for Knock
106
108
  test_files: []