launchdarkly_api 18.0.2 → 19.0.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 (73) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +8 -4
  3. data/docs/AIConfig.md +3 -1
  4. data/docs/AiConfigsMetricDataSourceRefRep.md +1 -1
  5. data/docs/AiConfigsMetricListingRep.md +1 -1
  6. data/docs/DataExportDestinationsApi.md +74 -0
  7. data/docs/Environment.md +2 -0
  8. data/docs/Experiment.md +2 -0
  9. data/docs/ExperimentPost.md +3 -1
  10. data/docs/FeatureFlagsApi.md +2 -2
  11. data/docs/GenerateTrustPolicyPostRep.md +18 -0
  12. data/docs/MetricDataSourceRefRep.md +1 -1
  13. data/docs/MetricGroupRep.md +1 -5
  14. data/docs/MetricListingRep.md +1 -1
  15. data/docs/MetricRep.md +1 -1
  16. data/docs/Metrics.md +7 -1
  17. data/docs/MetricsApi.md +3 -3
  18. data/docs/MetricsBetaApi.md +3 -3
  19. data/docs/PostReleasePolicyRequest.md +1 -1
  20. data/docs/PutReleasePolicyRequest.md +1 -1
  21. data/docs/RelayAutoConfigRep.md +1 -1
  22. data/docs/ReleasePolicy.md +1 -1
  23. data/docs/ScheduledChangesApi.md +1 -1
  24. data/docs/SegmentsApi.md +1 -1
  25. data/docs/TrustPolicyDetails.md +20 -0
  26. data/docs/TrustPolicyStatement.md +24 -0
  27. data/lib/launchdarkly_api/api/data_export_destinations_api.rb +69 -0
  28. data/lib/launchdarkly_api/api/feature_flags_api.rb +2 -2
  29. data/lib/launchdarkly_api/api/metrics_api.rb +4 -4
  30. data/lib/launchdarkly_api/api/metrics_beta_api.rb +4 -4
  31. data/lib/launchdarkly_api/api/scheduled_changes_api.rb +2 -2
  32. data/lib/launchdarkly_api/api/segments_api.rb +2 -2
  33. data/lib/launchdarkly_api/models/ai_config.rb +16 -4
  34. data/lib/launchdarkly_api/models/ai_configs_metric_data_source_ref_rep.rb +17 -0
  35. data/lib/launchdarkly_api/models/ai_configs_metric_listing_rep.rb +17 -0
  36. data/lib/launchdarkly_api/models/destination.rb +2 -2
  37. data/lib/launchdarkly_api/models/destination_post.rb +2 -2
  38. data/lib/launchdarkly_api/models/environment.rb +10 -1
  39. data/lib/launchdarkly_api/models/experiment.rb +13 -1
  40. data/lib/launchdarkly_api/models/experiment_post.rb +16 -4
  41. data/lib/launchdarkly_api/models/generate_trust_policy_post_rep.rb +220 -0
  42. data/lib/launchdarkly_api/models/iteration_rep.rb +29 -5
  43. data/lib/launchdarkly_api/models/metric_data_source_ref_rep.rb +17 -0
  44. data/lib/launchdarkly_api/models/metric_group_rep.rb +4 -24
  45. data/lib/launchdarkly_api/models/metric_listing_rep.rb +17 -0
  46. data/lib/launchdarkly_api/models/metric_rep.rb +17 -0
  47. data/lib/launchdarkly_api/models/metrics.rb +118 -4
  48. data/lib/launchdarkly_api/models/naming_convention.rb +2 -2
  49. data/lib/launchdarkly_api/models/relay_auto_config_rep.rb +0 -17
  50. data/lib/launchdarkly_api/models/trust_policy_details.rb +233 -0
  51. data/lib/launchdarkly_api/models/trust_policy_statement.rb +255 -0
  52. data/lib/launchdarkly_api/version.rb +1 -1
  53. data/lib/launchdarkly_api.rb +3 -0
  54. data/spec/api/data_export_destinations_api_spec.rb +13 -0
  55. data/spec/api/feature_flags_api_spec.rb +1 -1
  56. data/spec/api/metrics_api_spec.rb +2 -2
  57. data/spec/api/metrics_beta_api_spec.rb +2 -2
  58. data/spec/api/scheduled_changes_api_spec.rb +1 -1
  59. data/spec/api/segments_api_spec.rb +1 -1
  60. data/spec/models/ai_config_spec.rb +6 -0
  61. data/spec/models/destination_post_spec.rb +1 -1
  62. data/spec/models/destination_spec.rb +1 -1
  63. data/spec/models/environment_spec.rb +6 -0
  64. data/spec/models/experiment_post_spec.rb +6 -0
  65. data/spec/models/experiment_spec.rb +6 -0
  66. data/spec/models/generate_trust_policy_post_rep_spec.rb +36 -0
  67. data/spec/models/iteration_rep_spec.rb +4 -0
  68. data/spec/models/metric_group_rep_spec.rb +0 -12
  69. data/spec/models/metrics_spec.rb +18 -0
  70. data/spec/models/naming_convention_spec.rb +1 -1
  71. data/spec/models/trust_policy_details_spec.rb +42 -0
  72. data/spec/models/trust_policy_statement_spec.rb +54 -0
  73. metadata +14 -2
@@ -0,0 +1,24 @@
1
+ # LaunchDarklyApi::TrustPolicyStatement
2
+
3
+ ## Properties
4
+
5
+ | Name | Type | Description | Notes |
6
+ | ---- | ---- | ----------- | ----- |
7
+ | **effect** | **String** | The effect of trust policy statement | [optional] |
8
+ | **action** | **Array<String>** | The action of trust policy statement | [optional] |
9
+ | **principal** | **Object** | The principal of trust policy statement | [optional] |
10
+ | **condition** | **Object** | The condition of trust policy statement | [optional] |
11
+
12
+ ## Example
13
+
14
+ ```ruby
15
+ require 'launchdarkly_api'
16
+
17
+ instance = LaunchDarklyApi::TrustPolicyStatement.new(
18
+ effect: null,
19
+ action: null,
20
+ principal: null,
21
+ condition: null
22
+ )
23
+ ```
24
+
@@ -392,6 +392,75 @@ module LaunchDarklyApi
392
392
  return data, status_code, headers
393
393
  end
394
394
 
395
+ # Generate trust policy
396
+ # Trust policy to allow Data Export to assume the role and perform operations on AWS resources
397
+ # @param proj_key [String] The project key
398
+ # @param env_key [String] The environment key
399
+ # @param [Hash] opts the optional parameters
400
+ # @return [GenerateTrustPolicyPostRep]
401
+ def post_generate_trust_policy(proj_key, env_key, opts = {})
402
+ data, _status_code, _headers = post_generate_trust_policy_with_http_info(proj_key, env_key, opts)
403
+ data
404
+ end
405
+
406
+ # Generate trust policy
407
+ # Trust policy to allow Data Export to assume the role and perform operations on AWS resources
408
+ # @param proj_key [String] The project key
409
+ # @param env_key [String] The environment key
410
+ # @param [Hash] opts the optional parameters
411
+ # @return [Array<(GenerateTrustPolicyPostRep, Integer, Hash)>] GenerateTrustPolicyPostRep data, response status code and response headers
412
+ def post_generate_trust_policy_with_http_info(proj_key, env_key, opts = {})
413
+ if @api_client.config.debugging
414
+ @api_client.config.logger.debug 'Calling API: DataExportDestinationsApi.post_generate_trust_policy ...'
415
+ end
416
+ # verify the required parameter 'proj_key' is set
417
+ if @api_client.config.client_side_validation && proj_key.nil?
418
+ fail ArgumentError, "Missing the required parameter 'proj_key' when calling DataExportDestinationsApi.post_generate_trust_policy"
419
+ end
420
+ # verify the required parameter 'env_key' is set
421
+ if @api_client.config.client_side_validation && env_key.nil?
422
+ fail ArgumentError, "Missing the required parameter 'env_key' when calling DataExportDestinationsApi.post_generate_trust_policy"
423
+ end
424
+ # resource path
425
+ local_var_path = '/api/v2/destinations/projects/{projKey}/environments/{envKey}/generate-trust-policy'.sub('{' + 'projKey' + '}', CGI.escape(proj_key.to_s)).sub('{' + 'envKey' + '}', CGI.escape(env_key.to_s))
426
+
427
+ # query parameters
428
+ query_params = opts[:query_params] || {}
429
+
430
+ # header parameters
431
+ header_params = opts[:header_params] || {}
432
+ # HTTP header 'Accept' (if needed)
433
+ header_params['Accept'] = @api_client.select_header_accept(['application/json']) unless header_params['Accept']
434
+
435
+ # form parameters
436
+ form_params = opts[:form_params] || {}
437
+
438
+ # http body (model)
439
+ post_body = opts[:debug_body]
440
+
441
+ # return_type
442
+ return_type = opts[:debug_return_type] || 'GenerateTrustPolicyPostRep'
443
+
444
+ # auth_names
445
+ auth_names = opts[:debug_auth_names] || ['ApiKey']
446
+
447
+ new_options = opts.merge(
448
+ :operation => :"DataExportDestinationsApi.post_generate_trust_policy",
449
+ :header_params => header_params,
450
+ :query_params => query_params,
451
+ :form_params => form_params,
452
+ :body => post_body,
453
+ :auth_names => auth_names,
454
+ :return_type => return_type
455
+ )
456
+
457
+ data, status_code, headers = @api_client.call_api(:POST, local_var_path, new_options)
458
+ if @api_client.config.debugging
459
+ @api_client.config.logger.debug "API called: DataExportDestinationsApi#post_generate_trust_policy\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
460
+ end
461
+ return data, status_code, headers
462
+ end
463
+
395
464
  # Generate Snowflake destination key pair
396
465
  # Generate key pair to allow Data Export to authenticate into a Snowflake warehouse destination
397
466
  # @param [Hash] opts the optional parameters
@@ -618,7 +618,7 @@ module LaunchDarklyApi
618
618
  # @option opts [Integer] :limit The number of feature flags to return. Defaults to 20.
619
619
  # @option opts [Integer] :offset Where to start in the list. Use this with pagination. For example, an offset of 10 skips the first ten items and then returns the next items in the list, up to the query &#x60;limit&#x60;.
620
620
  # @option opts [Boolean] :archived Deprecated, use &#x60;filter&#x3D;archived:true&#x60; instead. A boolean to filter the list to archived flags. When this is absent, only unarchived flags will be returned
621
- # @option opts [Boolean] :summary By default, flags do _not_ include their lists of prerequisites, targets, or rules for each environment. Set &#x60;summary&#x3D;0&#x60; to include these fields for each flag returned.
621
+ # @option opts [Boolean] :summary By default, flags do _not_ include their lists of prerequisites, targets, or rules for each environment. Set &#x60;summary&#x3D;0&#x60; and include the &#x60;env&#x60; query parameter to include these fields for each flag returned.
622
622
  # @option opts [String] :filter A comma-separated list of filters. Each filter is of the form field:value. Read the endpoint description for a full list of available filter fields.
623
623
  # @option opts [String] :sort A comma-separated list of fields to sort by. Fields prefixed by a dash ( - ) sort in descending order. Read the endpoint description for a full list of available sort fields.
624
624
  # @option opts [Boolean] :compare Deprecated, unavailable in API version &#x60;20240415&#x60;. A boolean to filter results by only flags that have differences between environments.
@@ -638,7 +638,7 @@ module LaunchDarklyApi
638
638
  # @option opts [Integer] :limit The number of feature flags to return. Defaults to 20.
639
639
  # @option opts [Integer] :offset Where to start in the list. Use this with pagination. For example, an offset of 10 skips the first ten items and then returns the next items in the list, up to the query &#x60;limit&#x60;.
640
640
  # @option opts [Boolean] :archived Deprecated, use &#x60;filter&#x3D;archived:true&#x60; instead. A boolean to filter the list to archived flags. When this is absent, only unarchived flags will be returned
641
- # @option opts [Boolean] :summary By default, flags do _not_ include their lists of prerequisites, targets, or rules for each environment. Set &#x60;summary&#x3D;0&#x60; to include these fields for each flag returned.
641
+ # @option opts [Boolean] :summary By default, flags do _not_ include their lists of prerequisites, targets, or rules for each environment. Set &#x60;summary&#x3D;0&#x60; and include the &#x60;env&#x60; query parameter to include these fields for each flag returned.
642
642
  # @option opts [String] :filter A comma-separated list of filters. Each filter is of the form field:value. Read the endpoint description for a full list of available filter fields.
643
643
  # @option opts [String] :sort A comma-separated list of fields to sort by. Fields prefixed by a dash ( - ) sort in descending order. Read the endpoint description for a full list of available sort fields.
644
644
  # @option opts [Boolean] :compare Deprecated, unavailable in API version &#x60;20240415&#x60;. A boolean to filter results by only flags that have differences between environments.
@@ -164,14 +164,14 @@ module LaunchDarklyApi
164
164
  end
165
165
 
166
166
  # List metrics
167
- # Get a list of all metrics for the specified project. ### Filtering metrics The `filter` parameter supports the following operators: `contains`, `equals`, `anyOf`. #### Supported fields and operators You can only filter certain fields in metrics when using the `filter` parameter. Additionally, you can only filter some fields with certain operators. When you search for metrics, the `filter` parameter supports the following fields and operators: |<div style=\"width:120px\">Field</div> |Description |Supported operators | |---|---|---| | `eventKind` | The metric event kind. One of `custom`, `pageview`, `click`. | `equals` | | `hasConnections` | Whether the metric has connections to experiments or guarded rollouts. One of `true`, `false`. | `equals` | | `isNumeric` | Whether the metric is numeric. One of `true`, `false`. | `equals` | | `maintainerIds` | A comma-separated list of metric maintainer IDs. | `anyOf` | | `maintainerTeamKey` | The metric maintainer team key. | `equals` | | `query` | A \"fuzzy\" search across metric key and name. Supply a string or list of strings to the operator. | `equals` | | `tags` | The metric tags. | `contains` | | `unitAggregationType` | The metric's unit aggregation type. One of `sum`, `average`. | `equals` | For example, the filter `?filter=tags contains [\"tag1\", \"tag2\", \"tag3\"]` matches metrics that have all three tags. The documented values for `filter` query parameters are prior to URL encoding. For example, the `[` in `?filter=tags contains [\"tag1\", \"tag2\", \"tag3\"]` must be encoded to `%5B`. ### Expanding the metric list response LaunchDarkly supports expanding the \"List metrics\" response. By default, the expandable field is **not** included in the response. To expand the response, append the `expand` query parameter and add the following supported field: - `experimentCount` includes the number of experiments from the specific project that use the metric For example, `expand=experimentCount` includes the `experimentCount` field for each metric in the response.
167
+ # Get a list of all metrics for the specified project. ### Filtering metrics The `filter` parameter supports the following operators: `contains`, `equals`, `anyOf`. #### Supported fields and operators You can only filter certain fields in metrics when using the `filter` parameter. Additionally, you can only filter some fields with certain operators. When you search for metrics, the `filter` parameter supports the following fields and operators: |<div style=\"width:120px\">Field</div> |Description |Supported operators | |---|---|---| | `eventKind` | The metric event kind. One of `custom`, `pageview`, `click`. | `equals` | | `hasConnections` | Whether the metric has connections to experiments or guarded rollouts. One of `true`, `false`. | `equals` | | `isNumeric` | Whether the metric is numeric. One of `true`, `false`. | `equals` | | `maintainerIds` | A comma-separated list of metric maintainer IDs. | `anyOf` | | `maintainerTeamKey` | The metric maintainer team key. | `equals` | | `metricUsedIn` | Filter by where the metric is used. One of `experiments`, `guarded_rollouts`, `any`, `none`. | `equals` | | `query` | A \"fuzzy\" search across metric key and name. Supply a string or list of strings to the operator. | `equals` | | `tags` | The metric tags. | `contains` | | `unitAggregationType` | The metric's unit aggregation type. One of `sum`, `average`. | `equals` | For example, the filter `?filter=tags contains [\"tag1\", \"tag2\", \"tag3\"]` matches metrics that have all three tags. The documented values for `filter` query parameters are prior to URL encoding. For example, the `[` in `?filter=tags contains [\"tag1\", \"tag2\", \"tag3\"]` must be encoded to `%5B`. ### Expanding the metric list response LaunchDarkly supports expanding the \"List metrics\" response. By default, the expandable field is **not** included in the response. To expand the response, append the `expand` query parameter and add the following supported field: - `experimentCount` includes the number of experiments from the specific project that use the metric For example, `expand=experimentCount` includes the `experimentCount` field for each metric in the response.
168
168
  # @param project_key [String] The project key
