Update AI Config targeting
Perform a partial update to an AI Config's targeting. The request body must be a valid semantic patch.
Using semantic patches on an AI Config
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.
The body of a semantic patch request for updating an AI Config's targeting takes the following properties:
comment(string): (Optional) A description of the update.environmentKey(string): 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 akindproperty that indicates the instruction. If the action requires parameters, you must include those parameters as additional fields in the object. The body of a single semantic patch can contain many different instructions.
Instructions
Semantic patch requests support the following kind instructions for updating AI Configs.
addClauses
Adds the given clauses to the rule indicated by ruleId.
Parameters
ruleId: ID of a rule in the AI Config.clauses: Array of clause objects, withcontextKind(string),attribute(string),op(string),negate(boolean), andvalues(array of strings, numbers, or dates) properties. ThecontextKind,attribute, andvaluesare case sensitive. Theopmust be lower-case.
Here's an example:
{ "environmentKey": "environment-key-123abc", "instructions": [{ "kind": "addClauses", "ruleId": "a902ef4a-2faf-4eaf-88e1-ecc356708a29", "clauses": [{ "contextKind": "user", "attribute": "country", "op": "in", "negate": false, "values": ["USA", "Canada"] }] }]}addRule
Adds a new targeting rule to the AI Config. The rule may contain clauses and serve the variation that variationId indicates, or serve a percentage rollout that rolloutWeights, rolloutBucketBy, and rolloutContextKind indicate.
If you set beforeRuleId, this adds the new rule before the indicated rule. Otherwise, adds the new rule to the end of the list.
Parameters
clauses: Array of clause objects, withcontextKind(string),attribute(string),op(string),negate(boolean), andvalues(array of strings, numbers, or dates) properties. ThecontextKind,attribute, andvaluesare case sensitive. Theopmust be lower-case.beforeRuleId: (Optional) ID of a rule.- Either
variationId: ID of a variation.
or
rolloutWeights: (Optional) Map ofvariationIdto weight, in thousandths of a percent (0-100000).rolloutBucketBy: (Optional) Context attribute available in the specifiedrolloutContextKind.rolloutContextKind: (Optional) Context kind, defaults touser
Here's an example that uses a variationId:
{"environmentKey": "environment-key-123abc","instructions": [{ "kind": "addRule", "variationId": "2f43f67c-3e4e-4945-a18a-26559378ca00", "clauses": [{ "contextKind": "organization", "attribute": "located_in", "op": "in", "negate": false, "values": ["Sweden", "Norway"] }]}]}Here's an example that uses a percentage rollout:
{"environmentKey": "environment-key-123abc","instructions": [{ "kind": "addRule", "clauses": [{ "contextKind": "organization", "attribute": "located_in", "op": "in", "negate": false, "values": ["Sweden", "Norway"] }], "rolloutContextKind": "organization", "rolloutWeights": { "2f43f67c-3e4e-4945-a18a-26559378ca00": 15000, // serve 15% this variation "e5830889-1ec5-4b0c-9cc9-c48790090c43": 85000 // serve 85% this variation }}]}addTargets
Adds context keys to the individual context targets for the context kind that contextKind specifies and the variation that variationId specifies. Returns an error if this causes the AI Config to target the same context key in multiple variations.
Parameters
values: List of context keys.contextKind: (Optional) Context kind to target, defaults touservariationId: ID of a variation.
Here's an example:
{"environmentKey": "environment-key-123abc","instructions": [{ "kind": "addTargets", "values": ["context-key-123abc", "context-key-456def"], "variationId": "2f43f67c-3e4e-4945-a18a-26559378ca00"}]}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 AI Config.clauseId: ID of a clause in that rule.values: Array of strings, case sensitive.
Here's an example:
{"environmentKey": "environment-key-123abc","instructions": [{ "kind": "addValuesToClause", "ruleId": "a902ef4a-2faf-4eaf-88e1-ecc356708a29", "clauseId": "10a58772-3121-400f-846b-b8a04e8944ed", "values": ["beta_testers"]}]}clearTargets
Removes all individual targets from the variation that variationId specifies. This includes both user and non-user targets.
Parameters
variationId: ID of a variation.
Here's an example:
{"environmentKey": "environment-key-123abc","instructions": [ { "kind": "clearTargets", "variationId": "2f43f67c-3e4e-4945-a18a-26559378ca00" } ]}removeClauses
Removes the clauses specified by clauseIds from the rule indicated by ruleId.
Parameters
ruleId: ID of a rule.clauseIds: Array of IDs of clauses in the rule.
Here's an example:
{"environmentKey": "environment-key-123abc","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.
Here's an example:
{"environmentKey": "environment-key-123abc","instructions": [ { "kind": "removeRule", "ruleId": "a902ef4a-2faf-4eaf-88e1-ecc356708a29" } ]}removeTargets
Removes context keys from the individual context targets for the context kind that contextKind specifies and the variation that variationId specifies. Does nothing if the flag does not target the context keys.
Parameters
values: List of context keys.contextKind: (Optional) Context kind to target, defaults touservariationId: ID of a variation.
Here's an example:
{"environmentKey": "environment-key-123abc","instructions": [{ "kind": "removeTargets", "values": ["context-key-123abc", "context-key-456def"], "variationId": "2f43f67c-3e4e-4945-a18a-26559378ca00"}]}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.clauseId: ID of a clause in that rule.values: Array of strings, case sensitive.
Here's an example:
{"environmentKey": "environment-key-123abc","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 on the AI Config.
Parameters
ruleIds: Array of IDs of all rules.
Here's an example:
{"environmentKey": "environment-key-123abc","instructions": [{ "kind": "reorderRules", "ruleIds": ["a902ef4a-2faf-4eaf-88e1-ecc356708a29", "63c238d1-835d-435e-8f21-c8d5e40b2a3d"]}]}replaceRules
Removes all targeting rules for the AI Config and replaces them with the list you provide.
Parameters
rules: A list of rules.
Here's an example:
{"environmentKey": "environment-key-123abc","instructions": [ { "kind": "replaceRules", "rules": [ { "variationId": "2f43f67c-3e4e-4945-a18a-26559378ca00", "description": "My new rule", "clauses": [ { "contextKind": "user", "attribute": "segmentMatch", "op": "segmentMatch", "values": ["test"] } ] } ] }]}replaceTargets
Removes all existing targeting and replaces it with the list of targets you provide.
Parameters
targets: A list of context targeting. Each item in the list includes an optionalcontextKindthat defaults touser, a requiredvariationId, and a required list ofvalues.
Here's an example:
{"environmentKey": "environment-key-123abc","instructions": [ { "kind": "replaceTargets", "targets": [ { "contextKind": "user", "variationId": "2f43f67c-3e4e-4945-a18a-26559378ca00", "values": ["user-key-123abc"] }, { "contextKind": "device", "variationId": "e5830889-1ec5-4b0c-9cc9-c48790090c43", "values": ["device-key-456def"] } ] }]}updateClause
Replaces the clause indicated by ruleId and clauseId with clause.
Parameters
ruleId: ID of a rule.clauseId: ID of a clause in that rule.clause: Newclauseobject, withcontextKind(string),attribute(string),op(string),negate(boolean), andvalues(array of strings, numbers, or dates) properties. ThecontextKind,attribute, andvaluesare case sensitive. Theopmust be lower-case.
Here's an example:
{"environmentKey": "environment-key-123abc","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"] }}]}updateDefaultVariation
Updates the default on or off variation of the AI Config.
Parameters
onVariationValue: (Optional) The value of the variation of the new on variation.offVariationValue: (Optional) The value of the variation of the new off variation
Here's an example:
{"instructions": [ { "kind": "updateDefaultVariation", "OnVariationValue": true, "OffVariationValue": false } ]}updateFallthroughVariationOrRollout
Updates the default or "fallthrough" rule for the AI Config, which the AI Config serves when a context matches none of the targeting rules. The rule can serve either the variation that variationId indicates, or a percentage rollout that rolloutWeights and rolloutBucketBy indicate.
Parameters
variationId: ID of a variation.
or
rolloutWeights: Map ofvariationIdto weight, in thousandths of a percent (0-100000).rolloutBucketBy: (Optional) Context attribute available in the specifiedrolloutContextKind.rolloutContextKind: (Optional) Context kind, defaults touser
Here's an example that uses a variationId:
{"environmentKey": "environment-key-123abc","instructions": [{ "kind": "updateFallthroughVariationOrRollout", "variationId": "2f43f67c-3e4e-4945-a18a-26559378ca00"}]}Here's an example that uses a percentage rollout:
{"environmentKey": "environment-key-123abc","instructions": [{ "kind": "updateFallthroughVariationOrRollout", "rolloutContextKind": "user", "rolloutWeights": { "2f43f67c-3e4e-4945-a18a-26559378ca00": 15000, // serve 15% this variation "e5830889-1ec5-4b0c-9cc9-c48790090c43": 85000 // serve 85% this variation }}]}updateOffVariation
Updates the default off variation to variationId. The AI Config serves the default off variation when the AI Config's targeting is Off.
Parameters
variationId: ID of a variation.
Here's an example:
{"environmentKey": "environment-key-123abc","instructions": [ { "kind": "updateOffVariation", "variationId": "2f43f67c-3e4e-4945-a18a-26559378ca00" } ]}updateRuleDescription
Updates the description of the 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 AI Config.
Here's an example:
{"environmentKey": "environment-key-123abc","instructions": [{ "kind": "updateRuleDescription", "description": "New rule description", "ruleId": "a902ef4a-2faf-4eaf-88e1-ecc356708a29"}]}updateRuleTrackEvents
Updates whether or not LaunchDarkly tracks events for the AI Config associated with this rule.
Parameters
ruleId: The ID of the rule. You can retrieve this by making a GET request for the AI Config.trackEvents: Whether or not events are tracked.
Here's an example:
{"environmentKey": "environment-key-123abc","instructions": [{ "kind": "updateRuleTrackEvents", "ruleId": "a902ef4a-2faf-4eaf-88e1-ecc356708a29", "trackEvents": true}]}updateRuleVariationOrRollout
Updates what ruleId serves when its clauses evaluate to true. The rule can serve either the variation that variationId indicates, or a percent rollout that rolloutWeights and rolloutBucketBy indicate.
Parameters
ruleId: ID of a rule.variationId: ID of a variation.
or
rolloutWeights: Map ofvariationIdto weight, in thousandths of a percent (0-100000).rolloutBucketBy: (Optional) Context attribute available in the specifiedrolloutContextKind.rolloutContextKind: (Optional) Context kind, defaults touser
Here's an example:
{"environmentKey": "environment-key-123abc","instructions": [{ "kind": "updateRuleVariationOrRollout", "ruleId": "a902ef4a-2faf-4eaf-88e1-ecc356708a29", "variationId": "2f43f67c-3e4e-4945-a18a-26559378ca00"}]}updateTrackEvents
Updates whether or not LaunchDarkly tracks events for the AI Config, for all rules.
Parameters
trackEvents: Whether or not events are tracked.
Here's an example:
{"environmentKey": "environment-key-123abc","instructions": [ { "kind": "updateTrackEvents", "trackEvents": true } ]}updateTrackEventsFallthrough
Updates whether or not LaunchDarkly tracks events for the AI Config, for the default rule.
Parameters
trackEvents: Whether or not events are tracked.
Here's an example:
{"environmentKey": "environment-key-123abc","instructions": [ { "kind": "updateTrackEventsFallthrough", "trackEvents": true } ]}Authorization
ApiKey read, writeIn: header
Scope: read, write
Path Parameters
Request Body
application/json
AI Config targeting semantic patch instructions
Response Body
application/json
application/json
application/json
application/json
application/json
curl -X PATCH "https://example.com/api/v2/projects/string/ai-configs/string/targeting" \ -H "Content-Type: application/json" \ -d '{ "instructions": [ { "key": "" }, { "key": "" } ], "comment": "comment", "environmentKey": "environmentKey" }'{ "createdAt": 0, "defaults": { "onVariation": 6, "offVariation": 1 }, "environments": { "key": { "trackEventsFallthrough": true, "_environmentName": "_environmentName", "contextTargets": [ { "values": [ "values", "values" ], "contextKind": "contextKind", "variation": 5 }, { "values": [ "values", "values" ], "contextKind": "contextKind", "variation": 5 } ], "rules": [ { "clauses": [ { "op": "op", "negate": true, "values": [ "", "" ], "attribute": "attribute", "id": "id" }, { "op": "op", "negate": true, "values": [ "", "" ], "attribute": "attribute", "id": "id" } ], "trackEvents": true }, { "clauses": [ { "op": "op", "negate": true, "values": [ "", "" ], "attribute": "attribute", "id": "id" }, { "op": "op", "negate": true, "values": [ "", "" ], "attribute": "attribute", "id": "id" } ], "trackEvents": true } ], "lastModified": 2, "trackEvents": true, "fallthrough": { "rollout": { "experimentAllocation": { "defaultVariation": 2, "canReshuffle": true, "type": "type" }, "seed": 7, "variations": [ { "weight": 3, "_untracked": true, "variation": 9 }, { "weight": 3, "_untracked": true, "variation": 9 } ], "contextKind": "contextKind", "bucketBy": "bucketBy" }, "variation": 5 }, "offVariation": 4, "targets": [ { "values": [ "values", "values" ], "contextKind": "contextKind", "variation": 5 }, { "values": [ "values", "values" ], "contextKind": "contextKind", "variation": 5 } ], "_version": 7, "enabled": true } }, "variations": [ { "name": "name", "description": "description", "_id": "_id", "value": null }, { "name": "name", "description": "description", "_id": "_id", "value": null } ], "experiments": { "baselineIdx": 1, "items": [ { "metricKey": "my-metric", "environments": [ "production", "test", "my-environment" ], "_environmentSettings": { "key": { "startDate": 6, "stopDate": 8, "enabledPeriods": [ { "startDate": 9, "stopDate": 6 }, { "startDate": 9, "stopDate": 6 } ] } }, "_metric": { "_links": { "parent": { "href": "/api/v2/metrics/my-project", "type": "application/json" }, "self": { "href": "/api/v2/metrics/my-project/my-metric", "type": "application/json" } }, "activeExperimentCount": 2, "windowEndOffset": 1, "randomizationUnits": [ "user" ], "guardedRolloutCount": 0, "_access": { "allowed": [ { "reason": { "role_name": "role_name", "notActions": [ null, null ], "notResources": [ "notResources", "notResources" ], "effect": "allow", "resources": [ "proj/*:env/*;qa_*:/flag/*" ], "actions": [ "*" ] }, "action": "action" }, { "reason": { "role_name": "role_name", "notActions": [ null, null ], "notResources": [ "notResources", "notResources" ], "effect": "allow", "resources": [ "proj/*:env/*;qa_*:/flag/*" ], "actions": [ "*" ] }, "action": "action" } ], "denied": [ { "reason": { "role_name": "role_name", "notActions": [ null, null ], "notResources": [ "notResources", "notResources" ], "effect": "allow", "resources": [ "proj/*:env/*;qa_*:/flag/*" ], "actions": [ "*" ] }, "action": "action" }, { "reason": { "role_name": "role_name", "notActions": [ null, null ], "notResources": [ "notResources", "notResources" ], "effect": "allow", "resources": [ "proj/*:env/*;qa_*:/flag/*" ], "actions": [ "*" ] }, "action": "action" } ] }, "_version": 1, "unitAggregationField": "unitAggregationField", "percentileValue": 95, "traceQuery": "service.name = \"checkout\"", "kind": "custom", "_attachedFlagCount": 0, "metricGroupCount": 0, "_creationDate": 1, "windowStartOffset": 7, "tags": [], "winsorIncludeImputed": false, "denominator": { "isNumeric": true, "valueColumn": "valueColumn", "eventName": "eventName", "unitAggregationType": "unitAggregationType", "filters": { "op": "op", "negate": false, "values": [ "JP" ], "contextKind": "user", "attribute": "country", "type": "contextAttribute" }, "unitAggregationField": "unitAggregationField", "dataSource": { "_name": "_name", "_integrationKey": "_integrationKey", "key": "key", "environmentKey": "environmentKey" }, "windowStartOffset": 4, "windowEndOffset": 5, "winsorLowerPercentile": 9.965781217890562, "winsorUpperPercentile": 9.369310271410669, "winsorIncludeImputed": true }, "maintainerId": "569fdeadbeef1644facecafe", "unit": "unit", "lastSeen": 1, "isNumeric": true, "experimentCount": 0, "name": "My metric", "_id": "5902deadbeef667524a01290", "lastModified": { "date": "2021-08-05T19:46:31.148Z" }, "dataSource": { "_name": "_name", "_integrationKey": "_integrationKey", "key": "key", "environmentKey": "environmentKey" }, "winsorUpperPercentile": 99.5, "_maintainer": { "firstName": "Ariel", "lastName": "Flores", "role": "admin", "_links": { "self": { "href": "/api/v2/members/569f183514f4432160000007", "type": "application/json" } }, "_id": "569f183514f4432160000007", "email": "ariel@acme.com" }, "description": "description", "activeGuardedRolloutCount": 1, "archived": true, "urls": [ null, null ], "_site": { "href": "href", "type": "type" }, "analysisUnits": [ "user" ], "selector": "selector", "winsorLowerPercentile": 1, "key": "metric-key-123abc", "traceValueLocation": "duration", "filters": { "op": "op", "negate": false, "values": [ "JP" ], "contextKind": "user", "attribute": "country", "type": "contextAttribute" }, "eventDefault": { "disabled": true, "value": 0 }, "archivedAt": 6, "successCriteria": "HigherThanBaseline", "releasePolicyCount": 0, "_versionId": "version-id-123abc", "eventKey": "Order placed", "unitAggregationType": "average", "category": "Error monitoring", "analysisType": "mean" } }, { "metricKey": "my-metric", "environments": [ "production", "test", "my-environment" ], "_environmentSettings": { "key": { "startDate": 6, "stopDate": 8, "enabledPeriods": [ { "startDate": 9, "stopDate": 6 }, { "startDate": 9, "stopDate": 6 } ] } }, "_metric": { "_links": { "parent": { "href": "/api/v2/metrics/my-project", "type": "application/json" }, "self": { "href": "/api/v2/metrics/my-project/my-metric", "type": "application/json" } }, "activeExperimentCount": 2, "windowEndOffset": 1, "randomizationUnits": [ "user" ], "guardedRolloutCount": 0, "_access": { "allowed": [ { "reason": { "role_name": "role_name", "notActions": [ null, null ], "notResources": [ "notResources", "notResources" ], "effect": "allow", "resources": [ "proj/*:env/*;qa_*:/flag/*" ], "actions": [ "*" ] }, "action": "action" }, { "reason": { "role_name": "role_name", "notActions": [ null, null ], "notResources": [ "notResources", "notResources" ], "effect": "allow", "resources": [ "proj/*:env/*;qa_*:/flag/*" ], "actions": [ "*" ] }, "action": "action" } ], "denied": [ { "reason": { "role_name": "role_name", "notActions": [ null, null ], "notResources": [ "notResources", "notResources" ], "effect": "allow", "resources": [ "proj/*:env/*;qa_*:/flag/*" ], "actions": [ "*" ] }, "action": "action" }, { "reason": { "role_name": "role_name", "notActions": [ null, null ], "notResources": [ "notResources", "notResources" ], "effect": "allow", "resources": [ "proj/*:env/*;qa_*:/flag/*" ], "actions": [ "*" ] }, "action": "action" } ] }, "_version": 1, "unitAggregationField": "unitAggregationField", "percentileValue": 95, "traceQuery": "service.name = \"checkout\"", "kind": "custom", "_attachedFlagCount": 0, "metricGroupCount": 0, "_creationDate": 1, "windowStartOffset": 7, "tags": [], "winsorIncludeImputed": false, "denominator": { "isNumeric": true, "valueColumn": "valueColumn", "eventName": "eventName", "unitAggregationType": "unitAggregationType", "filters": { "op": "op", "negate": false, "values": [ "JP" ], "contextKind": "user", "attribute": "country", "type": "contextAttribute" }, "unitAggregationField": "unitAggregationField", "dataSource": { "_name": "_name", "_integrationKey": "_integrationKey", "key": "key", "environmentKey": "environmentKey" }, "windowStartOffset": 4, "windowEndOffset": 5, "winsorLowerPercentile": 9.965781217890562, "winsorUpperPercentile": 9.369310271410669, "winsorIncludeImputed": true }, "maintainerId": "569fdeadbeef1644facecafe", "unit": "unit", "lastSeen": 1, "isNumeric": true, "experimentCount": 0, "name": "My metric", "_id": "5902deadbeef667524a01290", "lastModified": { "date": "2021-08-05T19:46:31.148Z" }, "dataSource": { "_name": "_name", "_integrationKey": "_integrationKey", "key": "key", "environmentKey": "environmentKey" }, "winsorUpperPercentile": 99.5, "_maintainer": { "firstName": "Ariel", "lastName": "Flores", "role": "admin", "_links": { "self": { "href": "/api/v2/members/569f183514f4432160000007", "type": "application/json" } }, "_id": "569f183514f4432160000007", "email": "ariel@acme.com" }, "description": "description", "activeGuardedRolloutCount": 1, "archived": true, "urls": [ null, null ], "_site": { "href": "href", "type": "type" }, "analysisUnits": [ "user" ], "selector": "selector", "winsorLowerPercentile": 1, "key": "metric-key-123abc", "traceValueLocation": "duration", "filters": { "op": "op", "negate": false, "values": [ "JP" ], "contextKind": "user", "attribute": "country", "type": "contextAttribute" }, "eventDefault": { "disabled": true, "value": 0 }, "archivedAt": 6, "successCriteria": "HigherThanBaseline", "releasePolicyCount": 0, "_versionId": "version-id-123abc", "eventKey": "Order placed", "unitAggregationType": "average", "category": "Error monitoring", "analysisType": "mean" } } ] }, "name": "name", "_version": 3, "key": "key", "tags": [ "tags", "tags" ]}