warrant 1.2.0 → 2.0.0.rc1

Sign up to get free protection for your applications and to get access to all the features.
@@ -2,16 +2,20 @@
2
2
 
3
3
  module Warrant
4
4
  class Permission
5
- attr_reader :permission_id
6
-
5
+ include Warrant::WarrantObject
6
+
7
+ attr_reader :permission_id, :name, :description
8
+
7
9
  # @!visibility private
8
- def initialize(permission_id)
10
+ def initialize(permission_id, name = nil, description = nil)
9
11
  @permission_id = permission_id
12
+ @name = name
13
+ @description = description
10
14
  end
11
15
 
12
16
  # Creates a permission with the given parameters
13
17
  #
14
- # @option params [String] :permission_id A string identifier for this new permission. The permission_id can only be composed of lower-case alphanumeric chars and/or '-' and '_'. (optional)
18
+ # @option params [String] :permission_id A string identifier for this new permission. The permission_id can only be composed of lower-case alphanumeric chars and/or '-' and '_'.
15
19
  #
16
20
  # @return [Permission] created permission
17
21
  #
@@ -20,19 +24,15 @@ module Warrant
20
24
  #
21
25
  # @raise [Warrant::DuplicateRecordError]
22
26
  # @raise [Warrant::InternalError]
23
- # @raise [Warrant::InvalidParameterError]
24
27
  # @raise [Warrant::InvalidRequestError]
25
- # @raise [Warrant::MissingRequiredParameterError]
26
- # @raise [Warrant::NotFoundError]
27
28
  # @raise [Warrant::UnauthorizedError]
28
- # @raise [Warrant::WarrantError]
29
29
  def self.create(params = {})
30
30
  res = APIOperations.post(URI.parse("#{::Warrant.config.api_base}/v1/permissions"), Util.normalize_params(params))
31
31
 
32
32
  case res
33
33
  when Net::HTTPSuccess
34
34
  res_json = JSON.parse(res.body)
35
- Permission.new(res_json['permissionId'])
35
+ Permission.new(res_json['permissionId'], res_json['name'], res_json['description'])
36
36
  else
37
37
  APIOperations.raise_error(res)
38
38
  end
@@ -40,7 +40,7 @@ module Warrant
40
40
 
41
41
  # Deletes a permission with given permission id
42
42
  #
43
- # @param permission_id [String] A string identifier for this new permission. The permission_id can only be composed of lower-case alphanumeric chars and/or '-' and '_'.
43
+ # @param permission_id [String] The permission_id of the permission to delete.
44
44
  #
45
45
  # @return [nil] if delete was successful
46
46
  #
@@ -48,10 +48,9 @@ module Warrant
48
48
  # Warrant::Permission.delete("test-permission")
49
49
  #
50
50
  # @raise [Warrant::InternalError]
51
- # @raise [Warrant::InvalidRequestError]
51
+ # @raise [Warrant::MissingRequiredParameterError]
52
52
  # @raise [Warrant::NotFoundError]
53
53
  # @raise [Warrant::UnauthorizedError]
54
- # @raise [Warrant::WarrantError]
55
54
  def self.delete(permission_id)
56
55
  res = APIOperations.delete(URI.parse("#{::Warrant.config.api_base}/v1/permissions/#{permission_id}"))
57
56
 
@@ -65,50 +64,121 @@ module Warrant
65
64
 
66
65
  # Lists all permissions for your organization
67
66
  #
68
- # @return [Array<Permission>] all permissions for organization
67
+ # @option filters [Integer] :page A positive integer (starting with 1) representing the page of items to return in response. Used in conjunction with the limit param. (optional)
68
+ # @option filters [Integer] :limit A positive integer representing the max number of items to return in response. (optional)
69
+ #
70
+ # @return [Array<Permission>] all permissions for your organization
69
71
  #
70
72
  # @example List all permissions
71
73
  # Warrant::Permission.list()