169
169
  # @param [Hash] opts the optional parameters
170
170
  # @option opts [String] :expand A comma-separated list of properties that can reveal additional information in the response.
171
171
  # @option opts [Integer] :limit The number of metrics to return in the response. Defaults to 20. Maximum limit is 50.
172
172
  # @option opts [Integer] :offset Where to start in the list. Use this with pagination. For example, an offset of 10 skips the first ten items and returns the next &#x60;limit&#x60; items.
173
173
  # @option opts [String] :sort A field to sort the items by. Prefix field by a dash ( - ) to sort in descending order. This endpoint supports sorting by &#x60;createdAt&#x60; or &#x60;name&#x60;.
174
- # @option opts [String] :filter A comma-separated list of filters. This endpoint accepts filtering by &#x60;query&#x60;, &#x60;tags&#x60;, &#39;eventKind&#39;, &#39;isNumeric&#39;, &#39;unitAggregationType&#x60;, &#x60;hasConnections&#x60;, &#x60;maintainerIds&#x60;, &#x60;maintainerTeamKey&#x60;, &#x60;view&#x60;, and &#x60;dataSourceKeys&#x60;. To learn more about the filter syntax, read the &#39;Filtering metrics&#39; section above.
174
+ # @option opts [String] :filter A comma-separated list of filters. This endpoint accepts filtering by &#x60;query&#x60;, &#x60;tags&#x60;, &#39;eventKind&#39;, &#39;isNumeric&#39;, &#39;unitAggregationType&#x60;, &#x60;hasConnections&#x60;, &#x60;maintainerIds&#x60;, &#x60;maintainerTeamKey&#x60;, &#x60;view&#x60;, &#x60;dataSourceKeys&#x60;, and &#x60;metricUsedIn&#x60;. To learn more about the filter syntax, read the &#39;Filtering metrics&#39; section above.
175
175
  # @return [MetricCollectionRep]
176
176
  def get_metrics(project_key, opts = {})
177
177
  data, _status_code, _headers = get_metrics_with_http_info(project_key, opts)
@@ -179,14 +179,14 @@ module LaunchDarklyApi
179
179
  end
180
180
 
181
181
  # List metrics
182
- # Get a list of all metrics for the specified project. ### Filtering metrics The &#x60;filter&#x60; parameter supports the following operators: &#x60;contains&#x60;, &#x60;equals&#x60;, &#x60;anyOf&#x60;. #### Supported fields and operators You can only filter certain fields in metrics when using the &#x60;filter&#x60; parameter. Additionally, you can only filter some fields with certain operators. When you search for metrics, the &#x60;filter&#x60; parameter supports the following fields and operators: |&lt;div style&#x3D;\&quot;width:120px\&quot;&gt;Field&lt;/div&gt; |Description |Supported operators | |---|---|---| | &#x60;eventKind&#x60; | The metric event kind. One of &#x60;custom&#x60;, &#x60;pageview&#x60;, &#x60;click&#x60;. | &#x60;equals&#x60; | | &#x60;hasConnections&#x60; | Whether the metric has connections to experiments or guarded rollouts. One of &#x60;true&#x60;, &#x60;false&#x60;. | &#x60;equals&#x60; | | &#x60;isNumeric&#x60; | Whether the metric is numeric. One of &#x60;true&#x60;, &#x60;false&#x60;. | &#x60;equals&#x60; | | &#x60;maintainerIds&#x60; | A comma-separated list of metric maintainer IDs. | &#x60;anyOf&#x60; | | &#x60;maintainerTeamKey&#x60; | The metric maintainer team key. | &#x60;equals&#x60; | | &#x60;query&#x60; | A \&quot;fuzzy\&quot; search across metric key and name. Supply a string or list of strings to the operator. | &#x60;equals&#x60; | | &#x60;tags&#x60; | The metric tags. | &#x60;contains&#x60; | | &#x60;unitAggregationType&#x60; | The metric&#39;s unit aggregation type. One of &#x60;sum&#x60;, &#x60;average&#x60;. | &#x60;equals&#x60; | For example, the filter &#x60;?filter&#x3D;tags contains [\&quot;tag1\&quot;, \&quot;tag2\&quot;, \&quot;tag3\&quot;]&#x60; matches metrics that have all three tags. The documented values for &#x60;filter&#x60; query parameters are prior to URL encoding. For example, the &#x60;[&#x60; in &#x60;?filter&#x3D;tags contains [\&quot;tag1\&quot;, \&quot;tag2\&quot;, \&quot;tag3\&quot;]&#x60; must be encoded to &#x60;%5B&#x60;. ### Expanding the metric list response LaunchDarkly supports expanding the \&quot;List metrics\&quot; response. By default, the expandable field is **not** included in the response. To expand the response, append the &#x60;expand&#x60; query parameter and add the following supported field: - &#x60;experimentCount&#x60; includes the number of experiments from the specific project that use the metric For example, &#x60;expand&#x3D;experimentCount&#x60; includes the &#x60;experimentCount&#x60; field for each metric in the response.
182
+ # Get a list of all metrics for the specified project. ### Filtering metrics The &#x60;filter&#x60; parameter supports the following operators: &#x60;contains&#x60;, &#x60;equals&#x60;, &#x60;anyOf&#x60;. #### Supported fields and operators You can only filter certain fields in metrics when using the &#x60;filter&#x60; parameter. Additionally, you can only filter some fields with certain operators. When you search for metrics, the &#x60;filter&#x60; parameter supports the following fields and operators: |&lt;div style&#x3D;\&quot;width:120px\&quot;&gt;Field&lt;/div&gt; |Description |Supported operators | |---|---|---| | &#x60;eventKind&#x60; | The metric event kind. One of &#x60;custom&#x60;, &#x60;pageview&#x60;, &#x60;click&#x60;. | &#x60;equals&#x60; | | &#x60;hasConnections&#x60; | Whether the metric has connections to experiments or guarded rollouts. One of &#x60;true&#x60;, &#x60;false&#x60;. | &#x60;equals&#x60; | | &#x60;isNumeric&#x60; | Whether the metric is numeric. One of &#x60;true&#x60;, &#x60;false&#x60;. | &#x60;equals&#x60; | | &#x60;maintainerIds&#x60; | A comma-separated list of metric maintainer IDs. | &#x60;anyOf&#x60; | | &#x60;maintainerTeamKey&#x60; | The metric maintainer team key. | &#x60;equals&#x60; | | &#x60;metricUsedIn&#x60; | Filter by where the metric is used. One of &#x60;experiments&#x60;, &#x60;guarded_rollouts&#x60;, &#x60;any&#x60;, &#x60;none&#x60;. | &#x60;equals&#x60; | | &#x60;query&#x60; | A \&quot;fuzzy\&quot; search across metric key and name. Supply a string or list of strings to the operator. | &#x60;equals&#x60; | | &#x60;tags&#x60; | The metric tags. | &#x60;contains&#x60; | | &#x60;unitAggregationType&#x60; | The metric&#39;s unit aggregation type. One of &#x60;sum&#x60;, &#x60;average&#x60;. | &#x60;equals&#x60; | For example, the filter &#x60;?filter&#x3D;tags contains [\&quot;tag1\&quot;, \&quot;tag2\&quot;, \&quot;tag3\&quot;]&#x60; matches metrics that have all three tags. The documented values for &#x60;filter&#x60; query parameters are prior to URL encoding. For example, the &#x60;[&#x60; in &#x60;?filter&#x3D;tags contains [\&quot;tag1\&quot;, \&quot;tag2\&quot;, \&quot;tag3\&quot;]&#x60; must be encoded to &#x60;%5B&#x60;. ### Expanding the metric list response LaunchDarkly supports expanding the \&quot;List metrics\&quot; response. By default, the expandable field is **not** included in the response. To expand the response, append the &#x60;expand&#x60; query parameter and add the following supported field: - &#x60;experimentCount&#x60; includes the number of experiments from the specific project that use the metric For example, &#x60;expand&#x3D;experimentCount&#x60; includes the &#x60;experimentCount&#x60; field for each metric in the response.
183
183
  # @param project_key [String] The project key
184
184
  # @param [Hash] opts the optional parameters
185
185
  # @option opts [String] :expand A comma-separated list of properties that can reveal additional information in the response.
186
186
  # @option opts [Integer] :limit The number of metrics to return in the response. Defaults to 20. Maximum limit is 50.
187
187
  # @option opts [Integer] :offset Where to start in the list. Use this with pagination. For example, an offset of 10 skips the first ten items and returns the next &#x60;limit&#x60; items.
188
188
  # @option opts [String] :sort A field to sort the items by. Prefix field by a dash ( - ) to sort in descending order. This endpoint supports sorting by &#x60;createdAt&#x60; or &#x60;name&#x60;.
189
- # @option opts [String] :filter A comma-separated list of filters. This endpoint accepts filtering by &#x60;query&#x60;, &#x60;tags&#x60;, &#39;eventKind&#39;, &#39;isNumeric&#39;, &#39;unitAggregationType&#x60;, &#x60;hasConnections&#x60;, &#x60;maintainerIds&#x60;, &#x60;maintainerTeamKey&#x60;, &#x60;view&#x60;, and &#x60;dataSourceKeys&#x60;. To learn more about the filter syntax, read the &#39;Filtering metrics&#39; section above.
189
+ # @option opts [String] :filter A comma-separated list of filters. This endpoint accepts filtering by &#x60;query&#x60;, &#x60;tags&#x60;, &#39;eventKind&#39;, &#39;isNumeric&#39;, &#39;unitAggregationType&#x60;, &#x60;hasConnections&#x60;, &#x60;maintainerIds&#x60;, &#x60;maintainerTeamKey&#x60;, &#x60;view&#x60;, &#x60;dataSourceKeys&#x60;, and &#x60;metricUsedIn&#x60;. To learn more about the filter syntax, read the &#39;Filtering metrics&#39; section above.
190
190
  # @return [Array<(MetricCollectionRep, Integer, Hash)>] MetricCollectionRep data, response status code and response headers
191
191
  def get_metrics_with_http_info(project_key, opts = {})
192
192
  if @api_client.config.debugging
@@ -235,12 +235,12 @@ module LaunchDarklyApi
235
235
  end
236
236
 
237
237
  # List metric groups
238
- # Get a list of all metric groups for the specified project. ### Expanding the metric groups response LaunchDarkly supports one field for expanding the \"Get metric groups\" response. By default, these fields are **not** included in the response. To expand the response, append the `expand` query parameter and add a comma-separated list with the following field: - `experiments` includes all experiments from the specific project that use the metric group For example, `expand=experiments` includes the `experiments` field in the response. ### Filtering metric groups The `filter` parameter supports the following operators: `contains`, `equals`, `anyOf`. #### Supported fields and operators You can only filter certain fields in metrics when using the `filter` parameter. Additionally, you can only filter some fields with certain operators. When you search for metrics, the `filter` parameter supports the following fields and operators: |<div style=\"width:120px\">Field</div> |Description |Supported operators | |---|---|---| | `experimentStatus` | The experiment's status. One of `not_started`, `running`, `stopped`, `started`. | `equals` | | `hasConnections` | Whether the metric group has connections to experiments or guarded rollouts. One of `true`, `false`. | `equals` | | `kind` | The metric group kind. One of `funnel`, `standard`. | `equals` | | `maintainerIds` | The metric maintainer IDs. | `anyOf` | | `maintainerTeamKey` | The metric maintainer team key. | `equals` | | `query` | A \"fuzzy\" search across metric group key and name. Supply a string or list of strings to the operator. | `equals` | ### Sorting metric groups LaunchDarkly supports the following fields for sorting: - `name` sorts by metric group name. - `createdAt` sorts by the creation date of the metric group. - `connectionCount` sorts by the number of connections to experiments the metric group has. By default, the sort is in ascending order. Use `-` to sort in descending order. For example, `?sort=name` sorts the response by metric group name in ascending order, and `?sort=-name` sorts in descending order. #### Sample query `filter=experimentStatus equals 'not_started' and query equals 'metric name'`
238
+ # Get a list of all metric groups for the specified project. ### Expanding the metric groups response This endpoint does not support response expansion. Although the API accepts an `expand` query parameter for compatibility reasons, it does not currently modify the response. The parameter is reserved for future use. ### Filtering metric groups The `filter` parameter supports the following operators: `contains`, `equals`, `anyOf`. #### Supported fields and operators You can only filter certain fields in metrics when using the `filter` parameter. Additionally, you can only filter some fields with certain operators. When you search for metrics, the `filter` parameter supports the following fields and operators: |<div style=\"width:120px\">Field</div> |Description |Supported operators | |---|---|---| | `experimentStatus` | The experiment's status. One of `not_started`, `running`, `stopped`, `started`. | `equals` | | `hasConnections` | Whether the metric group has connections to experiments or guarded rollouts. One of `true`, `false`. | `equals` | | `kind` | The metric group kind. One of `funnel`, `standard`. | `equals` | | `maintainerIds` | The metric maintainer IDs. | `anyOf` | | `maintainerTeamKey` | The metric maintainer team key. | `equals` | | `query` | A \"fuzzy\" search across metric group key and name. Supply a string or list of strings to the operator. | `equals` | ### Sorting metric groups LaunchDarkly supports the following fields for sorting: - `name` sorts by metric group name. - `createdAt` sorts by the creation date of the metric group. - `connectionCount` sorts by the number of connections to experiments the metric group has. By default, the sort is in ascending order. Use `-` to sort in descending order. For example, `?sort=name` sorts the response by metric group name in ascending order, and `?sort=-name` sorts in descending order. #### Sample query `filter=experimentStatus equals 'not_started' and query equals 'metric name'`
239
239
  # @param project_key [String] The project key
240
240
  # @param [Hash] opts the optional parameters
241
241
  # @option opts [String] :filter Accepts filter by &#x60;experimentStatus&#x60;, &#x60;query&#x60;, &#x60;kind&#x60;, &#x60;hasConnections&#x60;, &#x60;maintainerIds&#x60;, and &#x60;maintainerTeamKey&#x60;. Example: &#x60;filter&#x3D;experimentStatus equals &#39;running&#39; and query equals &#39;test&#39;&#x60;.
242
242
  # @option opts [String] :sort A comma-separated list of fields to sort by. Fields prefixed by a dash ( - ) sort in descending order. Read the endpoint description for a full list of available sort fields.
243
- # @option opts [String] :expand A comma-separated list of properties that can reveal additional information in the response.
243
+ # @option opts [String] :expand This parameter is reserved for future use and is not currently supported on this endpoint.
244
244
  # @option opts [Integer] :limit The number of metric groups to return in the response. Defaults to 20. Maximum limit is 50.
