auth0 6.3.0 → 6.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.
Files changed (100) hide show
  1. checksums.yaml +4 -4
  2. data/.fern/metadata.json +5 -4
  3. data/.fern/replay.lock +7 -1
  4. data/.version +1 -1
  5. data/CHANGELOG.md +6 -0
  6. data/examples/ruby-api/Gemfile.lock +1 -1
  7. data/lib/auth0/clients/types/create_client_request_content.rb +2 -0
  8. data/lib/auth0/experimentation/client.rb +10 -0
  9. data/lib/auth0/experimentation/experiments/client.rb +304 -0
  10. data/lib/auth0/experimentation/experiments/types/create_experiment_request_content.rb +27 -0
  11. data/lib/auth0/experimentation/experiments/types/list_experiments_request_parameters.rb +21 -0
  12. data/lib/auth0/experimentation/experiments/types/update_experiment_request_parameters.rb +25 -0
  13. data/lib/auth0/experimentation/experiments/types/update_experiment_status_request_content.rb +15 -0
  14. data/lib/auth0/experimentation/feature_flags/client.rb +280 -0
  15. data/lib/auth0/experimentation/feature_flags/types/create_feature_flag_request_content.rb +17 -0
  16. data/lib/auth0/experimentation/feature_flags/types/list_feature_flags_request_parameters.rb +19 -0
  17. data/lib/auth0/experimentation/feature_flags/types/update_feature_flag_request_content.rb +19 -0
  18. data/lib/auth0/experimentation/feature_flags/types/update_feature_flag_status_request_content.rb +15 -0
  19. data/lib/auth0/experimentation/feature_flags/variations/client.rb +230 -0
  20. data/lib/auth0/experimentation/feature_flags/variations/types/create_variation_request_content.rb +21 -0
  21. data/lib/auth0/experimentation/feature_flags/variations/types/update_variation_request_content.rb +23 -0
  22. data/lib/auth0/experimentation/segments/client.rb +228 -0
  23. data/lib/auth0/experimentation/segments/types/create_segment_request_content.rb +17 -0
  24. data/lib/auth0/experimentation/segments/types/list_segments_request_parameters.rb +17 -0
  25. data/lib/auth0/experimentation/segments/types/update_segment_request_content.rb +19 -0
  26. data/lib/auth0/organizations/client.rb +0 -5
  27. data/lib/auth0/resource_servers/types/create_resource_server_request_content.rb +2 -0
  28. data/lib/auth0/resource_servers/types/update_resource_server_request_content.rb +2 -0
  29. data/lib/auth0/types/allocation_item.rb +27 -0
  30. data/lib/auth0/types/allocation_request_item.rb +19 -0
  31. data/lib/auth0/types/{connection_deletion_behavior_enum.rb → allocation_strategy_enum.rb} +3 -3
  32. data/lib/auth0/types/async_approval_notifications_channels_enum.rb +1 -0
  33. data/lib/auth0/types/authentication_flow_enum.rb +16 -0
  34. data/lib/auth0/types/client_oidc_backchannel_logout_initiators_enum.rb +1 -0
  35. data/lib/auth0/types/client_oidc_support_allowed_scopes_enum.rb +14 -0
  36. data/lib/auth0/types/client_oidc_support_post.rb +15 -0
  37. data/lib/auth0/types/create_experiment_response_content.rb +45 -0
  38. data/lib/auth0/types/create_feature_flag_parameters.rb +23 -0
  39. data/lib/auth0/types/create_feature_flag_response_content.rb +23 -0
  40. data/lib/auth0/types/create_resource_server_response_content.rb +2 -0
  41. data/lib/auth0/types/create_segment_response_content.rb +21 -0
  42. data/lib/auth0/types/create_variation_response_content.rb +21 -0
  43. data/lib/auth0/types/{organization_deletion_behavior_enum.rb → default_config_enum.rb} +3 -3
  44. data/lib/auth0/types/experiment_list_item.rb +45 -0
  45. data/lib/auth0/types/experiment_status_enum.rb +15 -0
  46. data/lib/auth0/types/experiment_transition_status_enum.rb +14 -0
  47. data/lib/auth0/types/experiment_validation_error.rb +11 -0
  48. data/lib/auth0/types/feature_flag.rb +23 -0
  49. data/lib/auth0/types/feature_flag_config_param.rb +13 -0
  50. data/lib/auth0/types/feature_flag_config_param_type_enum.rb +15 -0
  51. data/lib/auth0/types/feature_flag_config_params.rb +23 -0
  52. data/lib/auth0/types/feature_flag_status_enum.rb +13 -0
  53. data/lib/auth0/types/feature_flag_type_enum.rb +12 -0
  54. data/lib/auth0/types/get_experiment_response_content.rb +45 -0
  55. data/lib/auth0/types/get_feature_flag_response_content.rb +23 -0
  56. data/lib/auth0/types/get_resource_server_response_content.rb +2 -0
  57. data/lib/auth0/types/get_segment_response_content.rb +21 -0
  58. data/lib/auth0/types/get_variation_response_content.rb +21 -0
  59. data/lib/auth0/types/list_experiments_response_content.rb +11 -0
  60. data/lib/auth0/types/list_feature_flags_response_content.rb +11 -0
  61. data/lib/auth0/types/list_segments_response_content.rb +11 -0
  62. data/lib/auth0/types/list_variations_response_content.rb +9 -0
  63. data/lib/auth0/types/oauth_scope.rb +3 -1
  64. data/lib/auth0/types/resource_server.rb +2 -0
  65. data/lib/auth0/types/resource_server_search_response.rb +2 -0
  66. data/lib/auth0/types/segment.rb +21 -0
  67. data/lib/auth0/types/segment_contains_expression.rb +9 -0
  68. data/lib/auth0/types/segment_ends_with_expression.rb +9 -0
  69. data/lib/auth0/types/segment_exists_expression.rb +9 -0
  70. data/lib/auth0/types/segment_match_conditions.rb +30 -0
  71. data/lib/auth0/types/segment_match_expression.rb +19 -0
  72. data/lib/auth0/types/segment_not_match_conditions.rb +30 -0
  73. data/lib/auth0/types/segment_rule.rb +11 -0
  74. data/lib/auth0/types/segment_starts_with_expression.rb +9 -0
  75. data/lib/auth0/types/segment_type_enum.rb +12 -0
  76. data/lib/auth0/types/segment_type_filter_enum.rb +12 -0
  77. data/lib/auth0/types/update_experiment_response_content.rb +45 -0
  78. data/lib/auth0/types/update_experiment_status_response_content.rb +45 -0
  79. data/lib/auth0/types/update_feature_flag_parameters.rb +23 -0
  80. data/lib/auth0/types/update_feature_flag_response_content.rb +23 -0
  81. data/lib/auth0/types/update_feature_flag_status_response_content.rb +23 -0
  82. data/lib/auth0/types/update_resource_server_response_content.rb +2 -0
  83. data/lib/auth0/types/update_segment_response_content.rb +21 -0
  84. data/lib/auth0/types/update_variation_overrides_map.rb +23 -0
  85. data/lib/auth0/types/update_variation_response_content.rb +21 -0
  86. data/lib/auth0/types/validate_experiment_response_content.rb +11 -0
  87. data/lib/auth0/types/variation.rb +21 -0
  88. data/lib/auth0/types/variation_overrides_map.rb +23 -0
  89. data/lib/auth0/users/client.rb +24 -17
  90. data/lib/auth0/version.rb +1 -1
  91. data/lib/auth0.rb +68 -9
  92. data/wiremock/wiremock-mappings.json +861 -123
  93. metadata +70 -11
  94. data/lib/auth0/organizations/organization_template/client.rb +0 -132
  95. data/lib/auth0/types/organization_template.rb +0 -39
  96. data/lib/auth0/types/organization_template_allowed_strategy_enum.rb +0 -17
  97. data/lib/auth0/types/organization_template_role_visibility_enum.rb +0 -13
  98. data/lib/auth0/types/organization_template_role_visibility_override.rb +0 -12
  99. data/lib/auth0/types/organization_template_role_visibility_policy.rb +0 -12
  100. data/lib/auth0/types/organization_template_use_for_organization_discovery.rb +0 -12