72
74
  #
73
75
  # @raise [Warrant::InternalError]
74
- # @raise [Warrant::InvalidRequestError]
75
- # @raise [Warrant::NotFoundError]
76
+ # @raise [Warrant::InvalidParameterError]
76
77
  # @raise [Warrant::UnauthorizedError]
77
- # @raise [Warrant::WarrantError]
78
78
  def self.list(filters = {})
79
- res = APIOperations.get(URI.parse("#{::Warrant.config.api_base}/v1/permissions"))
79
+ res = APIOperations.get(URI.parse("#{::Warrant.config.api_base}/v1/permissions"), Util.normalize_params(filters))
80
80
 
81
81
  case res
82
82
  when Net::HTTPSuccess
83
83
  permissions = JSON.parse(res.body)
84
- permissions.map{ |permission| Permission.new(permission['permissionId']) }
84
+ permissions.map{ |permission| Permission.new(permission['permissionId'], permission['name'], permission['description']) }
85
85
  else
86
86
  APIOperations.raise_error(res)
87
- end
87
+ end
88
88
  end
89
89
 
90
90
  # Get a permission with the given permission_id
91
91
  #
92
- # @param permission_id [String] A string identifier for this new permission. The permission_id can only be composed of lower-case alphanumeric chars and/or '-' and '_'.
92
+ # @param permission_id [String] The permission_id of the permission to retrieve.
93
93
  #
94
94
  # @return [Permission] retrieved permission
95
95
  #
96
96
  # @raise [Warrant::InternalError]
97
- # @raise [Warrant::InvalidParameterError]
98
- # @raise [Warrant::InvalidRequestError]
97
+ # @raise [Warrant::MissingRequiredParameterError]
99
98
  # @raise [Warrant::NotFoundError]
100
99
  # @raise [Warrant::UnauthorizedError]
101
- # @raise [Warrant::WarrantError]
102
100
  def self.get(permission_id)
103
101
  res = APIOperations.get(URI.parse("#{::Warrant.config.api_base}/v1/permissions/#{permission_id}"))
104
102
 
105
103
  case res
106
104
  when Net::HTTPSuccess
107
105
  permission = JSON.parse(res.body)
108
- Permission.new(permission['permissionId'])
106
+ Permission.new(permission['permissionId'], permission['name'], permission['description'])
109
107
  else
110
108
  APIOperations.raise_error(res)