245
245
  # @option opts [Integer] :offset Where to start in the list. Use this with pagination. For example, an offset of 10 skips the first ten items and returns the next &#x60;limit&#x60; items.
246
246
  # @return [MetricGroupCollectionRep]
@@ -250,12 +250,12 @@ module LaunchDarklyApi
250
250
  end
251
251
 
252
252
  # List metric groups
253
- # Get a list of all metric groups for the specified project. ### Expanding the metric groups response LaunchDarkly supports one field for expanding the \&quot;Get metric groups\&quot; response. By default, these fields are **not** included in the response. To expand the response, append the &#x60;expand&#x60; query parameter and add a comma-separated list with the following field: - &#x60;experiments&#x60; includes all experiments from the specific project that use the metric group For example, &#x60;expand&#x3D;experiments&#x60; includes the &#x60;experiments&#x60; field in the response. ### Filtering metric groups The &#x60;filter&#x60; parameter supports the following operators: &#x60;contains&#x60;, &#x60;equals&#x60;, &#x60;anyOf&#x60;. #### Supported fields and operators You can only filter certain fields in metrics when using the &#x60;filter&#x60; parameter. Additionally, you can only filter some fields with certain operators. When you search for metrics, the &#x60;filter&#x60; parameter supports the following fields and operators: |&lt;div style&#x3D;\&quot;width:120px\&quot;&gt;Field&lt;/div&gt; |Description |Supported operators | |---|---|---| | &#x60;experimentStatus&#x60; | The experiment&#39;s status. One of &#x60;not_started&#x60;, &#x60;running&#x60;, &#x60;stopped&#x60;, &#x60;started&#x60;. | &#x60;equals&#x60; | | &#x60;hasConnections&#x60; | Whether the metric group has connections to experiments or guarded rollouts. One of &#x60;true&#x60;, &#x60;false&#x60;. | &#x60;equals&#x60; | | &#x60;kind&#x60; | The metric group kind. One of &#x60;funnel&#x60;, &#x60;standard&#x60;. | &#x60;equals&#x60; | | &#x60;maintainerIds&#x60; | The metric maintainer IDs. | &#x60;anyOf&#x60; | | &#x60;maintainerTeamKey&#x60; | The metric maintainer team key. | &#x60;equals&#x60; | | &#x60;query&#x60; | A \&quot;fuzzy\&quot; search across metric group key and name. Supply a string or list of strings to the operator. | &#x60;equals&#x60; | ### Sorting metric groups LaunchDarkly supports the following fields for sorting: - &#x60;name&#x60; sorts by metric group name. - &#x60;createdAt&#x60; sorts by the creation date of the metric group. - &#x60;connectionCount&#x60; sorts by the number of connections to experiments the metric group has. By default, the sort is in ascending order. Use &#x60;-&#x60; to sort in descending order. For example, &#x60;?sort&#x3D;name&#x60; sorts the response by metric group name in ascending order, and &#x60;?sort&#x3D;-name&#x60; sorts in descending order. #### Sample query &#x60;filter&#x3D;experimentStatus equals &#39;not_started&#39; and query equals &#39;metric name&#39;&#x60;
253
+ # Get a list of all metric groups for the specified project. ### Expanding the metric groups response This endpoint does not support response expansion. Although the API accepts an &#x60;expand&#x60; query parameter for compatibility reasons, it does not currently modify the response. The parameter is reserved for future use. ### Filtering metric groups The &#x60;filter&#x60; parameter supports the following operators: &#x60;contains&#x60;, &#x60;equals&#x60;, &#x60;anyOf&#x60;. #### Supported fields and operators You can only filter certain fields in metrics when using the &#x60;filter&#x60; parameter. Additionally, you can only filter some fields with certain operators. When you search for metrics, the &#x60;filter&#x60; parameter supports the following fields and operators: |&lt;div style&#x3D;\&quot;width:120px\&quot;&gt;Field&lt;/div&gt; |Description |Supported operators | |---|---|---| | &#x60;experimentStatus&#x60; | The experiment&#39;s status. One of &#x60;not_started&#x60;, &#x60;running&#x60;, &#x60;stopped&#x60;, &#x60;started&#x60;. | &#x60;equals&#x60; | | &#x60;hasConnections&#x60; | Whether the metric group has connections to experiments or guarded rollouts. One of &#x60;true&#x60;, &#x60;false&#x60;. | &#x60;equals&#x60; | | &#x60;kind&#x60; | The metric group kind. One of &#x60;funnel&#x60;, &#x60;standard&#x60;. | &#x60;equals&#x60; | | &#x60;maintainerIds&#x60; | The metric maintainer IDs. | &#x60;anyOf&#x60; | | &#x60;maintainerTeamKey&#x60; | The metric maintainer team key. | &#x60;equals&#x60; | | &#x60;query&#x60; | A \&quot;fuzzy\&quot; search across metric group key and name. Supply a string or list of strings to the operator. | &#x60;equals&#x60; | ### Sorting metric groups LaunchDarkly supports the following fields for sorting: - &#x60;name&#x60; sorts by metric group name. - &#x60;createdAt&#x60; sorts by the creation date of the metric group. - &#x60;connectionCount&#x60; sorts by the number of connections to experiments the metric group has. By default, the sort is in ascending order. Use &#x60;-&#x60; to sort in descending order. For example, &#x60;?sort&#x3D;name&#x60; sorts the response by metric group name in ascending order, and &#x60;?sort&#x3D;-name&#x60; sorts in descending order. #### Sample query &#x60;filter&#x3D;experimentStatus equals &#39;not_started&#39; and query equals &#39;metric name&#39;&#x60;
254
254
  # @param project_key [String] The project key
255
255
  # @param [Hash] opts the optional parameters
256
256
  # @option opts [String] :filter Accepts filter by &#x60;experimentStatus&#x60;, &#x60;query&#x60;, &#x60;kind&#x60;, &#x60;hasConnections&#x60;, &#x60;maintainerIds&#x60;, and &#x60;maintainerTeamKey&#x60;. Example: &#x60;filter&#x3D;experimentStatus equals &#39;running&#39; and query equals &#39;test&#39;&#x60;.
257
257
  # @option opts [String] :sort A comma-separated list of fields to sort by. Fields prefixed by a dash ( - ) sort in descending order. Read the endpoint description for a full list of available sort fields.
258
- # @option opts [String] :expand A comma-separated list of properties that can reveal additional information in the response.
258
+ # @option opts [String] :expand This parameter is reserved for future use and is not currently supported on this endpoint.
259
259
  # @option opts [Integer] :limit The number of metric groups to return in the response. Defaults to 20. Maximum limit is 50.
260
260
  # @option opts [Integer] :offset Where to start in the list. Use this with pagination. For example, an offset of 10 skips the first ten items and returns the next &#x60;limit&#x60; items.
261
261
  # @return [Array<(MetricGroupCollectionRep, Integer, Hash)>] MetricGroupCollectionRep data, response status code and response headers
@@ -352,7 +352,7 @@ module LaunchDarklyApi
352
352
  end
353
353
 
354
354
  # Create scheduled changes workflow
355
- # Create scheduled changes for a feature flag. The changes you schedule may include any semantic patch instructions available when [updating a feature flag](https://launchdarkly.com/docs/api/feature-flags/patch-feature-flag#using-semantic-patches-on-a-feature-flag). If the `ignoreConficts` query parameter is false and there are conflicts between these instructions and existing scheduled changes, the request will fail. If the parameter is true and there are conflicts, the request will succeed.
355
+ # Create scheduled changes for a feature flag. The changes you schedule may include any semantic patch instructions available when [updating a feature flag](https://launchdarkly.com/docs/api/feature-flags/patch-feature-flag#using-semantic-patches-on-a-feature-flag). If the `ignoreConflicts` query parameter is false and there are conflicts between these instructions and existing scheduled changes, the request will fail. If the parameter is true and there are conflicts, the request will succeed.
356
356
  # @param project_key [String] The project key
357
357
  # @param feature_flag_key [String] The feature flag key
358
358
  # @param environment_key [String] The environment key
@@ -366,7 +366,7 @@ module LaunchDarklyApi
366
366
  end
367
367
 
368
368
  # Create scheduled changes workflow
369
- # Create scheduled changes for a feature flag. The changes you schedule may include any semantic patch instructions available when [updating a feature flag](https://launchdarkly.com/docs/api/feature-flags/patch-feature-flag#using-semantic-patches-on-a-feature-flag). If the &#x60;ignoreConficts&#x60; query parameter is false and there are conflicts between these instructions and existing scheduled changes, the request will fail. If the parameter is true and there are conflicts, the request will succeed.
369
+ # Create scheduled changes for a feature flag. The changes you schedule may include any semantic patch instructions available when [updating a feature flag](https://launchdarkly.com/docs/api/feature-flags/patch-feature-flag#using-semantic-patches-on-a-feature-flag). If the &#x60;ignoreConflicts&#x60; query parameter is false and there are conflicts between these instructions and existing scheduled changes, the request will fail. If the parameter is true and there are conflicts, the request will succeed.
370
370
  # @param project_key [String] The project key
371
371
  # @param feature_flag_key [String] The feature flag key
372
372
  # @param environment_key [String] The environment key
@@ -1141,7 +1141,7 @@ module LaunchDarklyApi
1141
1141
  end
1142
1142
 
1143
1143
  # Patch segment
