launchdarkly_api 18.1.0 → 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 (61) 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/FeatureFlagsApi.md +2 -2
  8. data/docs/GenerateTrustPolicyPostRep.md +18 -0
  9. data/docs/MetricDataSourceRefRep.md +1 -1
  10. data/docs/MetricGroupRep.md +1 -5
  11. data/docs/MetricListingRep.md +1 -1
  12. data/docs/MetricRep.md +1 -1
  13. data/docs/Metrics.md +7 -1
  14. data/docs/MetricsApi.md +3 -3
  15. data/docs/PostReleasePolicyRequest.md +1 -1
  16. data/docs/PutReleasePolicyRequest.md +1 -1
  17. data/docs/RelayAutoConfigRep.md +1 -1
  18. data/docs/ReleasePolicy.md +1 -1
  19. data/docs/ScheduledChangesApi.md +1 -1
  20. data/docs/SegmentsApi.md +1 -1
  21. data/docs/TrustPolicyDetails.md +20 -0
  22. data/docs/TrustPolicyStatement.md +24 -0
  23. data/lib/launchdarkly_api/api/data_export_destinations_api.rb +69 -0
  24. data/lib/launchdarkly_api/api/feature_flags_api.rb +2 -2
  25. data/lib/launchdarkly_api/api/metrics_api.rb +4 -4
  26. data/lib/launchdarkly_api/api/scheduled_changes_api.rb +2 -2
  27. data/lib/launchdarkly_api/api/segments_api.rb +2 -2
  28. data/lib/launchdarkly_api/models/ai_config.rb +16 -4
  29. data/lib/launchdarkly_api/models/ai_configs_metric_data_source_ref_rep.rb +17 -0
  30. data/lib/launchdarkly_api/models/ai_configs_metric_listing_rep.rb +17 -0
  31. data/lib/launchdarkly_api/models/destination.rb +2 -2
  32. data/lib/launchdarkly_api/models/destination_post.rb +2 -2
  33. data/lib/launchdarkly_api/models/generate_trust_policy_post_rep.rb +220 -0
  34. data/lib/launchdarkly_api/models/iteration_rep.rb +29 -5
  35. data/lib/launchdarkly_api/models/metric_data_source_ref_rep.rb +17 -0
  36. data/lib/launchdarkly_api/models/metric_group_rep.rb +4 -24
  37. data/lib/launchdarkly_api/models/metric_listing_rep.rb +17 -0
  38. data/lib/launchdarkly_api/models/metric_rep.rb +17 -0
  39. data/lib/launchdarkly_api/models/metrics.rb +118 -4
  40. data/lib/launchdarkly_api/models/naming_convention.rb +2 -2
  41. data/lib/launchdarkly_api/models/relay_auto_config_rep.rb +0 -17
  42. data/lib/launchdarkly_api/models/trust_policy_details.rb +233 -0
  43. data/lib/launchdarkly_api/models/trust_policy_statement.rb +255 -0
  44. data/lib/launchdarkly_api/version.rb +1 -1
  45. data/lib/launchdarkly_api.rb +3 -0
  46. data/spec/api/data_export_destinations_api_spec.rb +13 -0
  47. data/spec/api/feature_flags_api_spec.rb +1 -1
  48. data/spec/api/metrics_api_spec.rb +2 -2
  49. data/spec/api/scheduled_changes_api_spec.rb +1 -1
  50. data/spec/api/segments_api_spec.rb +1 -1
  51. data/spec/models/ai_config_spec.rb +6 -0
  52. data/spec/models/destination_post_spec.rb +1 -1
  53. data/spec/models/destination_spec.rb +1 -1
  54. data/spec/models/generate_trust_policy_post_rep_spec.rb +36 -0
  55. data/spec/models/iteration_rep_spec.rb +4 -0
  56. data/spec/models/metric_group_rep_spec.rb +0 -12
  57. data/spec/models/metrics_spec.rb +18 -0
  58. data/spec/models/naming_convention_spec.rb +1 -1
  59. data/spec/models/trust_policy_details_spec.rb +42 -0
  60. data/spec/models/trust_policy_statement_spec.rb +54 -0
  61. metadata +14 -2
@@ -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 `limit`.
620
620
  # @option opts [Boolean] :archived Deprecated, use `filter=archived:true` 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 `summary=0` 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 `summary=0` and include the `env` 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 `20240415`. 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 `limit`.
640
640
  # @option opts [Boolean] :archived Deprecated, use `filter=archived:true` 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 `summary=0` 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 `summary=0` and include the `env` 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 `20240415`. 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
@@ -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)
@@ -408,6 +408,8 @@ module LaunchDarklyApi
408
408
 
409
409
  if attributes.key?(:'data_source')