111
- end
109
+ end
110
+ end
111
+
112
+ # Updates a permission with the given role_id and params
113
+ #
114
+ # @param permission_id [String] The permission_id of the permission to be updated.
115
+ # @param [Hash] params attributes to update user with
116
+ # @option params [String] :name Name for the permission. Designed to be used as a UI-friendly identifier. (optional)
117
+ # @option params [String] :description Description of the permission. Designed to be used as a UI-friendly identifier. (optional)
118
+ #
119
+ # @return [Permission] updated permission
120
+ #
121
+ # @example Update permission "test-permission"'s name
122
+ # Warrant::Permission.update("test-permission", { name: "Test Permission" })
123
+ #
124
+ # @raise [Warrant::InternalError]
125
+ # @raise [Warrant::InvalidParameterError]
126
+ # @raise [Warrant::InvalidRequestError]
127
+ # @raise [Warrant::NotFoundError]
128
+ # @raise [Warrant::UnauthorizedError]
129
+ def self.update(permission_id, params = {})
130
+ res = APIOperations.put(URI.parse("#{::Warrant.config.api_base}/v1/permissions/#{permission_id}"), Util.normalize_params(params))
131
+
132
+ case res
133
+ when Net::HTTPSuccess
134
+ res_json = JSON.parse(res.body)
135
+ Permission.new(res_json['permissionId'], res_json['name'], res_json['description'])
136
+ else
137
+ APIOperations.raise_error(res)
138
+ end
139
+ end
140
+
141
+ # Updates a permission with the given params
142
+ #
143
+ # @param [Hash] params attributes to update user with
144
+ # @option params [String] :name Name for the permission. Designed to be used as a UI-friendly identifier. (optional)
145
+ # @option params [String] :description Description of the permission. Designed to be used as a UI-friendly identifier. (optional)
146
+ #
147
+ # @return [Permission] updated permission
148
+ #
149
+ # @example Update permission "test-permission"'s name
150
+ # Warrant::Permission.update("test-permission", { name: "Test Permission" })
151
+ #
152
+ # @raise [Warrant::InternalError]
153
+ # @raise [Warrant::InvalidParameterError]
154
+ # @raise [Warrant::InvalidRequestError]
155
+ # @raise [Warrant::NotFoundError]
156
+ # @raise [Warrant::UnauthorizedError]
157
+ def update(params = {})
158
+ return Permission.update(permission_id, params)
159
+ end
160
+
161
+ # List permissions for a role
162
+ #
163
+ # @param role_id [String] The role_id of the role to list assigned permissions for.
164
+ # @option filters [Integer] :page A positive integer (starting with 1) representing the page of items to return in response. Used in conjunction with the limit param. (optional)
165
+ # @option filters [Integer] :limit A positive integer representing the max number of items to return in response. (optional)
166
+ #
167
+ # @return [Array<Permission>] all assigned permissions for the role
168
+ #
169
+ # @raise [Warrant::InternalError]
170
+ # @raise [Warrant::MissingRequiredParameterError]
171
+ # @raise [Warrant::UnauthorizedError]
172
+ def self.list_for_role(role_id, filters = {})
173
+ res = APIOperations.get(URI.parse("#{::Warrant.config.api_base}/v1/roles/#{role_id}/permissions"), Util.normalize_params(filters))
174
+
175
+ case res
176
+ when Net::HTTPSuccess
177
+ permissions = JSON.parse(res.body)
178
+ permissions.map{ |permission| Permission.new(permission['permissionId'], permission['name'], permission['description']) }
179
+ else
180
+ APIOperations.raise_error(res)
181
+ end
112
182
  end
113
183
 
114
184
  # Assign a permission to a role
@@ -118,33 +188,32 @@ module Warrant
118
188
  #
119
189
  # @return [Permission] assigned permission
120
190
  #
191
+ # @raise [Warrant::DuplicateRecordError]
121
192
  # @raise [Warrant::InternalError]
122
- # @raise [Warrant::InvalidRequestError]
193
+ # @raise [Warrant::InvalidParameterError]
123
194
  # @raise [Warrant::MissingRequiredParameterError]
124
195
  # @raise [Warrant::NotFoundError]
125
196
  # @raise [Warrant::UnauthorizedError]
126
- # @raise [Warrant::WarrantError]
127
197
  def self.assign_to_role(role_id, permission_id)
128
198
  res = APIOperations.post(URI.parse("#{::Warrant.config.api_base}/v1/roles/#{role_id}/permissions/#{permission_id}"))
129
199
 
130
200
  case res
131
201
  when Net::HTTPSuccess
132
202
  permission = JSON.parse(res.body)
133
- Permission.new(permission['permissionId'])
203
+ Permission.new(permission['permissionId'], permission['name'], permission['description'])
134
204
  else
135
205
  APIOperations.raise_error(res)
136
- end
206
+ end
137
207
  end
138
208
 
139
209
  # Remove a permission from a role
140
210
  #
141
- # @param role_id [String] The role_id of the role you want to assign a permission to.
142
- # @param permission_id [String] The permission_id of the permission you want to assign to a role.
211
+ # @param role_id [String] The role_id of the role you want to remove a permission from.
212
+ # @param permission_id [String] The permission_id of the permission you want to remove from a role.
143
213
  #
144
214
  # @return [nil] if remove was successful
145
215
  #
146
216
  # @raise [Warrant::InternalError]