1144
- # Update a segment. The request body must be a valid semantic patch, JSON patch, or JSON merge patch. To learn more the different formats, read [Updates](https://launchdarkly.com/docs/api#updates). ### Using semantic patches on a segment To make a semantic patch request, you must append `domain-model=launchdarkly.semanticpatch` to your `Content-Type` header. To learn more, read [Updates using semantic patch](https://launchdarkly.com/docs/api#updates-using-semantic-patch). The body of a semantic patch request for updating segments requires an `environmentKey` in addition to `instructions` and an optional `comment`. The body of the request takes the following properties: * `comment` (string): (Optional) A description of the update. * `environmentKey` (string): (Required) The key of the LaunchDarkly environment. * `instructions` (array): (Required) A list of actions the update should perform. Each action in the list must be an object with a `kind` property that indicates the instruction. If the action requires parameters, you must include those parameters as additional fields in the object. ### Instructions Semantic patch requests support the following `kind` instructions for updating segments. <details> <summary>Click to expand instructions for <strong>updating segment details and settings</strong></summary> #### addTags Adds tags to the segment. ##### Parameters - `values`: A list of tags to add. Here's an example: ```json { \"instructions\": [{ \"kind\": \"addTags\", \"values\": [\"tag1\", \"tag2\"] }] } ``` #### removeTags Removes tags from the segment. ##### Parameters - `values`: A list of tags to remove. Here's an example: ```json { \"instructions\": [{ \"kind\": \"removeTags\", \"values\": [\"tag1\", \"tag2\"] }] } ``` #### updateName Updates the name of the segment. ##### Parameters - `value`: Name of the segment. Here's an example: ```json { \"instructions\": [{ \"kind\": \"updateName\", \"value\": \"Updated segment name\" }] } ``` </details> <details> <summary>Click to expand instructions for <strong>updating segment individual targets</strong></summary> #### addExcludedTargets Adds context keys to the individual context targets excluded from the segment for the specified `contextKind`. Returns an error if this causes the same context key to be both included and excluded. ##### Parameters - `contextKind`: The context kind the targets should be added to. - `values`: List of keys. Here's an example: ```json { \"instructions\": [{ \"kind\": \"addExcludedTargets\", \"contextKind\": \"org\", \"values\": [ \"org-key-123abc\", \"org-key-456def\" ] }] } ``` #### addExcludedUsers Adds user keys to the individual user targets excluded from the segment. Returns an error if this causes the same user key to be both included and excluded. If you are working with contexts, use `addExcludedTargets` instead of this instruction. ##### Parameters - `values`: List of user keys. Here's an example: ```json { \"instructions\": [{ \"kind\": \"addExcludedUsers\", \"values\": [ \"user-key-123abc\", \"user-key-456def\" ] }] } ``` #### addIncludedTargets Adds context keys to the individual context targets included in the segment for the specified `contextKind`. Returns an error if this causes the same context key to be both included and excluded. ##### Parameters - `contextKind`: The context kind the targets should be added to. - `values`: List of keys. Here's an example: ```json { \"instructions\": [{ \"kind\": \"addIncludedTargets\", \"contextKind\": \"org\", \"values\": [ \"org-key-123abc\", \"org-key-456def\" ] }] } ``` #### addIncludedUsers Adds user keys to the individual user targets included in the segment. Returns an error if this causes the same user key to be both included and excluded. If you are working with contexts, use `addIncludedTargets` instead of this instruction. ##### Parameters - `values`: List of user keys. Here's an example: ```json { \"instructions\": [{ \"kind\": \"addIncludedUsers\", \"values\": [ \"user-key-123abc\", \"user-key-456def\" ] }] } ``` #### removeExcludedTargets Removes context keys from the individual context targets excluded from the segment for the specified `contextKind`. ##### Parameters - `contextKind`: The context kind the targets should be removed from. - `values`: List of keys. Here's an example: ```json { \"instructions\": [{ \"kind\": \"removeExcludedTargets\", \"contextKind\": \"org\", \"values\": [ \"org-key-123abc\", \"org-key-456def\" ] }] } ``` #### removeExcludedUsers Removes user keys from the individual user targets excluded from the segment. If you are working with contexts, use `removeExcludedTargets` instead of this instruction. ##### Parameters - `values`: List of user keys. Here's an example: ```json { \"instructions\": [{ \"kind\": \"removeExcludedUsers\", \"values\": [ \"user-key-123abc\", \"user-key-456def\" ] }] } ``` #### removeIncludedTargets Removes context keys from the individual context targets included in the segment for the specified `contextKind`. ##### Parameters - `contextKind`: The context kind the targets should be removed from. - `values`: List of keys. Here's an example: ```json { \"instructions\": [{ \"kind\": \"removeIncludedTargets\", \"contextKind\": \"org\", \"values\": [ \"org-key-123abc\", \"org-key-456def\" ] }] } ``` #### removeIncludedUsers Removes user keys from the individual user targets included in the segment. If you are working with contexts, use `removeIncludedTargets` instead of this instruction. ##### Parameters - `values`: List of user keys. Here's an example: ```json { \"instructions\": [{ \"kind\": \"removeIncludedUsers\", \"values\": [ \"user-key-123abc\", \"user-key-456def\" ] }] } ``` </details> <details> <summary>Click to expand instructions for <strong>updating segment targeting rules</strong></summary> #### addClauses Adds the given clauses to the rule indicated by `ruleId`. ##### Parameters - `clauses`: Array of clause objects, with `contextKind` (string), `attribute` (string), `op` (string), `negate` (boolean), and `values` (array of strings, numbers, or dates) properties. The `contextKind`, if not provided, defaults to `user`. The `contextKind`, `attribute`, and `values` are case sensitive. The `op` must be lower-case. - `ruleId`: ID of a rule in the segment. Here's an example: ```json { \"instructions\": [{ \"kind\": \"addClauses\", \"clauses\": [ { \"attribute\": \"email\", \"negate\": false, \"op\": \"contains\", \"values\": [\"value1\"] } ], \"ruleId\": \"a902ef4a-2faf-4eaf-88e1-ecc356708a29\", }] } ``` #### addRule Adds a new targeting rule to the segment. The rule may contain `clauses`. ##### Parameters - `clauses`: Array of clause objects, with `contextKind` (string), `attribute` (string), `op` (string), `negate` (boolean), and `values` (array of strings, numbers, or dates) properties. The `contextKind`, if not provided, defaults to `user`. The `contextKind`, `attribute`, and `values` are case sensitive. The `op` must be lower-case. - `description`: A description of the rule. Here's an example: ```json { \"instructions\": [{ \"kind\": \"addRule\", \"clauses\": [ { \"attribute\": \"email\", \"op\": \"contains\", \"negate\": false, \"values\": [\"@launchdarkly.com\"] } ], \"description\": \"Targeting rule for LaunchDarkly employees\", }] } ``` #### addValuesToClause Adds `values` to the values of the clause that `ruleId` and `clauseId` indicate. Does not update the context kind, attribute, or operator. ##### Parameters - `ruleId`: ID of a rule in the segment. - `clauseId`: ID of a clause in that rule. - `values`: Array of strings, case sensitive. Here's an example: ```json { \"instructions\": [{ \"kind\": \"addValuesToClause\", \"ruleId\": \"a902ef4a-2faf-4eaf-88e1-ecc356708a29\", \"clauseId\": \"10a58772-3121-400f-846b-b8a04e8944ed\", \"values\": [\"beta_testers\"] }] } ``` #### removeClauses Removes the clauses specified by `clauseIds` from the rule indicated by `ruleId`. ##### Parameters - `ruleId`: ID of a rule in the segment. - `clauseIds`: Array of IDs of clauses in the rule. Here's an example: ```json { \"instructions\": [{ \"kind\": \"removeClauses\", \"ruleId\": \"a902ef4a-2faf-4eaf-88e1-ecc356708a29\", \"clauseIds\": [\"10a58772-3121-400f-846b-b8a04e8944ed\", \"36a461dc-235e-4b08-97b9-73ce9365873e\"] }] } ``` #### removeRule Removes the targeting rule specified by `ruleId`. Does nothing if the rule does not exist. ##### Parameters - `ruleId`: ID of a rule in the segment. Here's an example: ```json { \"instructions\": [{ \"kind\": \"removeRule\", \"ruleId\": \"a902ef4a-2faf-4eaf-88e1-ecc356708a29\" }] } ``` #### removeValuesFromClause Removes `values` from the values of the clause indicated by `ruleId` and `clauseId`. Does not update the context kind, attribute, or operator. ##### Parameters - `ruleId`: ID of a rule in the segment. - `clauseId`: ID of a clause in that rule. - `values`: Array of strings, case sensitive. Here's an example: ```json { \"instructions\": [{ \"kind\": \"removeValuesFromClause\", \"ruleId\": \"a902ef4a-2faf-4eaf-88e1-ecc356708a29\", \"clauseId\": \"10a58772-3121-400f-846b-b8a04e8944ed\", \"values\": [\"beta_testers\"] }] } ``` #### reorderRules Rearranges the rules to match the order given in `ruleIds`. Returns an error if `ruleIds` does not match the current set of rules in the segment. ##### Parameters - `ruleIds`: Array of IDs of all targeting rules in the segment. Here's an example: ```json { \"instructions\": [{ \"kind\": \"reorderRules\", \"ruleIds\": [\"a902ef4a-2faf-4eaf-88e1-ecc356708a29\", \"63c238d1-835d-435e-8f21-c8d5e40b2a3d\"] }] } ``` #### updateClause Replaces the clause indicated by `ruleId` and `clauseId` with `clause`. ##### Parameters - `ruleId`: ID of a rule in the segment. - `clauseId`: ID of a clause in that rule. - `clause`: New `clause` object, with `contextKind` (string), `attribute` (string), `op` (string), `negate` (boolean), and `values` (array of strings, numbers, or dates) properties. The `contextKind`, if not provided, defaults to `user`. The `contextKind`, `attribute`, and `values` are case sensitive. The `op` must be lower-case. Here's an example: ```json { \"instructions\": [{ \"kind\": \"updateClause\", \"ruleId\": \"a902ef4a-2faf-4eaf-88e1-ecc356708a29\", \"clauseId\": \"10c7462a-2062-45ba-a8bb-dfb3de0f8af5\", \"clause\": { \"contextKind\": \"user\", \"attribute\": \"country\", \"op\": \"in\", \"negate\": false, \"values\": [\"Mexico\", \"Canada\"] } }] } ``` #### updateRuleDescription Updates the description of the segment targeting rule. ##### Parameters - `description`: The new human-readable description for this rule. - `ruleId`: The ID of the rule. You can retrieve this by making a GET request for the segment. Here's an example: ```json { \"instructions\": [{ \"kind\": \"updateRuleDescription\", \"description\": \"New rule description\", \"ruleId\": \"a902ef4a-2faf-4eaf-88e1-ecc356708a29\" }] } ``` #### updateRuleRolloutAndContextKind For a rule that includes a percentage of targets, updates the percentage and the context kind of the targets to include. ##### Parameters - `ruleId`: The ID of a targeting rule in the segment that includes a percentage of targets. - `weight`: The weight, in thousandths of a percent (0-100000). - `contextKind`: The context kind. Here's an example: ```json { \"instructions\": [{ \"kind\": \"reorderRules\", \"ruleId\": \"a902ef4a-2faf-4eaf-88e1-ecc356708a29\", \"weight\": \"20000\", \"contextKind\": \"device\" }] } ``` </details> <details> <summary>Click to expand instructions for <strong>working with Big Segments</strong></summary> A \"big segment\" is a segment that is either a synced segment, or a list-based segment with more than 15,000 entries that includes only one targeted context kind. LaunchDarkly uses different implementations for different types of segments so that all of your segments have good performance. The following semantic patch instructions apply only to these [larger list-based segments](https://launchdarkly.com/docs/home/flags/segments-create#create-larger-list-based-segments). #### addBigSegmentExcludedTargets For use with [larger list-based segments](https://launchdarkly.com/docs/home/flags/segments-create#create-larger-list-based-segments) ONLY. Adds context keys to the context targets excluded from the segment. Returns an error if this causes the same context key to be both included and excluded. ##### Parameters - `values`: List of context keys. Here's an example: ```json { \"instructions\": [{ \"kind\": \"addBigSegmentExcludedTargets\", \"values\": [ \"org-key-123abc\", \"org-key-456def\" ] }] } ``` #### addBigSegmentIncludedTargets For use with [larger list-based segments](https://launchdarkly.com/docs/home/flags/segments-create#create-larger-list-based-segments) ONLY. Adds context keys to the context targets included in the segment. Returns an error if this causes the same context key to be both included and excluded. ##### Parameters - `values`: List of context keys. Here's an example: ```json { \"instructions\": [{ \"kind\": \"addBigSegmentIncludedTargets\", \"values\": [ \"org-key-123abc\", \"org-key-456def\" ] }] } ``` #### processBigSegmentImport For use with [larger list-based segments](https://launchdarkly.com/docs/home/flags/segments-create#create-larger-list-based-segments) ONLY. Processes a segment import. ##### Parameters - `importId`: The ID of the import. The import ID is returned in the `Location` header as part of the [Create big segment import](https://launchdarkly.com/docs/api/segments/create-big-segment-import) request. Here's an example: ```json { \"instructions\": [{ \"kind\": \"processBigSegmentImport\", \"importId\": \"a902ef4a-2faf-4eaf-88e1-ecc356708a29\" }] } ``` #### removeBigSegmentExcludedTargets For use with [larger list-based segments](https://launchdarkly.com/docs/home/flags/segments-create#create-larger-list-based-segments) ONLY. Removes context keys from the context targets excluded from the segment. ##### Parameters - `values`: List of context keys. Here's an example: ```json { \"instructions\": [{ \"kind\": \"removeBigSegmentExcludedTargets\", \"values\": [ \"org-key-123abc\", \"org-key-456def\" ] }] } ``` #### removeBigSegmentIncludedTargets For use with [larger list-based segments](https://launchdarkly.com/docs/home/flags/segments-create#create-larger-list-based-segments) ONLY. Removes context keys from the context targets included in the segment. ##### Parameters - `values`: List of context keys. Here's an example: ```json { \"instructions\": [{ \"kind\": \"removeBigSegmentIncludedTargets\", \"values\": [ \"org-key-123abc\", \"org-key-456def\" ] }] } ``` </details> ### Using JSON patches on a segment If you do not include the header described above, you can use a [JSON patch](https://launchdarkly.com/docs/api#updates-using-json-patch) or [JSON merge patch](https://datatracker.ietf.org/doc/html/rfc7386) representation of the desired changes. For example, to update the description for a segment with a JSON patch, use the following request body: ```json { \"patch\": [ { \"op\": \"replace\", \"path\": \"/description\", \"value\": \"new description\" } ] } ``` To update fields in the segment that are arrays, set the `path` to the name of the field and then append `/<array index>`. Use `/0` to add the new entry to the beginning of the array. Use `/-` to add the new entry to the end of the array. For example, to add a rule to a segment, use the following request body: ```json { \"patch\":[ { \"op\": \"add\", \"path\": \"/rules/0\", \"value\": { \"clauses\": [{ \"contextKind\": \"user\", \"attribute\": \"email\", \"op\": \"endsWith\", \"values\": [\".edu\"], \"negate\": false }] } } ] } ``` To add or remove targets from segments, we recommend using semantic patch. Semantic patch for segments includes specific instructions for adding and removing both included and excluded targets.
1144
+ # Update a segment. The request body must be a valid semantic patch, JSON patch, or JSON merge patch. To learn more the different formats, read [Updates](https://launchdarkly.com/docs/api#updates). ### Using semantic patches on a segment To make a semantic patch request, you must append `domain-model=launchdarkly.semanticpatch` to your `Content-Type` header. To learn more, read [Updates using semantic patch](https://launchdarkly.com/docs/api#updates-using-semantic-patch). The body of a semantic patch request for updating segments requires an `environmentKey` in addition to `instructions` and an optional `comment`. The body of the request takes the following properties: * `comment` (string): (Optional) A description of the update. * `environmentKey` (string): (Required) The key of the LaunchDarkly environment. * `instructions` (array): (Required) A list of actions the update should perform. Each action in the list must be an object with a `kind` property that indicates the instruction. If the action requires parameters, you must include those parameters as additional fields in the object. ### Instructions Semantic patch requests support the following `kind` instructions for updating segments. <details> <summary>Click to expand instructions for <strong>updating segment details and settings</strong></summary> #### addTags Adds tags to the segment. ##### Parameters - `values`: A list of tags to add. Here's an example: ```json { \"instructions\": [{ \"kind\": \"addTags\", \"values\": [\"tag1\", \"tag2\"] }] } ``` #### removeTags Removes tags from the segment. ##### Parameters - `values`: A list of tags to remove. Here's an example: ```json { \"instructions\": [{ \"kind\": \"removeTags\", \"values\": [\"tag1\", \"tag2\"] }] } ``` #### updateName Updates the name of the segment. ##### Parameters - `value`: Name of the segment. Here's an example: ```json { \"instructions\": [{ \"kind\": \"updateName\", \"value\": \"Updated segment name\" }] } ``` </details> <details> <summary>Click to expand instructions for <strong>updating segment individual targets</strong></summary> #### addExcludedTargets Adds context keys to the individual context targets excluded from the segment for the specified `contextKind`. Returns an error if this causes the same context key to be both included and excluded, or if the number of operations on targets exceeds the batch limit of 1,500. ##### Parameters - `contextKind`: The context kind the targets should be added to. - `values`: List of keys. Here's an example: ```json { \"instructions\": [{ \"kind\": \"addExcludedTargets\", \"contextKind\": \"org\", \"values\": [ \"org-key-123abc\", \"org-key-456def\" ] }] } ``` #### addExcludedUsers Adds user keys to the individual user targets excluded from the segment. Returns an error if this causes the same user key to be both included and excluded, or if the number of operations on targets exceeds the batch limit of 1,500. If you are working with contexts, use `addExcludedTargets` instead of this instruction. ##### Parameters - `values`: List of user keys. Here's an example: ```json { \"instructions\": [{ \"kind\": \"addExcludedUsers\", \"values\": [ \"user-key-123abc\", \"user-key-456def\" ] }] } ``` #### addIncludedTargets Adds context keys to the individual context targets included in the segment for the specified `contextKind`. Returns an error if this causes the same context key to be both included and excluded, or if the number of operations on targets exceeds the batch limit of 1,500. ##### Parameters - `contextKind`: The context kind the targets should be added to. - `values`: List of keys. Here's an example: ```json { \"instructions\": [{ \"kind\": \"addIncludedTargets\", \"contextKind\": \"org\", \"values\": [ \"org-key-123abc\", \"org-key-456def\" ] }] } ``` #### addIncludedUsers Adds user keys to the individual user targets included in the segment. Returns an error if this causes the same user key to be both included and excluded, or if the number of operations on targets exceeds the batch limit of 1,500. If you are working with contexts, use `addIncludedTargets` instead of this instruction. ##### Parameters - `values`: List of user keys. Here's an example: ```json { \"instructions\": [{ \"kind\": \"addIncludedUsers\", \"values\": [ \"user-key-123abc\", \"user-key-456def\" ] }] } ``` #### removeExcludedTargets Removes context keys from the individual context targets excluded from the segment for the specified `contextKind`. Returns an error if the number of operations on targets exceeds the batch limit of 1,500. ##### Parameters - `contextKind`: The context kind the targets should be removed from. - `values`: List of keys. Here's an example: ```json { \"instructions\": [{ \"kind\": \"removeExcludedTargets\", \"contextKind\": \"org\", \"values\": [ \"org-key-123abc\", \"org-key-456def\" ] }] } ``` #### removeExcludedUsers Removes user keys from the individual user targets excluded from the segment. If you are working with contexts, use `removeExcludedTargets` instead of this instruction. Returns an error if the number of operations on targets exceeds the batch limit of 1,500. ##### Parameters - `values`: List of user keys. Here's an example: ```json { \"instructions\": [{ \"kind\": \"removeExcludedUsers\", \"values\": [ \"user-key-123abc\", \"user-key-456def\" ] }] } ``` #### removeIncludedTargets Removes context keys from the individual context targets included in the segment for the specified `contextKind`. Returns an error if the number of operations on targets exceeds the batch limit of 1,500. ##### Parameters - `contextKind`: The context kind the targets should be removed from. - `values`: List of keys. Here's an example: ```json { \"instructions\": [{ \"kind\": \"removeIncludedTargets\", \"contextKind\": \"org\", \"values\": [ \"org-key-123abc\", \"org-key-456def\" ] }] } ``` #### removeIncludedUsers Removes user keys from the individual user targets included in the segment. If you are working with contexts, use `removeIncludedTargets` instead of this instruction. Returns an error if the number of operations on targets exceeds the batch limit of 1,500. ##### Parameters - `values`: List of user keys. Here's an example: ```json { \"instructions\": [{ \"kind\": \"removeIncludedUsers\", \"values\": [ \"user-key-123abc\", \"user-key-456def\" ] }] } ``` </details> <details> <summary>Click to expand instructions for <strong>updating segment targeting rules</strong></summary> #### addClauses Adds the given clauses to the rule indicated by `ruleId`. ##### Parameters - `clauses`: Array of clause objects, with `contextKind` (string), `attribute` (string), `op` (string), `negate` (boolean), and `values` (array of strings, numbers, or dates) properties. The `contextKind`, if not provided, defaults to `user`. The `contextKind`, `attribute`, and `values` are case sensitive. The `op` must be lower-case. - `ruleId`: ID of a rule in the segment. Here's an example: ```json { \"instructions\": [{ \"kind\": \"addClauses\", \"clauses\": [ { \"attribute\": \"email\", \"negate\": false, \"op\": \"contains\", \"values\": [\"value1\"] } ], \"ruleId\": \"a902ef4a-2faf-4eaf-88e1-ecc356708a29\", }] } ``` #### addRule Adds a new targeting rule to the segment. The rule may contain `clauses`. ##### Parameters - `clauses`: Array of clause objects, with `contextKind` (string), `attribute` (string), `op` (string), `negate` (boolean), and `values` (array of strings, numbers, or dates) properties. The `contextKind`, if not provided, defaults to `user`. The `contextKind`, `attribute`, and `values` are case sensitive. The `op` must be lower-case. - `description`: A description of the rule. Here's an example: ```json { \"instructions\": [{ \"kind\": \"addRule\", \"clauses\": [ { \"attribute\": \"email\", \"op\": \"contains\", \"negate\": false, \"values\": [\"@launchdarkly.com\"] } ], \"description\": \"Targeting rule for LaunchDarkly employees\", }] } ``` #### addValuesToClause Adds `values` to the values of the clause that `ruleId` and `clauseId` indicate. Does not update the context kind, attribute, or operator. ##### Parameters - `ruleId`: ID of a rule in the segment. - `clauseId`: ID of a clause in that rule. - `values`: Array of strings, case sensitive. Here's an example: ```json { \"instructions\": [{ \"kind\": \"addValuesToClause\", \"ruleId\": \"a902ef4a-2faf-4eaf-88e1-ecc356708a29\", \"clauseId\": \"10a58772-3121-400f-846b-b8a04e8944ed\", \"values\": [\"beta_testers\"] }] } ``` #### removeClauses Removes the clauses specified by `clauseIds` from the rule indicated by `ruleId`. ##### Parameters - `ruleId`: ID of a rule in the segment. - `clauseIds`: Array of IDs of clauses in the rule. Here's an example: ```json { \"instructions\": [{ \"kind\": \"removeClauses\", \"ruleId\": \"a902ef4a-2faf-4eaf-88e1-ecc356708a29\", \"clauseIds\": [\"10a58772-3121-400f-846b-b8a04e8944ed\", \"36a461dc-235e-4b08-97b9-73ce9365873e\"] }] } ``` #### removeRule Removes the targeting rule specified by `ruleId`. Does nothing if the rule does not exist. ##### Parameters - `ruleId`: ID of a rule in the segment. Here's an example: ```json { \"instructions\": [{ \"kind\": \"removeRule\", \"ruleId\": \"a902ef4a-2faf-4eaf-88e1-ecc356708a29\" }] } ``` #### removeValuesFromClause Removes `values` from the values of the clause indicated by `ruleId` and `clauseId`. Does not update the context kind, attribute, or operator. ##### Parameters - `ruleId`: ID of a rule in the segment. - `clauseId`: ID of a clause in that rule. - `values`: Array of strings, case sensitive. Here's an example: ```json { \"instructions\": [{ \"kind\": \"removeValuesFromClause\", \"ruleId\": \"a902ef4a-2faf-4eaf-88e1-ecc356708a29\", \"clauseId\": \"10a58772-3121-400f-846b-b8a04e8944ed\", \"values\": [\"beta_testers\"] }] } ``` #### reorderRules Rearranges the rules to match the order given in `ruleIds`. Returns an error if `ruleIds` does not match the current set of rules in the segment. ##### Parameters - `ruleIds`: Array of IDs of all targeting rules in the segment. Here's an example: ```json { \"instructions\": [{ \"kind\": \"reorderRules\", \"ruleIds\": [\"a902ef4a-2faf-4eaf-88e1-ecc356708a29\", \"63c238d1-835d-435e-8f21-c8d5e40b2a3d\"] }] } ``` #### updateClause Replaces the clause indicated by `ruleId` and `clauseId` with `clause`. ##### Parameters - `ruleId`: ID of a rule in the segment. - `clauseId`: ID of a clause in that rule. - `clause`: New `clause` object, with `contextKind` (string), `attribute` (string), `op` (string), `negate` (boolean), and `values` (array of strings, numbers, or dates) properties. The `contextKind`, if not provided, defaults to `user`. The `contextKind`, `attribute`, and `values` are case sensitive. The `op` must be lower-case. Here's an example: ```json { \"instructions\": [{ \"kind\": \"updateClause\", \"ruleId\": \"a902ef4a-2faf-4eaf-88e1-ecc356708a29\", \"clauseId\": \"10c7462a-2062-45ba-a8bb-dfb3de0f8af5\", \"clause\": { \"contextKind\": \"user\", \"attribute\": \"country\", \"op\": \"in\", \"negate\": false, \"values\": [\"Mexico\", \"Canada\"] } }] } ``` #### updateRuleDescription Updates the description of the segment targeting rule. ##### Parameters - `description`: The new human-readable description for this rule. - `ruleId`: The ID of the rule. You can retrieve this by making a GET request for the segment. Here's an example: ```json { \"instructions\": [{ \"kind\": \"updateRuleDescription\", \"description\": \"New rule description\", \"ruleId\": \"a902ef4a-2faf-4eaf-88e1-ecc356708a29\" }] } ``` #### updateRuleRolloutAndContextKind For a rule that includes a percentage of targets, updates the percentage and the context kind of the targets to include. ##### Parameters - `ruleId`: The ID of a targeting rule in the segment that includes a percentage of targets. - `weight`: The weight, in thousandths of a percent (0-100000). - `contextKind`: The context kind. Here's an example: ```json { \"instructions\": [{ \"kind\": \"reorderRules\", \"ruleId\": \"a902ef4a-2faf-4eaf-88e1-ecc356708a29\", \"weight\": \"20000\", \"contextKind\": \"device\" }] } ``` </details> <details> <summary>Click to expand instructions for <strong>working with Big Segments</strong></summary> A \"big segment\" is a segment that is either a synced segment, or a list-based segment with more than 15,000 entries that includes only one targeted context kind. LaunchDarkly uses different implementations for different types of segments so that all of your segments have good performance. The following semantic patch instructions apply only to these [larger list-based segments](https://launchdarkly.com/docs/home/flags/segments-create#create-larger-list-based-segments). #### addBigSegmentExcludedTargets For use with [larger list-based segments](https://launchdarkly.com/docs/home/flags/segments-create#create-larger-list-based-segments) ONLY. Adds context keys to the context targets excluded from the segment. Returns an error if this causes the same context key to be both included and excluded. ##### Parameters - `values`: List of context keys. Here's an example: ```json { \"instructions\": [{ \"kind\": \"addBigSegmentExcludedTargets\", \"values\": [ \"org-key-123abc\", \"org-key-456def\" ] }] } ``` #### addBigSegmentIncludedTargets For use with [larger list-based segments](https://launchdarkly.com/docs/home/flags/segments-create#create-larger-list-based-segments) ONLY. Adds context keys to the context targets included in the segment. Returns an error if this causes the same context key to be both included and excluded. ##### Parameters - `values`: List of context keys. Here's an example: ```json { \"instructions\": [{ \"kind\": \"addBigSegmentIncludedTargets\", \"values\": [ \"org-key-123abc\", \"org-key-456def\" ] }] } ``` #### processBigSegmentImport For use with [larger list-based segments](https://launchdarkly.com/docs/home/flags/segments-create#create-larger-list-based-segments) ONLY. Processes a segment import. ##### Parameters - `importId`: The ID of the import. The import ID is returned in the `Location` header as part of the [Create big segment import](https://launchdarkly.com/docs/api/segments/create-big-segment-import) request. Here's an example: ```json { \"instructions\": [{ \"kind\": \"processBigSegmentImport\", \"importId\": \"a902ef4a-2faf-4eaf-88e1-ecc356708a29\" }] } ``` #### removeBigSegmentExcludedTargets For use with [larger list-based segments](https://launchdarkly.com/docs/home/flags/segments-create#create-larger-list-based-segments) ONLY. Removes context keys from the context targets excluded from the segment. ##### Parameters - `values`: List of context keys. Here's an example: ```json { \"instructions\": [{ \"kind\": \"removeBigSegmentExcludedTargets\", \"values\": [ \"org-key-123abc\", \"org-key-456def\" ] }] } ``` #### removeBigSegmentIncludedTargets For use with [larger list-based segments](https://launchdarkly.com/docs/home/flags/segments-create#create-larger-list-based-segments) ONLY. Removes context keys from the context targets included in the segment. ##### Parameters - `values`: List of context keys. Here's an example: ```json { \"instructions\": [{ \"kind\": \"removeBigSegmentIncludedTargets\", \"values\": [ \"org-key-123abc\", \"org-key-456def\" ] }] } ``` </details> ### Using JSON patches on a segment If you do not include the header described above, you can use a [JSON patch](https://launchdarkly.com/docs/api#updates-using-json-patch) or [JSON merge patch](https://datatracker.ietf.org/doc/html/rfc7386) representation of the desired changes. For example, to update the description for a segment with a JSON patch, use the following request body: ```json { \"patch\": [ { \"op\": \"replace\", \"path\": \"/description\", \"value\": \"new description\" } ] } ``` To update fields in the segment that are arrays, set the `path` to the name of the field and then append `/<array index>`. Use `/0` to add the new entry to the beginning of the array. Use `/-` to add the new entry to the end of the array. For example, to add a rule to a segment, use the following request body: ```json { \"patch\":[ { \"op\": \"add\", \"path\": \"/rules/0\", \"value\": { \"clauses\": [{ \"contextKind\": \"user\", \"attribute\": \"email\", \"op\": \"endsWith\", \"values\": [\".edu\"], \"negate\": false }] } } ] } ``` To add or remove targets from segments, we recommend using semantic patch. Semantic patch for segments includes specific instructions for adding and removing both included and excluded targets.
1145
1145
  # @param project_key [String] The project key