410
410
  self.data_source = attributes[:'data_source']
411
+ else
412
+ self.data_source = nil
411
413
  end
412
414
 
413
415
  if attributes.key?(:'archived')
@@ -466,6 +468,10 @@ module LaunchDarklyApi
466
468
  invalid_properties.push('invalid value for "_creation_date", _creation_date cannot be nil.')
467
469
  end
468
470
 
471
+ if @data_source.nil?
472
+ invalid_properties.push('invalid value for "data_source", data_source cannot be nil.')
473
+ end
474
+
469
475
  invalid_properties
470
476
  end
471
477
 
@@ -489,6 +495,7 @@ module LaunchDarklyApi
489
495
  return false unless unit_aggregation_type_validator.valid?(@unit_aggregation_type)
490
496
  analysis_type_validator = EnumAttributeValidator.new('String', ["mean", "percentile"])
491
497
  return false unless analysis_type_validator.valid?(@analysis_type)
498
+ return false if @data_source.nil?
492
499
  true
493
500
  end
494
501
 
@@ -602,6 +609,16 @@ module LaunchDarklyApi
602
609
  @analysis_type = analysis_type
603
610
  end
604
611
 
612
+ # Custom attribute writer method with validation
613
+ # @param [Object] data_source Value to be assigned
614
+ def data_source=(data_source)
615
+ if data_source.nil?
616
+ fail ArgumentError, 'data_source cannot be nil'
617
+ end
618
+
619
+ @data_source = data_source
620
+ end
621
+
605
622
  # Checks equality by comparing each attribute.
606
623
  # @param [Object] Object to be compared
607
624
  def ==(o)
@@ -167,7 +167,7 @@ module LaunchDarklyApi
167
167
  # @return true if the model is valid
168
168
  def valid?
169
169
  warn '[DEPRECATED] the `valid?` method is obsolete'
170
- kind_validator = EnumAttributeValidator.new('String', ["google-pubsub", "kinesis", "mparticle", "segment", "azure-event-hubs", "snowflake-v2", "databricks", "bigquery"])
170
+ kind_validator = EnumAttributeValidator.new('String', ["google-pubsub", "kinesis", "mparticle", "segment", "azure-event-hubs", "snowflake-v2", "databricks", "bigquery", "redshift"])
171
171
  return false unless kind_validator.valid?(@kind)
172
172
  true
173
173
  end
@@ -175,7 +175,7 @@ module LaunchDarklyApi
175
175
  # Custom attribute writer method checking allowed values (enum).
176
176
  # @param [Object] kind Object to be assigned
177
177
  def kind=(kind)
178
- validator = EnumAttributeValidator.new('String', ["google-pubsub", "kinesis", "mparticle", "segment", "azure-event-hubs", "snowflake-v2", "databricks", "bigquery"])
178
+ validator = EnumAttributeValidator.new('String', ["google-pubsub", "kinesis", "mparticle", "segment", "azure-event-hubs", "snowflake-v2", "databricks", "bigquery", "redshift"])
179
179
  unless validator.valid?(kind)
180
180
  fail ArgumentError, "invalid value for \"kind\", must be one of #{validator.allowable_values}."
181
181
  end
@@ -131,7 +131,7 @@ module LaunchDarklyApi
131
131
  # @return true if the model is valid
132
132
  def valid?
133
133
  warn '[DEPRECATED] the `valid?` method is obsolete'
134
- kind_validator = EnumAttributeValidator.new('String', ["google-pubsub", "kinesis", "mparticle", "segment", "azure-event-hubs", "snowflake-v2", "databricks", "bigquery"])
134
+ kind_validator = EnumAttributeValidator.new('String', ["google-pubsub", "kinesis", "mparticle", "segment", "azure-event-hubs", "snowflake-v2", "databricks", "bigquery", "redshift"])
135
135
  return false unless kind_validator.valid?(@kind)
136
136
  true
137
137
  end
@@ -139,7 +139,7 @@ module LaunchDarklyApi
139
139
  # Custom attribute writer method checking allowed values (enum).
140
140
  # @param [Object] kind Object to be assigned
141
141
  def kind=(kind)
142
- validator = EnumAttributeValidator.new('String', ["google-pubsub", "kinesis", "mparticle", "segment", "azure-event-hubs", "snowflake-v2", "databricks", "bigquery"])
142
+ validator = EnumAttributeValidator.new('String', ["google-pubsub", "kinesis", "mparticle", "segment", "azure-event-hubs", "snowflake-v2", "databricks", "bigquery", "redshift"])
143
143
  unless validator.valid?(kind)
144
144
  fail ArgumentError, "invalid value for \"kind\", must be one of #{validator.allowable_values}."
145
145
  end