147
- # @raise [Warrant::InvalidRequestError]
148
217
  # @raise [Warrant::MissingRequiredParameterError]
149
218
  # @raise [Warrant::NotFoundError]
150
219
  # @raise [Warrant::UnauthorizedError]
@@ -157,7 +226,30 @@ module Warrant
157
226
  return
158
227
  else
159
228
  APIOperations.raise_error(res)
160
- end
229
+ end
230
+ end
231
+
232
+ # List permissions for a user
233
+ #
234
+ # @param user_id [String] The user_id of the user to list assigned permissions for.
235
+ # @option filters [Integer] :page A positive integer (starting with 1) representing the page of items to return in response. Used in conjunction with the limit param. (optional)
236
+ # @option filters [Integer] :limit A positive integer representing the max number of items to return in response. (optional)
237
+ #
238
+ # @return [Array<Permission>] all assigned permissions for the user
239
+ #
240
+ # @raise [Warrant::InternalError]
241
+ # @raise [Warrant::MissingRequiredParameterError]
242
+ # @raise [Warrant::UnauthorizedError]
243
+ def self.list_for_user(user_id, filters = {})
244
+ res = APIOperations.get(URI.parse("#{::Warrant.config.api_base}/v1/users/#{user_id}/permissions"), Util.normalize_params(filters))
245
+
246
+ case res
247
+ when Net::HTTPSuccess
248
+ permissions = JSON.parse(res.body)
249
+ permissions.map{ |permission| Permission.new(permission['permissionId'], permission['name'], permission['description']) }
250
+ else
251
+ APIOperations.raise_error(res)
252
+ end
161
253
  end
162
254
 
163
255
  # Assign a permission to a user
@@ -167,33 +259,32 @@ module Warrant
167
259
  #
168
260
  # @return [Permission] assigned permission
169
261
  #
262
+ # @raise [Warrant::DuplicateRecordError]
170
263
  # @raise [Warrant::InternalError]
171
- # @raise [Warrant::InvalidRequestError]
264
+ # @raise [Warrant::InvalidParameterError]
172
265
  # @raise [Warrant::MissingRequiredParameterError]
173
266
  # @raise [Warrant::NotFoundError]
174
267
  # @raise [Warrant::UnauthorizedError]
175
- # @raise [Warrant::WarrantError]
176
268
  def self.assign_to_user(user_id, permission_id)
177
269
  res = APIOperations.post(URI.parse("#{::Warrant.config.api_base}/v1/users/#{user_id}/permissions/#{permission_id}"))
178
270
 
179
271
  case res
180
272
  when Net::HTTPSuccess
181
273
  permission = JSON.parse(res.body)
182
- Permission.new(permission['permissionId'])
274
+ Permission.new(permission['permissionId'], permission['name'], permission['description'])
183
275
  else
184
276
  APIOperations.raise_error(res)
185
- end
277
+ end
186
278
  end
187
279
 
188
280
  # Remove a permission from a user
189
281
  #
190
- # @param user_id [String] The user_id of the user you want to assign a permission to.
191
- # @param permission_id [String] The permission_id of the permission you want to assign to a user.
282
+ # @param user_id [String] The user_id of the user you want to remove a permission from.
283
+ # @param permission_id [String] The permission_id of the permission you want to remove from a user.
192
284
  #
193
285
  # @return [nil] if remove was successful
194
286
  #
195
287
  # @raise [Warrant::InternalError]
196
- # @raise [Warrant::InvalidRequestError]
197
288
  # @raise [Warrant::MissingRequiredParameterError]
198
289
  # @raise [Warrant::NotFoundError]
199
290
  # @raise [Warrant::UnauthorizedError]
@@ -206,7 +297,15 @@ module Warrant
206
297
  return
207
298
  else
208
299
  APIOperations.raise_error(res)