1146
1146
  # @param environment_key [String] The environment key
1147
1147
  # @param segment_key [String] The segment key
@@ -1154,7 +1154,7 @@ module LaunchDarklyApi
1154
1154
  end
1155
1155
 
1156
1156
  # Patch segment
1157
- # Update a segment. The request body must be a valid semantic patch, JSON patch, or JSON merge patch. To learn more the different formats, read [Updates](https://launchdarkly.com/docs/api#updates). ### Using semantic patches on a segment To make a semantic patch request, you must append &#x60;domain-model&#x3D;launchdarkly.semanticpatch&#x60; to your &#x60;Content-Type&#x60; header. To learn more, read [Updates using semantic patch](https://launchdarkly.com/docs/api#updates-using-semantic-patch). The body of a semantic patch request for updating segments requires an &#x60;environmentKey&#x60; in addition to &#x60;instructions&#x60; and an optional &#x60;comment&#x60;. The body of the request takes the following properties: * &#x60;comment&#x60; (string): (Optional) A description of the update. * &#x60;environmentKey&#x60; (string): (Required) The key of the LaunchDarkly environment. * &#x60;instructions&#x60; (array): (Required) A list of actions the update should perform. Each action in the list must be an object with a &#x60;kind&#x60; property that indicates the instruction. If the action requires parameters, you must include those parameters as additional fields in the object. ### Instructions Semantic patch requests support the following &#x60;kind&#x60; instructions for updating segments. &lt;details&gt; &lt;summary&gt;Click to expand instructions for &lt;strong&gt;updating segment details and settings&lt;/strong&gt;&lt;/summary&gt; #### addTags Adds tags to the segment. ##### Parameters - &#x60;values&#x60;: A list of tags to add. Here&#39;s an example: &#x60;&#x60;&#x60;json { \&quot;instructions\&quot;: [{ \&quot;kind\&quot;: \&quot;addTags\&quot;, \&quot;values\&quot;: [\&quot;tag1\&quot;, \&quot;tag2\&quot;] }] } &#x60;&#x60;&#x60; #### removeTags Removes tags from the segment. ##### Parameters - &#x60;values&#x60;: A list of tags to remove. Here&#39;s an example: &#x60;&#x60;&#x60;json { \&quot;instructions\&quot;: [{ \&quot;kind\&quot;: \&quot;removeTags\&quot;, \&quot;values\&quot;: [\&quot;tag1\&quot;, \&quot;tag2\&quot;] }] } &#x60;&#x60;&#x60; #### updateName Updates the name of the segment. ##### Parameters - &#x60;value&#x60;: Name of the segment. Here&#39;s an example: &#x60;&#x60;&#x60;json { \&quot;instructions\&quot;: [{ \&quot;kind\&quot;: \&quot;updateName\&quot;, \&quot;value\&quot;: \&quot;Updated segment name\&quot; }] } &#x60;&#x60;&#x60; &lt;/details&gt; &lt;details&gt; &lt;summary&gt;Click to expand instructions for &lt;strong&gt;updating segment individual targets&lt;/strong&gt;&lt;/summary&gt; #### addExcludedTargets Adds context keys to the individual context targets excluded from the segment for the specified &#x60;contextKind&#x60;. Returns an error if this causes the same context key to be both included and excluded. ##### Parameters - &#x60;contextKind&#x60;: The context kind the targets should be added to. - &#x60;values&#x60;: List of keys. Here&#39;s an example: &#x60;&#x60;&#x60;json { \&quot;instructions\&quot;: [{ \&quot;kind\&quot;: \&quot;addExcludedTargets\&quot;, \&quot;contextKind\&quot;: \&quot;org\&quot;, \&quot;values\&quot;: [ \&quot;org-key-123abc\&quot;, \&quot;org-key-456def\&quot; ] }] } &#x60;&#x60;&#x60; #### addExcludedUsers Adds user keys to the individual user targets excluded from the segment. Returns an error if this causes the same user key to be both included and excluded. If you are working with contexts, use &#x60;addExcludedTargets&#x60; instead of this instruction. ##### Parameters - &#x60;values&#x60;: List of user keys. Here&#39;s an example: &#x60;&#x60;&#x60;json { \&quot;instructions\&quot;: [{ \&quot;kind\&quot;: \&quot;addExcludedUsers\&quot;, \&quot;values\&quot;: [ \&quot;user-key-123abc\&quot;, \&quot;user-key-456def\&quot; ] }] } &#x60;&#x60;&#x60; #### addIncludedTargets Adds context keys to the individual context targets included in the segment for the specified &#x60;contextKind&#x60;. Returns an error if this causes the same context key to be both included and excluded. ##### Parameters - &#x60;contextKind&#x60;: The context kind the targets should be added to. - &#x60;values&#x60;: List of keys. Here&#39;s an example: &#x60;&#x60;&#x60;json { \&quot;instructions\&quot;: [{ \&quot;kind\&quot;: \&quot;addIncludedTargets\&quot;, \&quot;contextKind\&quot;: \&quot;org\&quot;, \&quot;values\&quot;: [ \&quot;org-key-123abc\&quot;, \&quot;org-key-456def\&quot; ] }] } &#x60;&#x60;&#x60; #### addIncludedUsers Adds user keys to the individual user targets included in the segment. Returns an error if this causes the same user key to be both included and excluded. If you are working with contexts, use &#x60;addIncludedTargets&#x60; instead of this instruction. ##### Parameters - &#x60;values&#x60;: List of user keys. Here&#39;s an example: &#x60;&#x60;&#x60;json { \&quot;instructions\&quot;: [{ \&quot;kind\&quot;: \&quot;addIncludedUsers\&quot;, \&quot;values\&quot;: [ \&quot;user-key-123abc\&quot;, \&quot;user-key-456def\&quot; ] }] } &#x60;&#x60;&#x60; #### removeExcludedTargets Removes context keys from the individual context targets excluded from the segment for the specified &#x60;contextKind&#x60;. ##### Parameters - &#x60;contextKind&#x60;: The context kind the targets should be removed from. - &#x60;values&#x60;: List of keys. Here&#39;s an example: &#x60;&#x60;&#x60;json { \&quot;instructions\&quot;: [{ \&quot;kind\&quot;: \&quot;removeExcludedTargets\&quot;, \&quot;contextKind\&quot;: \&quot;org\&quot;, \&quot;values\&quot;: [ \&quot;org-key-123abc\&quot;, \&quot;org-key-456def\&quot; ] }] } &#x60;&#x60;&#x60; #### removeExcludedUsers Removes user keys from the individual user targets excluded from the segment. If you are working with contexts, use &#x60;removeExcludedTargets&#x60; instead of this instruction. ##### Parameters - &#x60;values&#x60;: List of user keys. Here&#39;s an example: &#x60;&#x60;&#x60;json { \&quot;instructions\&quot;: [{ \&quot;kind\&quot;: \&quot;removeExcludedUsers\&quot;, \&quot;values\&quot;: [ \&quot;user-key-123abc\&quot;, \&quot;user-key-456def\&quot; ] }] } &#x60;&#x60;&#x60; #### removeIncludedTargets Removes context keys from the individual context targets included in the segment for the specified &#x60;contextKind&#x60;. ##### Parameters - &#x60;contextKind&#x60;: The context kind the targets should be removed from. - &#x60;values&#x60;: List of keys. Here&#39;s an example: &#x60;&#x60;&#x60;json { \&quot;instructions\&quot;: [{ \&quot;kind\&quot;: \&quot;removeIncludedTargets\&quot;, \&quot;contextKind\&quot;: \&quot;org\&quot;, \&quot;values\&quot;: [ \&quot;org-key-123abc\&quot;, \&quot;org-key-456def\&quot; ] }] } &#x60;&#x60;&#x60; #### removeIncludedUsers Removes user keys from the individual user targets included in the segment. If you are working with contexts, use &#x60;removeIncludedTargets&#x60; instead of this instruction. ##### Parameters - &#x60;values&#x60;: List of user keys. Here&#39;s an example: &#x60;&#x60;&#x60;json { \&quot;instructions\&quot;: [{ \&quot;kind\&quot;: \&quot;removeIncludedUsers\&quot;, \&quot;values\&quot;: [ \&quot;user-key-123abc\&quot;, \&quot;user-key-456def\&quot; ] }] } &#x60;&#x60;&#x60; &lt;/details&gt; &lt;details&gt; &lt;summary&gt;Click to expand instructions for &lt;strong&gt;updating segment targeting rules&lt;/strong&gt;&lt;/summary&gt; #### addClauses Adds the given clauses to the rule indicated by &#x60;ruleId&#x60;. ##### Parameters - &#x60;clauses&#x60;: Array of clause objects, with &#x60;contextKind&#x60; (string), &#x60;attribute&#x60; (string), &#x60;op&#x60; (string), &#x60;negate&#x60; (boolean), and &#x60;values&#x60; (array of strings, numbers, or dates) properties. The &#x60;contextKind&#x60;, if not provided, defaults to &#x60;user&#x60;. The &#x60;contextKind&#x60;, &#x60;attribute&#x60;, and &#x60;values&#x60; are case sensitive. The &#x60;op&#x60; must be lower-case. - &#x60;ruleId&#x60;: ID of a rule in the segment. Here&#39;s an example: &#x60;&#x60;&#x60;json { \&quot;instructions\&quot;: [{ \&quot;kind\&quot;: \&quot;addClauses\&quot;, \&quot;clauses\&quot;: [ { \&quot;attribute\&quot;: \&quot;email\&quot;, \&quot;negate\&quot;: false, \&quot;op\&quot;: \&quot;contains\&quot;, \&quot;values\&quot;: [\&quot;value1\&quot;] } ], \&quot;ruleId\&quot;: \&quot;a902ef4a-2faf-4eaf-88e1-ecc356708a29\&quot;, }] } &#x60;&#x60;&#x60; #### addRule Adds a new targeting rule to the segment. The rule may contain &#x60;clauses&#x60;. ##### Parameters - &#x60;clauses&#x60;: Array of clause objects, with &#x60;contextKind&#x60; (string), &#x60;attribute&#x60; (string), &#x60;op&#x60; (string), &#x60;negate&#x60; (boolean), and &#x60;values&#x60; (array of strings, numbers, or dates) properties. The &#x60;contextKind&#x60;, if not provided, defaults to &#x60;user&#x60;. The &#x60;contextKind&#x60;, &#x60;attribute&#x60;, and &#x60;values&#x60; are case sensitive. The &#x60;op&#x60; must be lower-case. - &#x60;description&#x60;: A description of the rule. Here&#39;s an example: &#x60;&#x60;&#x60;json { \&quot;instructions\&quot;: [{ \&quot;kind\&quot;: \&quot;addRule\&quot;, \&quot;clauses\&quot;: [ { \&quot;attribute\&quot;: \&quot;email\&quot;, \&quot;op\&quot;: \&quot;contains\&quot;, \&quot;negate\&quot;: false, \&quot;values\&quot;: [\&quot;@launchdarkly.com\&quot;] } ], \&quot;description\&quot;: \&quot;Targeting rule for LaunchDarkly employees\&quot;, }] } &#x60;&#x60;&#x60; #### addValuesToClause Adds &#x60;values&#x60; to the values of the clause that &#x60;ruleId&#x60; and &#x60;clauseId&#x60; indicate. Does not update the context kind, attribute, or operator. ##### Parameters - &#x60;ruleId&#x60;: ID of a rule in the segment. - &#x60;clauseId&#x60;: ID of a clause in that rule. - &#x60;values&#x60;: Array of strings, case sensitive. Here&#39;s an example: &#x60;&#x60;&#x60;json { \&quot;instructions\&quot;: [{ \&quot;kind\&quot;: \&quot;addValuesToClause\&quot;, \&quot;ruleId\&quot;: \&quot;a902ef4a-2faf-4eaf-88e1-ecc356708a29\&quot;, \&quot;clauseId\&quot;: \&quot;10a58772-3121-400f-846b-b8a04e8944ed\&quot;, \&quot;values\&quot;: [\&quot;beta_testers\&quot;] }] } &#x60;&#x60;&#x60; #### removeClauses Removes the clauses specified by &#x60;clauseIds&#x60; from the rule indicated by &#x60;ruleId&#x60;. ##### Parameters - &#x60;ruleId&#x60;: ID of a rule in the segment. - &#x60;clauseIds&#x60;: Array of IDs of clauses in the rule. Here&#39;s an example: &#x60;&#x60;&#x60;json { \&quot;instructions\&quot;: [{ \&quot;kind\&quot;: \&quot;removeClauses\&quot;, \&quot;ruleId\&quot;: \&quot;a902ef4a-2faf-4eaf-88e1-ecc356708a29\&quot;, \&quot;clauseIds\&quot;: [\&quot;10a58772-3121-400f-846b-b8a04e8944ed\&quot;, \&quot;36a461dc-235e-4b08-97b9-73ce9365873e\&quot;] }] } &#x60;&#x60;&#x60; #### removeRule Removes the targeting rule specified by &#x60;ruleId&#x60;. Does nothing if the rule does not exist. ##### Parameters - &#x60;ruleId&#x60;: ID of a rule in the segment. Here&#39;s an example: &#x60;&#x60;&#x60;json { \&quot;instructions\&quot;: [{ \&quot;kind\&quot;: \&quot;removeRule\&quot;, \&quot;ruleId\&quot;: \&quot;a902ef4a-2faf-4eaf-88e1-ecc356708a29\&quot; }] } &#x60;&#x60;&#x60; #### removeValuesFromClause Removes &#x60;values&#x60; from the values of the clause indicated by &#x60;ruleId&#x60; and &#x60;clauseId&#x60;. Does not update the context kind, attribute, or operator. ##### Parameters - &#x60;ruleId&#x60;: ID of a rule in the segment. - &#x60;clauseId&#x60;: ID of a clause in that rule. - &#x60;values&#x60;: Array of strings, case sensitive. Here&#39;s an example: &#x60;&#x60;&#x60;json { \&quot;instructions\&quot;: [{ \&quot;kind\&quot;: \&quot;removeValuesFromClause\&quot;, \&quot;ruleId\&quot;: \&quot;a902ef4a-2faf-4eaf-88e1-ecc356708a29\&quot;, \&quot;clauseId\&quot;: \&quot;10a58772-3121-400f-846b-b8a04e8944ed\&quot;, \&quot;values\&quot;: [\&quot;beta_testers\&quot;] }] } &#x60;&#x60;&#x60; #### reorderRules Rearranges the rules to match the order given in &#x60;ruleIds&#x60;. Returns an error if &#x60;ruleIds&#x60; does not match the current set of rules in the segment. ##### Parameters - &#x60;ruleIds&#x60;: Array of IDs of all targeting rules in the segment. Here&#39;s an example: &#x60;&#x60;&#x60;json { \&quot;instructions\&quot;: [{ \&quot;kind\&quot;: \&quot;reorderRules\&quot;, \&quot;ruleIds\&quot;: [\&quot;a902ef4a-2faf-4eaf-88e1-ecc356708a29\&quot;, \&quot;63c238d1-835d-435e-8f21-c8d5e40b2a3d\&quot;] }] } &#x60;&#x60;&#x60; #### updateClause Replaces the clause indicated by &#x60;ruleId&#x60; and &#x60;clauseId&#x60; with &#x60;clause&#x60;. ##### Parameters - &#x60;ruleId&#x60;: ID of a rule in the segment. - &#x60;clauseId&#x60;: ID of a clause in that rule. - &#x60;clause&#x60;: New &#x60;clause&#x60; object, with &#x60;contextKind&#x60; (string), &#x60;attribute&#x60; (string), &#x60;op&#x60; (string), &#x60;negate&#x60; (boolean), and &#x60;values&#x60; (array of strings, numbers, or dates) properties. The &#x60;contextKind&#x60;, if not provided, defaults to &#x60;user&#x60;. The &#x60;contextKind&#x60;, &#x60;attribute&#x60;, and &#x60;values&#x60; are case sensitive. The &#x60;op&#x60; must be lower-case. Here&#39;s an example: &#x60;&#x60;&#x60;json { \&quot;instructions\&quot;: [{ \&quot;kind\&quot;: \&quot;updateClause\&quot;, \&quot;ruleId\&quot;: \&quot;a902ef4a-2faf-4eaf-88e1-ecc356708a29\&quot;, \&quot;clauseId\&quot;: \&quot;10c7462a-2062-45ba-a8bb-dfb3de0f8af5\&quot;, \&quot;clause\&quot;: { \&quot;contextKind\&quot;: \&quot;user\&quot;, \&quot;attribute\&quot;: \&quot;country\&quot;, \&quot;op\&quot;: \&quot;in\&quot;, \&quot;negate\&quot;: false, \&quot;values\&quot;: [\&quot;Mexico\&quot;, \&quot;Canada\&quot;] } }] } &#x60;&#x60;&#x60; #### updateRuleDescription Updates the description of the segment targeting rule. ##### Parameters - &#x60;description&#x60;: The new human-readable description for this rule. - &#x60;ruleId&#x60;: The ID of the rule. You can retrieve this by making a GET request for the segment. Here&#39;s an example: &#x60;&#x60;&#x60;json { \&quot;instructions\&quot;: [{ \&quot;kind\&quot;: \&quot;updateRuleDescription\&quot;, \&quot;description\&quot;: \&quot;New rule description\&quot;, \&quot;ruleId\&quot;: \&quot;a902ef4a-2faf-4eaf-88e1-ecc356708a29\&quot; }] } &#x60;&#x60;&#x60; #### updateRuleRolloutAndContextKind For a rule that includes a percentage of targets, updates the percentage and the context kind of the targets to include. ##### Parameters - &#x60;ruleId&#x60;: The ID of a targeting rule in the segment that includes a percentage of targets. - &#x60;weight&#x60;: The weight, in thousandths of a percent (0-100000). - &#x60;contextKind&#x60;: The context kind. Here&#39;s an example: &#x60;&#x60;&#x60;json { \&quot;instructions\&quot;: [{ \&quot;kind\&quot;: \&quot;reorderRules\&quot;, \&quot;ruleId\&quot;: \&quot;a902ef4a-2faf-4eaf-88e1-ecc356708a29\&quot;, \&quot;weight\&quot;: \&quot;20000\&quot;, \&quot;contextKind\&quot;: \&quot;device\&quot; }] } &#x60;&#x60;&#x60; &lt;/details&gt; &lt;details&gt; &lt;summary&gt;Click to expand instructions for &lt;strong&gt;working with Big Segments&lt;/strong&gt;&lt;/summary&gt; A \&quot;big segment\&quot; is a segment that is either a synced segment, or a list-based segment with more than 15,000 entries that includes only one targeted context kind. LaunchDarkly uses different implementations for different types of segments so that all of your segments have good performance. The following semantic patch instructions apply only to these [larger list-based segments](https://launchdarkly.com/docs/home/flags/segments-create#create-larger-list-based-segments). #### addBigSegmentExcludedTargets For use with [larger list-based segments](https://launchdarkly.com/docs/home/flags/segments-create#create-larger-list-based-segments) ONLY. Adds context keys to the context targets excluded from the segment. Returns an error if this causes the same context key to be both included and excluded. ##### Parameters - &#x60;values&#x60;: List of context keys. Here&#39;s an example: &#x60;&#x60;&#x60;json { \&quot;instructions\&quot;: [{ \&quot;kind\&quot;: \&quot;addBigSegmentExcludedTargets\&quot;, \&quot;values\&quot;: [ \&quot;org-key-123abc\&quot;, \&quot;org-key-456def\&quot; ] }] } &#x60;&#x60;&#x60; #### addBigSegmentIncludedTargets For use with [larger list-based segments](https://launchdarkly.com/docs/home/flags/segments-create#create-larger-list-based-segments) ONLY. Adds context keys to the context targets included in the segment. Returns an error if this causes the same context key to be both included and excluded. ##### Parameters - &#x60;values&#x60;: List of context keys. Here&#39;s an example: &#x60;&#x60;&#x60;json { \&quot;instructions\&quot;: [{ \&quot;kind\&quot;: \&quot;addBigSegmentIncludedTargets\&quot;, \&quot;values\&quot;: [ \&quot;org-key-123abc\&quot;, \&quot;org-key-456def\&quot; ] }] } &#x60;&#x60;&#x60; #### processBigSegmentImport For use with [larger list-based segments](https://launchdarkly.com/docs/home/flags/segments-create#create-larger-list-based-segments) ONLY. Processes a segment import. ##### Parameters - &#x60;importId&#x60;: The ID of the import. The import ID is returned in the &#x60;Location&#x60; header as part of the [Create big segment import](https://launchdarkly.com/docs/api/segments/create-big-segment-import) request. Here&#39;s an example: &#x60;&#x60;&#x60;json { \&quot;instructions\&quot;: [{ \&quot;kind\&quot;: \&quot;processBigSegmentImport\&quot;, \&quot;importId\&quot;: \&quot;a902ef4a-2faf-4eaf-88e1-ecc356708a29\&quot; }] } &#x60;&#x60;&#x60; #### removeBigSegmentExcludedTargets For use with [larger list-based segments](https://launchdarkly.com/docs/home/flags/segments-create#create-larger-list-based-segments) ONLY. Removes context keys from the context targets excluded from the segment. ##### Parameters - &#x60;values&#x60;: List of context keys. Here&#39;s an example: &#x60;&#x60;&#x60;json { \&quot;instructions\&quot;: [{ \&quot;kind\&quot;: \&quot;removeBigSegmentExcludedTargets\&quot;, \&quot;values\&quot;: [ \&quot;org-key-123abc\&quot;, \&quot;org-key-456def\&quot; ] }] } &#x60;&#x60;&#x60; #### removeBigSegmentIncludedTargets For use with [larger list-based segments](https://launchdarkly.com/docs/home/flags/segments-create#create-larger-list-based-segments) ONLY. Removes context keys from the context targets included in the segment. ##### Parameters - &#x60;values&#x60;: List of context keys. Here&#39;s an example: &#x60;&#x60;&#x60;json { \&quot;instructions\&quot;: [{ \&quot;kind\&quot;: \&quot;removeBigSegmentIncludedTargets\&quot;, \&quot;values\&quot;: [ \&quot;org-key-123abc\&quot;, \&quot;org-key-456def\&quot; ] }] } &#x60;&#x60;&#x60; &lt;/details&gt; ### Using JSON patches on a segment If you do not include the header described above, you can use a [JSON patch](https://launchdarkly.com/docs/api#updates-using-json-patch) or [JSON merge patch](https://datatracker.ietf.org/doc/html/rfc7386) representation of the desired changes. For example, to update the description for a segment with a JSON patch, use the following request body: &#x60;&#x60;&#x60;json { \&quot;patch\&quot;: [ { \&quot;op\&quot;: \&quot;replace\&quot;, \&quot;path\&quot;: \&quot;/description\&quot;, \&quot;value\&quot;: \&quot;new description\&quot; } ] } &#x60;&#x60;&#x60; To update fields in the segment that are arrays, set the &#x60;path&#x60; to the name of the field and then append &#x60;/&lt;array index&gt;&#x60;. Use &#x60;/0&#x60; to add the new entry to the beginning of the array. Use &#x60;/-&#x60; to add the new entry to the end of the array. For example, to add a rule to a segment, use the following request body: &#x60;&#x60;&#x60;json { \&quot;patch\&quot;:[ { \&quot;op\&quot;: \&quot;add\&quot;, \&quot;path\&quot;: \&quot;/rules/0\&quot;, \&quot;value\&quot;: { \&quot;clauses\&quot;: [{ \&quot;contextKind\&quot;: \&quot;user\&quot;, \&quot;attribute\&quot;: \&quot;email\&quot;, \&quot;op\&quot;: \&quot;endsWith\&quot;, \&quot;values\&quot;: [\&quot;.edu\&quot;], \&quot;negate\&quot;: false }] } } ] } &#x60;&#x60;&#x60; To add or remove targets from segments, we recommend using semantic patch. Semantic patch for segments includes specific instructions for adding and removing both included and excluded targets.
1157
+ # Update a segment. The request body must be a valid semantic patch, JSON patch, or JSON merge patch. To learn more the different formats, read [Updates](https://launchdarkly.com/docs/api#updates). ### Using semantic patches on a segment To make a semantic patch request, you must append &#x60;domain-model&#x3D;launchdarkly.semanticpatch&#x60; to your &#x60;Content-Type&#x60; header. To learn more, read [Updates using semantic patch](https://launchdarkly.com/docs/api#updates-using-semantic-patch). The body of a semantic patch request for updating segments requires an &#x60;environmentKey&#x60; in addition to &#x60;instructions&#x60; and an optional &#x60;comment&#x60;. The body of the request takes the following properties: * &#x60;comment&#x60; (string): (Optional) A description of the update. * &#x60;environmentKey&#x60; (string): (Required) The key of the LaunchDarkly environment. * &#x60;instructions&#x60; (array): (Required) A list of actions the update should perform. Each action in the list must be an object with a &#x60;kind&#x60; property that indicates the instruction. If the action requires parameters, you must include those parameters as additional fields in the object. ### Instructions Semantic patch requests support the following &#x60;kind&#x60; instructions for updating segments. &lt;details&gt; &lt;summary&gt;Click to expand instructions for &lt;strong&gt;updating segment details and settings&lt;/strong&gt;&lt;/summary&gt; #### addTags Adds tags to the segment. ##### Parameters - &#x60;values&#x60;: A list of tags to add. Here&#39;s an example: &#x60;&#x60;&#x60;json { \&quot;instructions\&quot;: [{ \&quot;kind\&quot;: \&quot;addTags\&quot;, \&quot;values\&quot;: [\&quot;tag1\&quot;, \&quot;tag2\&quot;] }] } &#x60;&#x60;&#x60; #### removeTags Removes tags from the segment. ##### Parameters - &#x60;values&#x60;: A list of tags to remove. Here&#39;s an example: &#x60;&#x60;&#x60;json { \&quot;instructions\&quot;: [{ \&quot;kind\&quot;: \&quot;removeTags\&quot;, \&quot;values\&quot;: [\&quot;tag1\&quot;, \&quot;tag2\&quot;] }] } &#x60;&#x60;&#x60; #### updateName Updates the name of the segment. ##### Parameters - &#x60;value&#x60;: Name of the segment. Here&#39;s an example: &#x60;&#x60;&#x60;json { \&quot;instructions\&quot;: [{ \&quot;kind\&quot;: \&quot;updateName\&quot;, \&quot;value\&quot;: \&quot;Updated segment name\&quot; }] } &#x60;&#x60;&#x60; &lt;/details&gt; &lt;details&gt; &lt;summary&gt;Click to expand instructions for &lt;strong&gt;updating segment individual targets&lt;/strong&gt;&lt;/summary&gt; #### addExcludedTargets Adds context keys to the individual context targets excluded from the segment for the specified &#x60;contextKind&#x60;. Returns an error if this causes the same context key to be both included and excluded, or if the number of operations on targets exceeds the batch limit of 1,500. ##### Parameters - &#x60;contextKind&#x60;: The context kind the targets should be added to. - &#x60;values&#x60;: List of keys. Here&#39;s an example: &#x60;&#x60;&#x60;json { \&quot;instructions\&quot;: [{ \&quot;kind\&quot;: \&quot;addExcludedTargets\&quot;, \&quot;contextKind\&quot;: \&quot;org\&quot;, \&quot;values\&quot;: [ \&quot;org-key-123abc\&quot;, \&quot;org-key-456def\&quot; ] }] } &#x60;&#x60;&#x60; #### addExcludedUsers Adds user keys to the individual user targets excluded from the segment. Returns an error if this causes the same user key to be both included and excluded, or if the number of operations on targets exceeds the batch limit of 1,500. If you are working with contexts, use &#x60;addExcludedTargets&#x60; instead of this instruction. ##### Parameters - &#x60;values&#x60;: List of user keys. Here&#39;s an example: &#x60;&#x60;&#x60;json { \&quot;instructions\&quot;: [{ \&quot;kind\&quot;: \&quot;addExcludedUsers\&quot;, \&quot;values\&quot;: [ \&quot;user-key-123abc\&quot;, \&quot;user-key-456def\&quot; ] }] } &#x60;&#x60;&#x60; #### addIncludedTargets Adds context keys to the individual context targets included in the segment for the specified &#x60;contextKind&#x60;. Returns an error if this causes the same context key to be both included and excluded, or if the number of operations on targets exceeds the batch limit of 1,500. ##### Parameters - &#x60;contextKind&#x60;: The context kind the targets should be added to. - &#x60;values&#x60;: List of keys. Here&#39;s an example: &#x60;&#x60;&#x60;json { \&quot;instructions\&quot;: [{ \&quot;kind\&quot;: \&quot;addIncludedTargets\&quot;, \&quot;contextKind\&quot;: \&quot;org\&quot;, \&quot;values\&quot;: [ \&quot;org-key-123abc\&quot;, \&quot;org-key-456def\&quot; ] }] } &#x60;&#x60;&#x60; #### addIncludedUsers Adds user keys to the individual user targets included in the segment. Returns an error if this causes the same user key to be both included and excluded, or if the number of operations on targets exceeds the batch limit of 1,500. If you are working with contexts, use &#x60;addIncludedTargets&#x60; instead of this instruction. ##### Parameters - &#x60;values&#x60;: List of user keys. Here&#39;s an example: &#x60;&#x60;&#x60;json { \&quot;instructions\&quot;: [{ \&quot;kind\&quot;: \&quot;addIncludedUsers\&quot;, \&quot;values\&quot;: [ \&quot;user-key-123abc\&quot;, \&quot;user-key-456def\&quot; ] }] } &#x60;&#x60;&#x60; #### removeExcludedTargets Removes context keys from the individual context targets excluded from the segment for the specified &#x60;contextKind&#x60;. Returns an error if the number of operations on targets exceeds the batch limit of 1,500. ##### Parameters - &#x60;contextKind&#x60;: The context kind the targets should be removed from. - &#x60;values&#x60;: List of keys. Here&#39;s an example: &#x60;&#x60;&#x60;json { \&quot;instructions\&quot;: [{ \&quot;kind\&quot;: \&quot;removeExcludedTargets\&quot;, \&quot;contextKind\&quot;: \&quot;org\&quot;, \&quot;values\&quot;: [ \&quot;org-key-123abc\&quot;, \&quot;org-key-456def\&quot; ] }] } &#x60;&#x60;&#x60; #### removeExcludedUsers Removes user keys from the individual user targets excluded from the segment. If you are working with contexts, use &#x60;removeExcludedTargets&#x60; instead of this instruction. Returns an error if the number of operations on targets exceeds the batch limit of 1,500. ##### Parameters - &#x60;values&#x60;: List of user keys. Here&#39;s an example: &#x60;&#x60;&#x60;json { \&quot;instructions\&quot;: [{ \&quot;kind\&quot;: \&quot;removeExcludedUsers\&quot;, \&quot;values\&quot;: [ \&quot;user-key-123abc\&quot;, \&quot;user-key-456def\&quot; ] }] } &#x60;&#x60;&#x60; #### removeIncludedTargets Removes context keys from the individual context targets included in the segment for the specified &#x60;contextKind&#x60;. Returns an error if the number of operations on targets exceeds the batch limit of 1,500. ##### Parameters - &#x60;contextKind&#x60;: The context kind the targets should be removed from. - &#x60;values&#x60;: List of keys. Here&#39;s an example: &#x60;&#x60;&#x60;json { \&quot;instructions\&quot;: [{ \&quot;kind\&quot;: \&quot;removeIncludedTargets\&quot;, \&quot;contextKind\&quot;: \&quot;org\&quot;, \&quot;values\&quot;: [ \&quot;org-key-123abc\&quot;, \&quot;org-key-456def\&quot; ] }] } &#x60;&#x60;&#x60; #### removeIncludedUsers Removes user keys from the individual user targets included in the segment. If you are working with contexts, use &#x60;removeIncludedTargets&#x60; instead of this instruction. Returns an error if the number of operations on targets exceeds the batch limit of 1,500. ##### Parameters - &#x60;values&#x60;: List of user keys. Here&#39;s an example: &#x60;&#x60;&#x60;json { \&quot;instructions\&quot;: [{ \&quot;kind\&quot;: \&quot;removeIncludedUsers\&quot;, \&quot;values\&quot;: [ \&quot;user-key-123abc\&quot;, \&quot;user-key-456def\&quot; ] }] } &#x60;&#x60;&#x60; &lt;/details&gt; &lt;details&gt; &lt;summary&gt;Click to expand instructions for &lt;strong&gt;updating segment targeting rules&lt;/strong&gt;&lt;/summary&gt; #### addClauses Adds the given clauses to the rule indicated by &#x60;ruleId&#x60;. ##### Parameters - &#x60;clauses&#x60;: Array of clause objects, with &#x60;contextKind&#x60; (string), &#x60;attribute&#x60; (string), &#x60;op&#x60; (string), &#x60;negate&#x60; (boolean), and &#x60;values&#x60; (array of strings, numbers, or dates) properties. The &#x60;contextKind&#x60;, if not provided, defaults to &#x60;user&#x60;. The &#x60;contextKind&#x60;, &#x60;attribute&#x60;, and &#x60;values&#x60; are case sensitive. The &#x60;op&#x60; must be lower-case. - &#x60;ruleId&#x60;: ID of a rule in the segment. Here&#39;s an example: &#x60;&#x60;&#x60;json { \&quot;instructions\&quot;: [{ \&quot;kind\&quot;: \&quot;addClauses\&quot;, \&quot;clauses\&quot;: [ { \&quot;attribute\&quot;: \&quot;email\&quot;, \&quot;negate\&quot;: false, \&quot;op\&quot;: \&quot;contains\&quot;, \&quot;values\&quot;: [\&quot;value1\&quot;] } ], \&quot;ruleId\&quot;: \&quot;a902ef4a-2faf-4eaf-88e1-ecc356708a29\&quot;, }] } &#x60;&#x60;&#x60; #### addRule Adds a new targeting rule to the segment. The rule may contain &#x60;clauses&#x60;. ##### Parameters - &#x60;clauses&#x60;: Array of clause objects, with &#x60;contextKind&#x60; (string), &#x60;attribute&#x60; (string), &#x60;op&#x60; (string), &#x60;negate&#x60; (boolean), and &#x60;values&#x60; (array of strings, numbers, or dates) properties. The &#x60;contextKind&#x60;, if not provided, defaults to &#x60;user&#x60;. The &#x60;contextKind&#x60;, &#x60;attribute&#x60;, and &#x60;values&#x60; are case sensitive. The &#x60;op&#x60; must be lower-case. - &#x60;description&#x60;: A description of the rule. Here&#39;s an example: &#x60;&#x60;&#x60;json { \&quot;instructions\&quot;: [{ \&quot;kind\&quot;: \&quot;addRule\&quot;, \&quot;clauses\&quot;: [ { \&quot;attribute\&quot;: \&quot;email\&quot;, \&quot;op\&quot;: \&quot;contains\&quot;, \&quot;negate\&quot;: false, \&quot;values\&quot;: [\&quot;@launchdarkly.com\&quot;] } ], \&quot;description\&quot;: \&quot;Targeting rule for LaunchDarkly employees\&quot;, }] } &#x60;&#x60;&#x60; #### addValuesToClause Adds &#x60;values&#x60; to the values of the clause that &#x60;ruleId&#x60; and &#x60;clauseId&#x60; indicate. Does not update the context kind, attribute, or operator. ##### Parameters - &#x60;ruleId&#x60;: ID of a rule in the segment. - &#x60;clauseId&#x60;: ID of a clause in that rule. - &#x60;values&#x60;: Array of strings, case sensitive. Here&#39;s an example: &#x60;&#x60;&#x60;json { \&quot;instructions\&quot;: [{ \&quot;kind\&quot;: \&quot;addValuesToClause\&quot;, \&quot;ruleId\&quot;: \&quot;a902ef4a-2faf-4eaf-88e1-ecc356708a29\&quot;, \&quot;clauseId\&quot;: \&quot;10a58772-3121-400f-846b-b8a04e8944ed\&quot;, \&quot;values\&quot;: [\&quot;beta_testers\&quot;] }] } &#x60;&#x60;&#x60; #### removeClauses Removes the clauses specified by &#x60;clauseIds&#x60; from the rule indicated by &#x60;ruleId&#x60;. ##### Parameters - &#x60;ruleId&#x60;: ID of a rule in the segment. - &#x60;clauseIds&#x60;: Array of IDs of clauses in the rule. Here&#39;s an example: &#x60;&#x60;&#x60;json { \&quot;instructions\&quot;: [{ \&quot;kind\&quot;: \&quot;removeClauses\&quot;, \&quot;ruleId\&quot;: \&quot;a902ef4a-2faf-4eaf-88e1-ecc356708a29\&quot;, \&quot;clauseIds\&quot;: [\&quot;10a58772-3121-400f-846b-b8a04e8944ed\&quot;, \&quot;36a461dc-235e-4b08-97b9-73ce9365873e\&quot;] }] } &#x60;&#x60;&#x60; #### removeRule Removes the targeting rule specified by &#x60;ruleId&#x60;. Does nothing if the rule does not exist. ##### Parameters - &#x60;ruleId&#x60;: ID of a rule in the segment. Here&#39;s an example: &#x60;&#x60;&#x60;json { \&quot;instructions\&quot;: [{ \&quot;kind\&quot;: \&quot;removeRule\&quot;, \&quot;ruleId\&quot;: \&quot;a902ef4a-2faf-4eaf-88e1-ecc356708a29\&quot; }] } &#x60;&#x60;&#x60; #### removeValuesFromClause Removes &#x60;values&#x60; from the values of the clause indicated by &#x60;ruleId&#x60; and &#x60;clauseId&#x60;. Does not update the context kind, attribute, or operator. ##### Parameters - &#x60;ruleId&#x60;: ID of a rule in the segment. - &#x60;clauseId&#x60;: ID of a clause in that rule. - &#x60;values&#x60;: Array of strings, case sensitive. Here&#39;s an example: &#x60;&#x60;&#x60;json { \&quot;instructions\&quot;: [{ \&quot;kind\&quot;: \&quot;removeValuesFromClause\&quot;, \&quot;ruleId\&quot;: \&quot;a902ef4a-2faf-4eaf-88e1-ecc356708a29\&quot;, \&quot;clauseId\&quot;: \&quot;10a58772-3121-400f-846b-b8a04e8944ed\&quot;, \&quot;values\&quot;: [\&quot;beta_testers\&quot;] }] } &#x60;&#x60;&#x60; #### reorderRules Rearranges the rules to match the order given in &#x60;ruleIds&#x60;. Returns an error if &#x60;ruleIds&#x60; does not match the current set of rules in the segment. ##### Parameters - &#x60;ruleIds&#x60;: Array of IDs of all targeting rules in the segment. Here&#39;s an example: &#x60;&#x60;&#x60;json { \&quot;instructions\&quot;: [{ \&quot;kind\&quot;: \&quot;reorderRules\&quot;, \&quot;ruleIds\&quot;: [\&quot;a902ef4a-2faf-4eaf-88e1-ecc356708a29\&quot;, \&quot;63c238d1-835d-435e-8f21-c8d5e40b2a3d\&quot;] }] } &#x60;&#x60;&#x60; #### updateClause Replaces the clause indicated by &#x60;ruleId&#x60; and &#x60;clauseId&#x60; with &#x60;clause&#x60;. ##### Parameters - &#x60;ruleId&#x60;: ID of a rule in the segment. - &#x60;clauseId&#x60;: ID of a clause in that rule. - &#x60;clause&#x60;: New &#x60;clause&#x60; object, with &#x60;contextKind&#x60; (string), &#x60;attribute&#x60; (string), &#x60;op&#x60; (string), &#x60;negate&#x60; (boolean), and &#x60;values&#x60; (array of strings, numbers, or dates) properties. The &#x60;contextKind&#x60;, if not provided, defaults to &#x60;user&#x60;. The &#x60;contextKind&#x60;, &#x60;attribute&#x60;, and &#x60;values&#x60; are case sensitive. The &#x60;op&#x60; must be lower-case. Here&#39;s an example: &#x60;&#x60;&#x60;json { \&quot;instructions\&quot;: [{ \&quot;kind\&quot;: \&quot;updateClause\&quot;, \&quot;ruleId\&quot;: \&quot;a902ef4a-2faf-4eaf-88e1-ecc356708a29\&quot;, \&quot;clauseId\&quot;: \&quot;10c7462a-2062-45ba-a8bb-dfb3de0f8af5\&quot;, \&quot;clause\&quot;: { \&quot;contextKind\&quot;: \&quot;user\&quot;, \&quot;attribute\&quot;: \&quot;country\&quot;, \&quot;op\&quot;: \&quot;in\&quot;, \&quot;negate\&quot;: false, \&quot;values\&quot;: [\&quot;Mexico\&quot;, \&quot;Canada\&quot;] } }] } &#x60;&#x60;&#x60; #### updateRuleDescription Updates the description of the segment targeting rule. ##### Parameters - &#x60;description&#x60;: The new human-readable description for this rule. - &#x60;ruleId&#x60;: The ID of the rule. You can retrieve this by making a GET request for the segment. Here&#39;s an example: &#x60;&#x60;&#x60;json { \&quot;instructions\&quot;: [{ \&quot;kind\&quot;: \&quot;updateRuleDescription\&quot;, \&quot;description\&quot;: \&quot;New rule description\&quot;, \&quot;ruleId\&quot;: \&quot;a902ef4a-2faf-4eaf-88e1-ecc356708a29\&quot; }] } &#x60;&#x60;&#x60; #### updateRuleRolloutAndContextKind For a rule that includes a percentage of targets, updates the percentage and the context kind of the targets to include. ##### Parameters - &#x60;ruleId&#x60;: The ID of a targeting rule in the segment that includes a percentage of targets. - &#x60;weight&#x60;: The weight, in thousandths of a percent (0-100000). - &#x60;contextKind&#x60;: The context kind. Here&#39;s an example: &#x60;&#x60;&#x60;json { \&quot;instructions\&quot;: [{ \&quot;kind\&quot;: \&quot;reorderRules\&quot;, \&quot;ruleId\&quot;: \&quot;a902ef4a-2faf-4eaf-88e1-ecc356708a29\&quot;, \&quot;weight\&quot;: \&quot;20000\&quot;, \&quot;contextKind\&quot;: \&quot;device\&quot; }] } &#x60;&#x60;&#x60; &lt;/details&gt; &lt;details&gt; &lt;summary&gt;Click to expand instructions for &lt;strong&gt;working with Big Segments&lt;/strong&gt;&lt;/summary&gt; A \&quot;big segment\&quot; is a segment that is either a synced segment, or a list-based segment with more than 15,000 entries that includes only one targeted context kind. LaunchDarkly uses different implementations for different types of segments so that all of your segments have good performance. The following semantic patch instructions apply only to these [larger list-based segments](https://launchdarkly.com/docs/home/flags/segments-create#create-larger-list-based-segments). #### addBigSegmentExcludedTargets For use with [larger list-based segments](https://launchdarkly.com/docs/home/flags/segments-create#create-larger-list-based-segments) ONLY. Adds context keys to the context targets excluded from the segment. Returns an error if this causes the same context key to be both included and excluded. ##### Parameters - &#x60;values&#x60;: List of context keys. Here&#39;s an example: &#x60;&#x60;&#x60;json { \&quot;instructions\&quot;: [{ \&quot;kind\&quot;: \&quot;addBigSegmentExcludedTargets\&quot;, \&quot;values\&quot;: [ \&quot;org-key-123abc\&quot;, \&quot;org-key-456def\&quot; ] }] } &#x60;&#x60;&#x60; #### addBigSegmentIncludedTargets For use with [larger list-based segments](https://launchdarkly.com/docs/home/flags/segments-create#create-larger-list-based-segments) ONLY. Adds context keys to the context targets included in the segment. Returns an error if this causes the same context key to be both included and excluded. ##### Parameters - &#x60;values&#x60;: List of context keys. Here&#39;s an example: &#x60;&#x60;&#x60;json { \&quot;instructions\&quot;: [{ \&quot;kind\&quot;: \&quot;addBigSegmentIncludedTargets\&quot;, \&quot;values\&quot;: [ \&quot;org-key-123abc\&quot;, \&quot;org-key-456def\&quot; ] }] } &#x60;&#x60;&#x60; #### processBigSegmentImport For use with [larger list-based segments](https://launchdarkly.com/docs/home/flags/segments-create#create-larger-list-based-segments) ONLY. Processes a segment import. ##### Parameters - &#x60;importId&#x60;: The ID of the import. The import ID is returned in the &#x60;Location&#x60; header as part of the [Create big segment import](https://launchdarkly.com/docs/api/segments/create-big-segment-import) request. Here&#39;s an example: &#x60;&#x60;&#x60;json { \&quot;instructions\&quot;: [{ \&quot;kind\&quot;: \&quot;processBigSegmentImport\&quot;, \&quot;importId\&quot;: \&quot;a902ef4a-2faf-4eaf-88e1-ecc356708a29\&quot; }] } &#x60;&#x60;&#x60; #### removeBigSegmentExcludedTargets For use with [larger list-based segments](https://launchdarkly.com/docs/home/flags/segments-create#create-larger-list-based-segments) ONLY. Removes context keys from the context targets excluded from the segment. ##### Parameters - &#x60;values&#x60;: List of context keys. Here&#39;s an example: &#x60;&#x60;&#x60;json { \&quot;instructions\&quot;: [{ \&quot;kind\&quot;: \&quot;removeBigSegmentExcludedTargets\&quot;, \&quot;values\&quot;: [ \&quot;org-key-123abc\&quot;, \&quot;org-key-456def\&quot; ] }] } &#x60;&#x60;&#x60; #### removeBigSegmentIncludedTargets For use with [larger list-based segments](https://launchdarkly.com/docs/home/flags/segments-create#create-larger-list-based-segments) ONLY. Removes context keys from the context targets included in the segment. ##### Parameters - &#x60;values&#x60;: List of context keys. Here&#39;s an example: &#x60;&#x60;&#x60;json { \&quot;instructions\&quot;: [{ \&quot;kind\&quot;: \&quot;removeBigSegmentIncludedTargets\&quot;, \&quot;values\&quot;: [ \&quot;org-key-123abc\&quot;, \&quot;org-key-456def\&quot; ] }] } &#x60;&#x60;&#x60; &lt;/details&gt; ### Using JSON patches on a segment If you do not include the header described above, you can use a [JSON patch](https://launchdarkly.com/docs/api#updates-using-json-patch) or [JSON merge patch](https://datatracker.ietf.org/doc/html/rfc7386) representation of the desired changes. For example, to update the description for a segment with a JSON patch, use the following request body: &#x60;&#x60;&#x60;json { \&quot;patch\&quot;: [ { \&quot;op\&quot;: \&quot;replace\&quot;, \&quot;path\&quot;: \&quot;/description\&quot;, \&quot;value\&quot;: \&quot;new description\&quot; } ] } &#x60;&#x60;&#x60; To update fields in the segment that are arrays, set the &#x60;path&#x60; to the name of the field and then append &#x60;/&lt;array index&gt;&#x60;. Use &#x60;/0&#x60; to add the new entry to the beginning of the array. Use &#x60;/-&#x60; to add the new entry to the end of the array. For example, to add a rule to a segment, use the following request body: &#x60;&#x60;&#x60;json { \&quot;patch\&quot;:[ { \&quot;op\&quot;: \&quot;add\&quot;, \&quot;path\&quot;: \&quot;/rules/0\&quot;, \&quot;value\&quot;: { \&quot;clauses\&quot;: [{ \&quot;contextKind\&quot;: \&quot;user\&quot;, \&quot;attribute\&quot;: \&quot;email\&quot;, \&quot;op\&quot;: \&quot;endsWith\&quot;, \&quot;values\&quot;: [\&quot;.edu\&quot;], \&quot;negate\&quot;: false }] } } ] } &#x60;&#x60;&#x60; To add or remove targets from segments, we recommend using semantic patch. Semantic patch for segments includes specific instructions for adding and removing both included and excluded targets.
1158
1158
  # @param project_key [String] The project key