@@ -0,0 +1,280 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Auth0
4
+ module Experimentation
5
+ module FeatureFlags
6
+ class Client
7
+ # @param client [Auth0::Internal::Http::RawClient]
8
+ #
9
+ # @return [void]
10
+ def initialize(client:)
11
+ @client = client
12
+ end
13
+
14
+ # Retrieve a paginated list of feature flags for the tenant.
15
+ #
16
+ # @param request_options [Hash]
17
+ # @param params [Hash]
18
+ # @option request_options [String] :base_url
19
+ # @option request_options [Hash{String => Object}] :additional_headers
20
+ # @option request_options [Hash{String => Object}] :additional_query_parameters
21
+ # @option request_options [Hash{String => Object}] :additional_body_parameters
22
+ # @option request_options [Integer] :timeout_in_seconds
23
+ # @option params [String, nil] :from
24
+ # @option params [Integer, nil] :take
25
+ # @option params [Auth0::Types::FeatureFlagTypeEnum, nil] :type
26
+ # @option params [Auth0::Types::FeatureFlagStatusEnum, nil] :status
27
+ #
28
+ # @example
29
+ # client.experimentation.feature_flags.list(
30
+ # from: "from",
31
+ # take: 1,
32
+ # type: "auth0",
33
+ # status: "draft"
34
+ # )
35
+ #
36
+ # @return [Auth0::Types::ListFeatureFlagsResponseContent]
37
+ def list(request_options: {}, **params)
38
+ params = Auth0::Internal::Types::Utils.normalize_keys(params)
39
+ query_params = {}
40
+ query_params["from"] = params[:from] if params.key?(:from)
41
+ query_params["take"] = params.fetch(:take, 50)
42
+ query_params["type"] = params[:type] if params.key?(:type)
43
+ query_params["status"] = params[:status] if params.key?(:status)
44
+
45
+ Auth0::Internal::CursorItemIterator.new(
46
+ cursor_field: :next_,
47
+ item_field: :feature_flags,
48
+ initial_cursor: query_params["from"]
49
+ ) do |next_cursor|
50
+ query_params["from"] = next_cursor
51
+ request = Auth0::Internal::JSON::Request.new(
52
+ base_url: request_options[:base_url],
53
+ method: "GET",
54
+ path: "experimentation/feature-flags",
55
+ query: query_params,
56
+ request_options: request_options
57
+ )
58
+ begin
59
+ response = @client.send(request)
60
+ rescue Net::HTTPRequestTimeout
61
+ raise Auth0::Errors::TimeoutError
62
+ end
63
+ code = response.code.to_i
64
+ if code.between?(200, 299)
65
+ parsed_response = (response.body.to_s.empty? ? nil : Auth0::Types::ListFeatureFlagsResponseContent.load(response.body))
66
+ [parsed_response, response]
67
+ else
68
+ error_class = Auth0::Errors::ResponseError.subclass_for_code(code)
69
+ raise error_class.new(response.body, code: code)
70
+ end
71
+ end
72
+ end
73
+
74
+ # Create a new feature flag with parameters for use in experiments.
75
+ #
76
+ # @param request_options [Hash]
77
+ # @param params [Auth0::Experimentation::FeatureFlags::Types::CreateFeatureFlagRequestContent]
78
+ # @option request_options [String] :base_url
79
+ # @option request_options [Hash{String => Object}] :additional_headers
80
+ # @option request_options [Hash{String => Object}] :additional_query_parameters
81
+ # @option request_options [Hash{String => Object}] :additional_body_parameters
82
+ # @option request_options [Integer] :timeout_in_seconds
83
+ #
84
+ # @example
85
+ # client.experimentation.feature_flags.create(
86
+ # name: "name",
87
+ # parameters: {}
88
+ # )
89
+ #
90
+ # @return [Auth0::Types::CreateFeatureFlagResponseContent]
91
+ def create(request_options: {}, **params)
92
+ params = Auth0::Internal::Types::Utils.normalize_keys(params)
93
+ request = Auth0::Internal::JSON::Request.new(
94
+ base_url: request_options[:base_url],
95
+ method: "POST",
96
+ path: "experimentation/feature-flags",
97
+ body: Auth0::Experimentation::FeatureFlags::Types::CreateFeatureFlagRequestContent.new(params).to_h,
98
+ request_options: request_options
99
+ )
100
+ begin
101
+ response = @client.send(request)
102
+ rescue Net::HTTPRequestTimeout
103
+ raise Auth0::Errors::TimeoutError
104
+ end
105
+ code = response.code.to_i
106
+ if code.between?(200, 299)
107
+ (response.body.to_s.empty? ? nil : Auth0::Types::CreateFeatureFlagResponseContent.load(response.body))
108
+ else
109
+ error_class = Auth0::Errors::ResponseError.subclass_for_code(code)
110
+ raise error_class.new(response.body, code: code)
111
+ end
112
+ end
113
+
114
+ # Retrieve a single feature flag by its ID.
115
+ #
116
+ # @param request_options [Hash]
117
+ # @param params [Hash]
118
+ # @option request_options [String] :base_url
119
+ # @option request_options [Hash{String => Object}] :additional_headers
120
+ # @option request_options [Hash{String => Object}] :additional_query_parameters
121
+ # @option request_options [Hash{String => Object}] :additional_body_parameters
122
+ # @option request_options [Integer] :timeout_in_seconds
123
+ # @option params [String] :id
124
+ #
125
+ # @example
126
+ # client.experimentation.feature_flags.get(id: "id")
127
+ #
128
+ # @return [Auth0::Types::GetFeatureFlagResponseContent]
129
+ def get(request_options: {}, **params)
130
+ params = Auth0::Internal::Types::Utils.normalize_keys(params)
131
+ request = Auth0::Internal::JSON::Request.new(
132
+ base_url: request_options[:base_url],
133
+ method: "GET",
134
+ path: "experimentation/feature-flags/#{URI.encode_uri_component(params[:id].to_s)}",
135
+ request_options: request_options
136
+ )
137
+ begin
138
+ response = @client.send(request)
139
+ rescue Net::HTTPRequestTimeout
140
+ raise Auth0::Errors::TimeoutError
141
+ end
142
+ code = response.code.to_i
143
+ if code.between?(200, 299)
144
+ (response.body.to_s.empty? ? nil : Auth0::Types::GetFeatureFlagResponseContent.load(response.body))
145
+ else
146
+ error_class = Auth0::Errors::ResponseError.subclass_for_code(code)
147
+ raise error_class.new(response.body, code: code)
148
+ end
149
+ end
150
+
151
+ # Delete a feature flag by ID. Idempotent: returns 204 even if flag does not exist.
152
+ #
153
+ # @param request_options [Hash]
154
+ # @param params [Hash]
155
+ # @option request_options [String] :base_url
156
+ # @option request_options [Hash{String => Object}] :additional_headers
157
+ # @option request_options [Hash{String => Object}] :additional_query_parameters
158
+ # @option request_options [Hash{String => Object}] :additional_body_parameters
159
+ # @option request_options [Integer] :timeout_in_seconds
160
+ # @option params [String] :id
161
+ #
162
+ # @example
163
+ # client.experimentation.feature_flags.delete(id: "id")
164
+ #
165
+ # @return [untyped]
166
+ def delete(request_options: {}, **params)
167
+ params = Auth0::Internal::Types::Utils.normalize_keys(params)
168
+ request = Auth0::Internal::JSON::Request.new(
169
+ base_url: request_options[:base_url],
170
+ method: "DELETE",
171
+ path: "experimentation/feature-flags/#{URI.encode_uri_component(params[:id].to_s)}",
172
+ request_options: request_options
173
+ )
174
+ begin
175
+ response = @client.send(request)
176
+ rescue Net::HTTPRequestTimeout
177
+ raise Auth0::Errors::TimeoutError
178
+ end
179
+ code = response.code.to_i
180
+ return if code.between?(200, 299)
181
+
182
+ error_class = Auth0::Errors::ResponseError.subclass_for_code(code)
183
+ raise error_class.new(response.body, code: code)
184
+ end
185
+
186
+ # Partially update a feature flag by ID. Only provided fields are updated.
187
+ #
188
+ # @param request_options [Hash]
189
+ # @param params [Auth0::Experimentation::FeatureFlags::Types::UpdateFeatureFlagRequestContent]
190
+ # @option request_options [String] :base_url
191
+ # @option request_options [Hash{String => Object}] :additional_headers
192
+ # @option request_options [Hash{String => Object}] :additional_query_parameters
193
+ # @option request_options [Hash{String => Object}] :additional_body_parameters
194
+ # @option request_options [Integer] :timeout_in_seconds
195
+ # @option params [String] :id
196
+ #
197
+ # @example
198
+ # client.experimentation.feature_flags.update(id: "id")
199
+ #
200
+ # @return [Auth0::Types::UpdateFeatureFlagResponseContent]
201
+ def update(request_options: {}, **params)
202
+ params = Auth0::Internal::Types::Utils.normalize_keys(params)
203
+ request_data = Auth0::Experimentation::FeatureFlags::Types::UpdateFeatureFlagRequestContent.new(params).to_h
204
+ non_body_param_names = %w[id]
205
+ body = request_data.except(*non_body_param_names)
206
+
207
+ request = Auth0::Internal::JSON::Request.new(
208
+ base_url: request_options[:base_url],
209
+ method: "PATCH",
210
+ path: "experimentation/feature-flags/#{URI.encode_uri_component(params[:id].to_s)}",
211
+ body: body,
212
+ request_options: request_options
213
+ )
214
+ begin
215
+ response = @client.send(request)
216
+ rescue Net::HTTPRequestTimeout
217
+ raise Auth0::Errors::TimeoutError
218
+ end
219
+ code = response.code.to_i
220
+ if code.between?(200, 299)
221
+ (response.body.to_s.empty? ? nil : Auth0::Types::UpdateFeatureFlagResponseContent.load(response.body))
222
+ else
223
+ error_class = Auth0::Errors::ResponseError.subclass_for_code(code)
224
+ raise error_class.new(response.body, code: code)
225
+ end
226
+ end
227
+
228
+ # Transitions a feature flag through its lifecycle states: draft → active, draft → archived, active → archived.
229
+ #
230
+ # @param request_options [Hash]
231
+ # @param params [Auth0::Experimentation::FeatureFlags::Types::UpdateFeatureFlagStatusRequestContent]
232
+ # @option request_options [String] :base_url
233
+ # @option request_options [Hash{String => Object}] :additional_headers
234
+ # @option request_options [Hash{String => Object}] :additional_query_parameters
235
+ # @option request_options [Hash{String => Object}] :additional_body_parameters
236
+ # @option request_options [Integer] :timeout_in_seconds
237
+ # @option params [String] :id
238
+ #
239
+ # @example
240
+ # client.experimentation.feature_flags.update_status(
241
+ # id: "id",
242
+ # status: "draft"
243
+ # )
244
+ #
245
+ # @return [Auth0::Types::UpdateFeatureFlagStatusResponseContent]
246
+ def update_status(request_options: {}, **params)
247
+ params = Auth0::Internal::Types::Utils.normalize_keys(params)
248
+ request_data = Auth0::Experimentation::FeatureFlags::Types::UpdateFeatureFlagStatusRequestContent.new(params).to_h
249
+ non_body_param_names = %w[id]
250
+ body = request_data.except(*non_body_param_names)
251
+
252
+ request = Auth0::Internal::JSON::Request.new(
253
+ base_url: request_options[:base_url],
254
+ method: "POST",
255
+ path: "experimentation/feature-flags/#{URI.encode_uri_component(params[:id].to_s)}/status",
256
+ body: body,
257
+ request_options: request_options
258
+ )
259
+ begin
260
+ response = @client.send(request)
261
+ rescue Net::HTTPRequestTimeout
262
+ raise Auth0::Errors::TimeoutError
263
+ end
264
+ code = response.code.to_i
265
+ if code.between?(200, 299)
266
+ (response.body.to_s.empty? ? nil : Auth0::Types::UpdateFeatureFlagStatusResponseContent.load(response.body))
267
+ else
268
+ error_class = Auth0::Errors::ResponseError.subclass_for_code(code)
269
+ raise error_class.new(response.body, code: code)
270
+ end
271
+ end
272
+
273
+ # @return [Auth0::Variations::Client]
274
+ def variations
275
+ @variations ||= Auth0::Experimentation::FeatureFlags::Variations::Client.new(client: @client)
276
+ end
277
+ end
278
+ end
279
+ end
280
+ end
@@ -0,0 +1,17 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Auth0
4
+ module Experimentation
5
+ module FeatureFlags
6
+ module Types
7
+ class CreateFeatureFlagRequestContent < Internal::Types::Model
8
+ field :name, -> { String }, optional: false, nullable: false
9
+
10
+ field :description, -> { String }, optional: true, nullable: false
11
+
12
+ field :parameters, -> { Internal::Types::Hash[String, Auth0::Types::FeatureFlagConfigParam] }, optional: false, nullable: false
13
+ end
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,19 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Auth0
4
+ module Experimentation
5
+ module FeatureFlags
6
+ module Types
7
+ class ListFeatureFlagsRequestParameters < Internal::Types::Model
8
+ field :from, -> { String }, optional: true, nullable: false
9
+
10
+ field :take, -> { Integer }, optional: true, nullable: false
11
+
12
+ field :type, -> { Auth0::Types::FeatureFlagTypeEnum }, optional: true, nullable: false
13
+
14
+ field :status, -> { Auth0::Types::FeatureFlagStatusEnum }, optional: true, nullable: false
15
+ end
16
+ end
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,19 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Auth0
4
+ module Experimentation
5
+ module FeatureFlags
6
+ module Types
7
+ class UpdateFeatureFlagRequestContent < Internal::Types::Model
8
+ field :id, -> { String }, optional: false, nullable: false
9
+
10
+ field :name, -> { String }, optional: true, nullable: false
11
+
12
+ field :description, -> { String }, optional: true, nullable: false
13
+
14
+ field :parameters, -> { Internal::Types::Hash[String, Auth0::Types::FeatureFlagConfigParam] }, optional: true, nullable: false
15
+ end
16
+ end
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,15 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Auth0
4
+ module Experimentation
5
+ module FeatureFlags
6
+ module Types
7
+ class UpdateFeatureFlagStatusRequestContent < Internal::Types::Model
8
+ field :id, -> { String }, optional: false, nullable: false
9
+
10
+ field :status, -> { Auth0::Types::FeatureFlagStatusEnum }, optional: false, nullable: false
11
+ end
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,230 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Auth0
4
+ module Experimentation
5
+ module FeatureFlags
6
+ module Variations
7
+ class Client
8
+ # @param client [Auth0::Internal::Http::RawClient]
9
+ #
10
+ # @return [void]
11
+ def initialize(client:)
12
+ @client = client
13
+ end
14
+
15
+ # Retrieve all variations defined for a specific feature flag.
16
+ #
17
+ # @param request_options [Hash]
18
+ # @param params [Hash]
19
+ # @option request_options [String] :base_url
20
+ # @option request_options [Hash{String => Object}] :additional_headers
21
+ # @option request_options [Hash{String => Object}] :additional_query_parameters
22
+ # @option request_options [Hash{String => Object}] :additional_body_parameters
23
+ # @option request_options [Integer] :timeout_in_seconds
24
+ # @option params [String] :id
25
+ #
26
+ # @example
27
+ # client.experimentation.feature_flags.variations.list(id: "id")
28
+ #
29
+ # @return [Auth0::Types::ListVariationsResponseContent]
30
+ def list(request_options: {}, **params)
31
+ params = Auth0::Internal::Types::Utils.normalize_keys(params)
32
+ request = Auth0::Internal::JSON::Request.new(
33
+ base_url: request_options[:base_url],
34
+ method: "GET",
35
+ path: "experimentation/feature-flags/#{URI.encode_uri_component(params[:id].to_s)}/variations",
36
+ request_options: request_options
37
+ )
38
+ begin
39
+ response = @client.send(request)
40
+ rescue Net::HTTPRequestTimeout
41
+ raise Auth0::Errors::TimeoutError
42
+ end
43
+ code = response.code.to_i
44
+ if code.between?(200, 299)
45
+ (response.body.to_s.empty? ? nil : Auth0::Types::ListVariationsResponseContent.load(response.body))
46
+ else
47
+ error_class = Auth0::Errors::ResponseError.subclass_for_code(code)
48
+ raise error_class.new(response.body, code: code)
49
+ end
50
+ end
51
+
52
+ # Create a new variation with parameter overrides for a specific feature flag.
53
+ #
54
+ # @param request_options [Hash]
55
+ # @param params [Auth0::Experimentation::FeatureFlags::Variations::Types::CreateVariationRequestContent]
56
+ # @option request_options [String] :base_url
57
+ # @option request_options [Hash{String => Object}] :additional_headers
58
+ # @option request_options [Hash{String => Object}] :additional_query_parameters
59
+ # @option request_options [Hash{String => Object}] :additional_body_parameters
60
+ # @option request_options [Integer] :timeout_in_seconds
61
+ # @option params [String] :id
62
+ #
63
+ # @example
64
+ # client.experimentation.feature_flags.variations.create(
65
+ # id: "id",
66
+ # name: "name",
67
+ # overrides: {
68
+ # key: "value"
69
+ # }
70
+ # )
71
+ #
72
+ # @return [Auth0::Types::CreateVariationResponseContent]
73
+ def create(request_options: {}, **params)
74
+ params = Auth0::Internal::Types::Utils.normalize_keys(params)
75
+ request_data = Auth0::Experimentation::FeatureFlags::Variations::Types::CreateVariationRequestContent.new(params).to_h
76
+ non_body_param_names = %w[id]
77
+ body = request_data.except(*non_body_param_names)
78
+
79
+ request = Auth0::Internal::JSON::Request.new(
80
+ base_url: request_options[:base_url],
81
+ method: "POST",
82
+ path: "experimentation/feature-flags/#{URI.encode_uri_component(params[:id].to_s)}/variations",
83
+ body: body,
84
+ request_options: request_options
85
+ )
86
+ begin
87
+ response = @client.send(request)
88
+ rescue Net::HTTPRequestTimeout
89
+ raise Auth0::Errors::TimeoutError
90
+ end
91
+ code = response.code.to_i
92
+ if code.between?(200, 299)
93
+ (response.body.to_s.empty? ? nil : Auth0::Types::CreateVariationResponseContent.load(response.body))
94
+ else
95
+ error_class = Auth0::Errors::ResponseError.subclass_for_code(code)
96
+ raise error_class.new(response.body, code: code)
97
+ end
98
+ end
99
+
100
+ # Retrieve a single variation by its ID.
101
+ #
102
+ # @param request_options [Hash]
103
+ # @param params [Hash]
104
+ # @option request_options [String] :base_url
105
+ # @option request_options [Hash{String => Object}] :additional_headers
106
+ # @option request_options [Hash{String => Object}] :additional_query_parameters
107
+ # @option request_options [Hash{String => Object}] :additional_body_parameters
108
+ # @option request_options [Integer] :timeout_in_seconds
109
+ # @option params [String] :id
110
+ # @option params [String] :vid
111
+ #
112
+ # @example
113
+ # client.experimentation.feature_flags.variations.get(
114
+ # id: "id",
115
+ # vid: "vid"
116
+ # )
117
+ #
118
+ # @return [Auth0::Types::GetVariationResponseContent]
119
+ def get(request_options: {}, **params)
120
+ params = Auth0::Internal::Types::Utils.normalize_keys(params)
121
+ request = Auth0::Internal::JSON::Request.new(
122
+ base_url: request_options[:base_url],
123
+ method: "GET",
124
+ path: "experimentation/feature-flags/#{URI.encode_uri_component(params[:id].to_s)}/variations/#{URI.encode_uri_component(params[:vid].to_s)}",
125
+ request_options: request_options
126
+ )
127
+ begin
128
+ response = @client.send(request)
129
+ rescue Net::HTTPRequestTimeout
130
+ raise Auth0::Errors::TimeoutError
131
+ end
132
+ code = response.code.to_i
133
+ if code.between?(200, 299)
134
+ (response.body.to_s.empty? ? nil : Auth0::Types::GetVariationResponseContent.load(response.body))
135
+ else
136
+ error_class = Auth0::Errors::ResponseError.subclass_for_code(code)
137
+ raise error_class.new(response.body, code: code)
138
+ end
139
+ end
140
+
141
+ # Delete a variation by ID. Returns 204 if the variation does not exist. Returns 404 if the parent feature
142
+ # flag does not exist.
143
+ #
144
+ # @param request_options [Hash]
145
+ # @param params [Hash]
146
+ # @option request_options [String] :base_url
147
+ # @option request_options [Hash{String => Object}] :additional_headers
148
+ # @option request_options [Hash{String => Object}] :additional_query_parameters
149
+ # @option request_options [Hash{String => Object}] :additional_body_parameters
150
+ # @option request_options [Integer] :timeout_in_seconds
151
+ # @option params [String] :id
152
+ # @option params [String] :vid
153
+ #
154
+ # @example
155
+ # client.experimentation.feature_flags.variations.delete(
156
+ # id: "id",
157
+ # vid: "vid"
158
+ # )
159
+ #
160
+ # @return [untyped]
161
+ def delete(request_options: {}, **params)
162
+ params = Auth0::Internal::Types::Utils.normalize_keys(params)
163
+ request = Auth0::Internal::JSON::Request.new(
164
+ base_url: request_options[:base_url],
165
+ method: "DELETE",
166
+ path: "experimentation/feature-flags/#{URI.encode_uri_component(params[:id].to_s)}/variations/#{URI.encode_uri_component(params[:vid].to_s)}",
167
+ request_options: request_options
168
+ )
169
+ begin
170
+ response = @client.send(request)
171
+ rescue Net::HTTPRequestTimeout
172
+ raise Auth0::Errors::TimeoutError
173
+ end
174
+ code = response.code.to_i
175
+ return if code.between?(200, 299)
176
+
177
+ error_class = Auth0::Errors::ResponseError.subclass_for_code(code)
178
+ raise error_class.new(response.body, code: code)
179
+ end
180
+
181
+ # Partially update a variation by ID. Only provided fields are updated.
182
+ #
183
+ # @param request_options [Hash]
184
+ # @param params [Auth0::Experimentation::FeatureFlags::Variations::Types::UpdateVariationRequestContent]
185
+ # @option request_options [String] :base_url
186
+ # @option request_options [Hash{String => Object}] :additional_headers
187
+ # @option request_options [Hash{String => Object}] :additional_query_parameters
188
+ # @option request_options [Hash{String => Object}] :additional_body_parameters
189
+ # @option request_options [Integer] :timeout_in_seconds
190
+ # @option params [String] :id
191
+ # @option params [String] :vid
192
+ #
193
+ # @example
194
+ # client.experimentation.feature_flags.variations.update(
195
+ # id: "id",
196
+ # vid: "vid"
197
+ # )
198
+ #
199
+ # @return [Auth0::Types::UpdateVariationResponseContent]
200
+ def update(request_options: {}, **params)
201
+ params = Auth0::Internal::Types::Utils.normalize_keys(params)
202
+ request_data = Auth0::Experimentation::FeatureFlags::Variations::Types::UpdateVariationRequestContent.new(params).to_h
203
+ non_body_param_names = %w[id vid]
204
+ body = request_data.except(*non_body_param_names)
205
+
206
+ request = Auth0::Internal::JSON::Request.new(
207
+ base_url: request_options[:base_url],
208
+ method: "PATCH",
209
+ path: "experimentation/feature-flags/#{URI.encode_uri_component(params[:id].to_s)}/variations/#{URI.encode_uri_component(params[:vid].to_s)}",
210
+ body: body,
211
+ request_options: request_options
212
+ )
213
+ begin
214
+ response = @client.send(request)
215
+ rescue Net::HTTPRequestTimeout
216
+ raise Auth0::Errors::TimeoutError
217
+ end
218
+ code = response.code.to_i
219
+ if code.between?(200, 299)
220
+ (response.body.to_s.empty? ? nil : Auth0::Types::UpdateVariationResponseContent.load(response.body))
221
+ else
222
+ error_class = Auth0::Errors::ResponseError.subclass_for_code(code)
223
+ raise error_class.new(response.body, code: code)
224
+ end
225
+ end
226
+ end
227
+ end
228
+ end
229
+ end
230
+ end
@@ -0,0 +1,21 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Auth0
4
+ module Experimentation
5
+ module FeatureFlags
6
+ module Variations
7
+ module Types
8
+ class CreateVariationRequestContent < Internal::Types::Model
9
+ field :id, -> { String }, optional: false, nullable: false
10
+
11
+ field :name, -> { String }, optional: false, nullable: false
12
+
13
+ field :description, -> { String }, optional: true, nullable: false
14
+
15
+ field :overrides, -> { Internal::Types::Hash[String, Object] }, optional: false, nullable: false
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,23 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Auth0
4
+ module Experimentation
5
+ module FeatureFlags
6
+ module Variations
7
+ module Types
8
+ class UpdateVariationRequestContent < Internal::Types::Model
9
+ field :id, -> { String }, optional: false, nullable: false
10
+
11
+ field :vid, -> { String }, optional: false, nullable: false
12
+
13
+ field :name, -> { String }, optional: true, nullable: false
14
+
15
+ field :description, -> { String }, optional: true, nullable: false
16
+
17
+ field :overrides, -> { Internal::Types::Hash[String, Object] }, optional: true, nullable: false
18
+ end
19
+ end
20
+ end
21
+ end
22
+ end
23
+ end