209
- end
300
+ end
301
+ end
302
+
303
+ def warrant_object_type
304
+ "permission"
305
+ end
306
+
307
+ def warrant_object_id
308
+ permission_id
210
309
  end
211
310
  end
212
311
  end
@@ -0,0 +1,328 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Warrant
4
+ class PricingTier
5
+ include Warrant::WarrantObject
6
+
7
+ attr_reader :pricing_tier_id
8
+
9
+ # @!visibility private
10
+ def initialize(pricing_tier_id)
11
+ @pricing_tier_id = pricing_tier_id
12
+ end
13
+
14
+ # Creates a pricing tier with the given parameters
15
+ #
16
+ # @option params [String] :pricing_tier_id A string identifier for this new pricing tier. The pricing_tier_id can only be composed of lower-case alphanumeric chars and/or '-' and '_'.
17
+ #
18
+ # @return [PricingTier] created pricing tier
19
+ #
20
+ # @example Create a new PricingTier with the pricing tier id "test-pricing-tier"
21
+ # Warrant::PricingTier.create(pricing_tier_id: "test-pricing-tier")
22
+ #
23
+ # @raise [Warrant::DuplicateRecordError]
24
+ # @raise [Warrant::InternalError]
25
+ # @raise [Warrant::InvalidRequestError]
26
+ # @raise [Warrant::UnauthorizedError]
27
+ def self.create(params = {})
28
+ res = APIOperations.post(URI.parse("#{::Warrant.config.api_base}/v1/pricing-tiers"), Util.normalize_params(params))
29
+
30
+ case res
31
+ when Net::HTTPSuccess
32
+ res_json = JSON.parse(res.body)
33
+ PricingTier.new(res_json['pricingTierId'])
34
+ else
35
+ APIOperations.raise_error(res)
36
+ end
37
+ end
38
+
39
+ # Deletes a pricing tier with given pricing tier id
40
+ #
41
+ # @param pricing_tier_id [String] The pricing_tier_id of the pricing tier to delete.
42
+ #
43
+ # @return [nil] if delete was successful
44
+ #
45
+ # @example Delete a PricingTier with the pricing tier id "test-pricing-tier"
46
+ # Warrant::PricingTier.delete("test-pricing-tier")
47
+ #
48
+ # @raise [Warrant::InternalError]
49
+ # @raise [Warrant::InvalidParameterError]
50
+ # @raise [Warrant::NotFoundError]
51
+ # @raise [Warrant::UnauthorizedError]
52
+ def self.delete(pricing_tier_id)
53
+ res = APIOperations.delete(URI.parse("#{::Warrant.config.api_base}/v1/pricing-tiers/#{pricing_tier_id}"))
54
+
55
+ case res
56
+ when Net::HTTPSuccess
57
+ return
58
+ else
59
+ APIOperations.raise_error(res)
60
+ end
61
+ end
62
+
63
+ # Lists all pricing tiers for your organization
64
+ #
65
+ # @option filters [Integer] :page A positive integer (starting with 1) representing the page of items to return in response. Used in conjunction with the limit param. (optional)
66
+ # @option filters [Integer] :limit A positive integer representing the max number of items to return in response. (optional)
67
+ #
68
+ # @return [Array<Feature>] all pricing tiers for your organization
69
+ #
70
+ # @example List all pricing tiers
71
+ # Warrant::PricingTier.list()
72
+ #
73
+ # @raise [Warrant::InternalError]
74
+ # @raise [Warrant::UnauthorizedError]
75
+ def self.list(filters = {})
76
+ res = APIOperations.get(URI.parse("#{::Warrant.config.api_base}/v1/pricing-tiers"), Util.normalize_params(filters))
77
+
78
+ case res
79
+ when Net::HTTPSuccess
80
+ pricing_tiers = JSON.parse(res.body)
81
+ pricing_tiers.map{ |pricing_tier| PricingTier.new(pricing_tier['pricingTierId']) }
82
+ else
83
+ APIOperations.raise_error(res)
84
+ end
85
+ end
86
+
87
+ # Get a pricing_tier with the given pricing_tier_id
88
+ #
89
+ # @param pricing_tier_id [String] The pricing_tier_id of the pricing tier to retrieve.
90
+ #
91
+ # @return [PricingTier] retrieved pricing tier
92
+ #
93
+ # @raise [Warrant::InternalError]
94
+ # @raise [Warrant::InvalidParameterError]
95
+ # @raise [Warrant::NotFoundError]
96
+ # @raise [Warrant::UnauthorizedError]
97
+ def self.get(pricing_tier_id)
98
+ res = APIOperations.get(URI.parse("#{::Warrant.config.api_base}/v1/pricing-tiers/#{pricing_tier_id}"))
99
+
100
+ case res
101
+ when Net::HTTPSuccess
102
+ pricing_tier = JSON.parse(res.body)
103
+ PricingTier.new(pricing_tier['pricingTierId'])
104
+ else
105
+ APIOperations.raise_error(res)
106
+ end
107
+ end
108
+
109
+
110
+ # List pricing tiers for tenant
111
+ #
112
+ # @param tenant_id [String] The tenant_id of the tenant to list pricing tiers for.
113
+ # @option filters [Integer] :page A positive integer (starting with 1) representing the page of items to return in response. Used in conjunction with the limit param. (optional)
114
+ # @option filters [Integer] :limit A positive integer representing the max number of items to return in response. (optional)
115
+ #
116
+ # @return [Array<PricingTier>] assigned pricing tiers for the tenant
117
+ #
118
+ # @raise [Warrant::InternalError]
119
+ # @raise [Warrant::InvalidParameterError]
120
+ # @raise [Warrant::UnauthorizedError]
121
+ def self.list_for_tenant(tenant_id, filters = {})
122
+ res = APIOperations.get(URI.parse("#{::Warrant.config.api_base}/v1/tenants/#{tenant_id}/pricing-tiers"), Util.normalize_params(filters))
123
+
124
+ case res
125
+ when Net::HTTPSuccess
126
+ pricing_tiers = JSON.parse(res.body)
127
+ pricing_tiers.map{ |pricing_tier| PricingTier.new(pricing_tier['pricingTierId']) }
128
+ else
129
+ APIOperations.raise_error(res)
130
+ end
131
+ end
132
+
133
+ # Assign a pricing tier to a tenant
134
+ #
135
+ # @param tenant_id [String] The tenant_id of the tenant you want to assign a pricing tier to.
136
+ # @param pricing_tier_id [String] The pricing_tier_id of the pricing tier you want to assign to a tenant.
137
+ #
138
+ # @return [PricingTier] assigned pricing tier
139
+ #
140
+ # @raise [Warrant::DuplicateRecordError]
141
+ # @raise [Warrant::InternalError]
142
+ # @raise [Warrant::InvalidParameterError]
143
+ # @raise [Warrant::NotFoundError]
144
+ # @raise [Warrant::UnauthorizedError]
145
+ def self.assign_to_tenant(tenant_id, pricing_tier_id)
146
+ res = APIOperations.post(URI.parse("#{::Warrant.config.api_base}/v1/tenants/#{tenant_id}/pricing-tiers/#{pricing_tier_id}"))
147
+
148
+ case res
149
+ when Net::HTTPSuccess
150
+ pricing_tier = JSON.parse(res.body)
151
+ PricingTier.new(pricing_tier['pricingTierId'])
152
+ else
153
+ APIOperations.raise_error(res)
154
+ end
155
+ end
156
+
157
+ # Remove a pricing tier from a tenant
158
+ #
159
+ # @param tenant_id [String] The tenant_id of the tenant you want to remove a pricing tier from.
160
+ # @param pricing_tier_id [String] The pricing_tier_id of the pricing tier you want to remove from a tenant.
161
+ #
162
+ # @return [nil] if remove was successful
163
+ #
164
+ # @raise [Warrant::InternalError]
165
+ # @raise [Warrant::InvalidParameterError]
166
+ # @raise [Warrant::NotFoundError]
167
+ # @raise [Warrant::UnauthorizedError]
168
+ # @raise [Warrant::WarrantError]
169
+ def self.remove_from_tenant(tenant_id, pricing_tier_id)
170
+ res = APIOperations.delete(URI.parse("#{::Warrant.config.api_base}/v1/tenants/#{tenant_id}/pricing-tiers/#{pricing_tier_id}"))
171
+
172
+ case res
173
+ when Net::HTTPSuccess
174
+ return
175
+ else
176
+ APIOperations.raise_error(res)
177
+ end
178
+ end
179
+
180
+ # List pricing tiers for user
181
+ #
182
+ # @param user_id [String] The user_id of the user to list pricing tiers for.
183
+ # @option filters [Integer] :page A positive integer (starting with 1) representing the page of items to return in response. Used in conjunction with the limit param. (optional)
184
+ # @option filters [Integer] :limit A positive integer representing the max number of items to return in response. (optional)
185
+ #
186
+ # @return [Array<PricingTier>] assigned pricing tiers for the user
187
+ #
188
+ # @raise [Warrant::InternalError]
189
+ # @raise [Warrant::InvalidParameterError]
190
+ # @raise [Warrant::UnauthorizedError]
191
+ def self.list_for_user(user_id, filters = {})
192
+ res = APIOperations.get(URI.parse("#{::Warrant.config.api_base}/v1/users/#{user_id}/pricing-tiers"), Util.normalize_params(filters))
193
+
194
+ case res
195
+ when Net::HTTPSuccess
196
+ pricing_tiers = JSON.parse(res.body)
197
+ pricing_tiers.map{ |pricing_tier| PricingTier.new(pricing_tier['pricingTierId']) }
198
+ else
199
+ APIOperations.raise_error(res)
200
+ end
201
+ end
202
+
203
+ # Assign a pricing tier to a user
204
+ #
205
+ # @param user_id [String] The user_id of the user you want to assign a pricing tier to.
206
+ # @param pricing_tier_id [String] The pricing_tier_id of the pricing tier you want to assign to a user.
207
+ #
208
+ # @return [PricingTier] assigned pricing tier
209
+ #
210
+ # @raise [Warrant::DuplicateRecordError]
211
+ # @raise [Warrant::InternalError]
212
+ # @raise [Warrant::InvalidParameterError]
213
+ # @raise [Warrant::NotFoundError]
214
+ # @raise [Warrant::UnauthorizedError]
215
+ def self.assign_to_user(user_id, pricing_tier_id)
216
+ res = APIOperations.post(URI.parse("#{::Warrant.config.api_base}/v1/users/#{user_id}/pricing-tiers/#{pricing_tier_id}"))
217
+
218
+ case res
219
+ when Net::HTTPSuccess
220
+ pricing_tier = JSON.parse(res.body)
221
+ PricingTier.new(pricing_tier['pricingTierId'])
222
+ else
223
+ APIOperations.raise_error(res)
224
+ end
225
+ end
226
+
227
+ # Remove a pricing tier from a user
228
+ #
229
+ # @param user_id [String] The user_id of the user you want to remove a pricing tier from.
230
+ # @param pricing_tier_id [String] The pricing_tier_id of the pricing tier you want to remove from a user.
231
+ #
232
+ # @return [nil] if remove was successful
233
+ #
234
+ # @raise [Warrant::InternalError]
235
+ # @raise [Warrant::InvalidParameterError]
236
+ # @raise [Warrant::NotFoundError]
237
+ # @raise [Warrant::UnauthorizedError]
238
+ # @raise [Warrant::WarrantError]
239
+ def self.remove_from_user(user_id, pricing_tier_id)
240
+ res = APIOperations.delete(URI.parse("#{::Warrant.config.api_base}/v1/users/#{user_id}/pricing-tiers/#{pricing_tier_id}"))
241
+
242
+ case res
243
+ when Net::HTTPSuccess
244
+ return
245
+ else
246
+ APIOperations.raise_error(res)
247
+ end
248
+ end
249
+
250
+ # List features for a pricing tier
251
+ #
252
+ # @option filters [Integer] :page A positive integer (starting with 1) representing the page of items to return in response. Used in conjunction with the limit param. (optional)
253
+ # @option filters [Integer] :limit A positive integer representing the max number of items to return in response. (optional)
254
+ #
255
+ # @return [Array<Feature>] assigned features for the pricing tier
256
+ #
257
+ # @raise [Warrant::InternalError]
258
+ # @raise [Warrant::InvalidParameterError]
259
+ # @raise [Warrant::UnauthorizedError]
260
+ def list_features(filters = {})
261
+ return Feature.list_for_pricing_tier(pricing_tier_id, filters)
262
+ end
263
+
264
+ # Assign a feature to a pricing tier
265
+ #
266
+ # @param feature_id [String] The feature_id of the feature you want to assign to the pricing tier.
267
+ #
268
+ # @return [Feature] assigned feature
269
+ #
270
+ # @raise [Warrant::DuplicateRecordError]
271
+ # @raise [Warrant::InternalError]
272
+ # @raise [Warrant::InvalidParameterError]
273
+ # @raise [Warrant::NotFoundError]
274
+ # @raise [Warrant::UnauthorizedError]
275
+ def assign_feature(feature_id)
276
+ return Feature.assign_to_pricing_tier(pricing_tier_id, feature_id)
277
+ end
278
+
279
+ # Remove a feature from a pricing tier
280
+ #
281
+ # @param feature_id [String] The feature_id of the feature you want to assign from the pricing tier.
282
+ #
283
+ # @return [nil] if remove was successful
284
+ #
285
+ # @raise [Warrant::InternalError]
286
+ # @raise [Warrant::InvalidParameterError]
287
+ # @raise [Warrant::NotFoundError]
288
+ # @raise [Warrant::UnauthorizedError]
289
+ # @raise [Warrant::WarrantError]
290
+ def remove_feature(feature_id)
291
+ return Feature.remove_from_pricing_tier(pricing_tier_id, feature_id)
292
+ end
293
+
294
+ # Check whether a pricing tier has a given feature
295
+ #
296
+ # @param feature_id [String] The feature_id of the feature to check whether the pricing tier has access to.
297
+ # @option options [Hash] :context Object containing key-value pairs that specifies the context the warrant should be checked in. (optional)
298
+ # @option options [Boolean] :consistent_read Boolean flag indicating whether or not to enforce strict consistency for this access check. Defaults to false. (optional)
299
+ # @option options [Boolean] :debug Boolean flag indicating whether or not to return debug information for this access check. Defaults to false. (optional)
300
+ #
301
+ # @return [Boolean] whether or not the pricing tier has the given feature
302
+ #
303
+ # @raise [Warrant::InternalError]
304
+ # @raise [Warrant::InvalidParameterError]
305
+ # @raise [Warrant::NotFoundError]
306
+ # @raise [Warrant::UnauthorizedError]
307
+ def has_feature?(feature_id, opts = {})
308
+ return Warrant.has_feature?(
309
+ feature_id: feature_id,
310
+ subject: {
311
+ object_type: "pricing-tier",
312
+ object_id: pricing_tier_id
313
+ },
314
+ context: opts[:context],
315
+ consistent_read: opts[:consistent_read],
316
+ debug: opts[:debug]
317
+ )
318
+ end
319
+
320
+ def warrant_object_type
321
+ "pricing-tier"
322
+ end
323
+
324
+ def warrant_object_id
325
+ pricing_tier_id
326
+ end
327
+ end
328
+ end