1159
1159
  # @param environment_key [String] The environment key
1160
1160
  # @param segment_key [String] The segment key
@@ -39,6 +39,9 @@ module LaunchDarklyApi
39
39
 
40
40
  attr_accessor :updated_at
41
41
 
42
+ # List of evaluation metric keys for this AI config
43
+ attr_accessor :evaluation_metric_keys
44
+
42
45
  class EnumAttributeValidator
43
46
  attr_reader :datatype
44
47
  attr_reader :allowable_values
@@ -75,7 +78,8 @@ module LaunchDarklyApi
75
78
  :'version' => :'version',
76
79
  :'variations' => :'variations',
77
80
  :'created_at' => :'createdAt',
78
- :'updated_at' => :'updatedAt'
81
+ :'updated_at' => :'updatedAt',
82
+ :'evaluation_metric_keys' => :'evaluationMetricKeys'
79
83
  }
80
84
  end
81
85
 
@@ -103,7 +107,8 @@ module LaunchDarklyApi
103
107
  :'version' => :'Integer',
104
108
  :'variations' => :'Array<AIConfigVariation>',
105
109
  :'created_at' => :'Integer',
106
- :'updated_at' => :'Integer'
110
+ :'updated_at' => :'Integer',
111
+ :'evaluation_metric_keys' => :'Array<String>'
107
112
  }
108
113
  end
109
114
 
@@ -198,6 +203,12 @@ module LaunchDarklyApi
198
203
  else
199
204
  self.updated_at = nil
200
205
  end
206
+
207
+ if attributes.key?(:'evaluation_metric_keys')
208
+ if (value = attributes[:'evaluation_metric_keys']).is_a?(Array)
209
+ self.evaluation_metric_keys = value
210
+ end
211
+ end
201
212
  end
202
213
 
203
214
  # Show invalid properties with the reasons. Usually used together with valid?
@@ -363,7 +374,8 @@ module LaunchDarklyApi
363
374
  version == o.version &&
364
375
  variations == o.variations &&
365
376
  created_at == o.created_at &&
366
- updated_at == o.updated_at
377
+ updated_at == o.updated_at &&
378
+ evaluation_metric_keys == o.evaluation_metric_keys
367
379
  end
368
380
 
369
381
  # @see the `==` method
@@ -375,7 +387,7 @@ module LaunchDarklyApi
375
387
  # Calculates hash code according to all attributes.
376
388
  # @return [Integer] Hash code
377
389
  def hash
378
- [_access, _links, description, key, _maintainer, mode, name, tags, version, variations, created_at, updated_at].hash
390
+ [_access, _links, description, key, _maintainer, mode, name, tags, version, variations, created_at, updated_at, evaluation_metric_keys].hash
379
391
  end
380
392
 
381
393
  # Builds the object from hash
@@ -77,6 +77,8 @@ module LaunchDarklyApi
77
77
 
78
78
  if attributes.key?(:'key')
79
79
  self.key = attributes[:'key']
80
+ else
81
+ self.key = nil
80
82
  end
81
83
 
82
84
  if attributes.key?(:'environment_key')
@@ -97,6 +99,10 @@ module LaunchDarklyApi
97
99
  def list_invalid_properties
98
100
  warn '[DEPRECATED] the `list_invalid_properties` method is obsolete'
99
101
  invalid_properties = Array.new
102
+ if @key.nil?
103
+ invalid_properties.push('invalid value for "key", key cannot be nil.')
104
+ end
105
+
100
106
  invalid_properties
101
107
  end
102
108
 
@@ -104,9 +110,20 @@ module LaunchDarklyApi
104
110
  # @return true if the model is valid
105
111
  def valid?
106
112
  warn '[DEPRECATED] the `valid?` method is obsolete'
113
+ return false if @key.nil?
107
114
  true
108
115
  end
109
116
 
117
+ # Custom attribute writer method with validation
118
+ # @param [Object] key Value to be assigned
119
+ def key=(key)
120
+ if key.nil?
121
+ fail ArgumentError, 'key cannot be nil'
122
+ end
123
+
124
+ @key = key
125
+ end
126
+
110
127
  # Checks equality by comparing each attribute.
111
128
  # @param [Object] Object to be compared
112
129
  def ==(o)