[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-launchdarkly-configs-targeting":3,"mdc--ipzu7a-key":34,"related-org-launchdarkly-configs-targeting":5253,"related-repo-launchdarkly-configs-targeting":5382},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":11,"stars":20,"repoUrl":21,"updatedAt":22,"license":23,"forks":24,"topics":25,"repo":29,"sourceUrl":32,"mdContent":33},"configs-targeting","configure LaunchDarkly targeting rules","Configure config targeting rules to control which variations serve to different users. Enable percentage rollouts, attribute-based rules, segment targeting, and guarded rollouts.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},"launchdarkly","LaunchDarkly","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Flaunchdarkly.png",[12,16,19],{"name":13,"slug":14,"type":15},"Configuration","configuration","tag",{"name":17,"slug":18,"type":15},"Feature Flags","feature-flags",{"name":9,"slug":8,"type":15},20,"https:\u002F\u002Fgithub.com\u002Flaunchdarkly\u002Fai-tooling","2026-07-28T05:33:29.907556",null,6,[26,27,28],"agent-skills","launchdarkly-ai","managed-by-terraform",{"repoUrl":21,"stars":20,"forks":24,"topics":30,"description":31},[26,27,28],"LaunchDarkly's official AI tooling","https:\u002F\u002Fgithub.com\u002Flaunchdarkly\u002Fai-tooling\u002Ftree\u002FHEAD\u002Fskills\u002Fagentcontrol\u002Fconfigs-targeting","---\nname: configs-targeting\ndescription: Configure config targeting rules to control which variations serve to different users. Enable percentage rollouts, attribute-based rules, segment targeting, and guarded rollouts.\ncompatibility: Requires LaunchDarkly API access token with ai-configs:write permission.\nmetadata:\n  author: launchdarkly\n  version: \"0.1.0\"\n---\n\n# Config Targeting\n\nConfigure targeting rules for configs to control which variations serve to different contexts. Works the same for both completion and agent mode.\n\n## Prerequisites\n\n- LaunchDarkly account with AgentControl enabled\n- API access token with write permissions\n- Project key and environment key\n- Existing config with variations (use `configs-create` skill)\n\n## API Key Detection\n\n1. **Check environment variables** - `LAUNCHDARKLY_API_KEY`, `LAUNCHDARKLY_API_TOKEN`, `LD_API_KEY`\n2. **Check MCP config** - Claude: `~\u002F.claude\u002Fconfig.json` -> `mcpServers.launchdarkly.env.LAUNCHDARKLY_API_KEY`\n3. **Prompt user** - Only if detection fails\n\n## Core Concepts\n\n### Evaluation Order\n\nTargeting rules evaluate in this order (same as feature flags):\n\n1. **Individual targets** - Specific context keys (highest priority)\n2. **Segment rules** - Pre-defined segments\n3. **Custom rules** - Attribute-based conditions (evaluated in order)\n4. **Default rule** - Fallthrough for all others\n5. **Off variation** - When targeting is disabled\n\n### Semantic Patch API\n\nconfig targeting uses semantic patch instructions:\n\n```\nPATCH \u002Fapi\u002Fv2\u002Fprojects\u002F{projectKey}\u002Fai-configs\u002F{configKey}\u002Ftargeting\nContent-Type: application\u002Fjson; domain-model=launchdarkly.semanticpatch\n```\n\n### Key Concepts\n\n- **variationId**: UUIDs, not keys. Always fetch targeting first to get IDs.\n- **Weights**: Thousandths (50000 = 50%, 100000 = 100%)\n- **Clause logic**: Multiple clauses = AND, multiple values = OR\n- **Null attributes**: Rules with null\u002Fmissing attributes are skipped\n\n## Workflow\n\n### Step 1: Get Targeting (with Variation IDs)\n\n```bash\ncurl -X GET \"https:\u002F\u002Fapp.launchdarkly.com\u002Fapi\u002Fv2\u002Fprojects\u002F{projectKey}\u002Fai-configs\u002F{configKey}\u002Ftargeting\" \\\n  -H \"Authorization: {api_token}\" \\\n  -H \"LD-API-Version: beta\"\n```\n\nResponse includes `variations` array with `_id` (UUID) for each variation.\n\n### Step 2: Edit the Default Rule\n\nEdit the default rule to serve the variation you created.\n\n> **Important:** The `turnTargetingOn` instruction does not work for configs. Use `updateFallthroughVariationOrRollout` instead.\n\n```bash\n# First, get variation IDs from Step 1 response\n# Then set fallthrough to the enabled variation (e.g., \"Default\" variation)\ncurl -X PATCH \"https:\u002F\u002Fapp.launchdarkly.com\u002Fapi\u002Fv2\u002Fprojects\u002F{projectKey}\u002Fai-configs\u002F{configKey}\u002Ftargeting\" \\\n  -H \"Authorization: {api_token}\" \\\n  -H \"Content-Type: application\u002Fjson; domain-model=launchdarkly.semanticpatch\" \\\n  -H \"LD-API-Version: beta\" \\\n  -d '{\n    \"environmentKey\": \"production\",\n    \"instructions\": [{\n      \"kind\": \"updateFallthroughVariationOrRollout\",\n      \"variationId\": \"your-enabled-variation-uuid\"\n    }]\n  }'\n```\n\n### Step 3: Add Targeting Rules\n\n**Attribute-based rule:**\n\n```bash\ncurl -X PATCH \"https:\u002F\u002Fapp.launchdarkly.com\u002Fapi\u002Fv2\u002Fprojects\u002F{projectKey}\u002Fai-configs\u002F{configKey}\u002Ftargeting\" \\\n  -H \"Authorization: {api_token}\" \\\n  -H \"Content-Type: application\u002Fjson; domain-model=launchdarkly.semanticpatch\" \\\n  -H \"LD-API-Version: beta\" \\\n  -d '{\n    \"environmentKey\": \"production\",\n    \"instructions\": [{\n      \"kind\": \"addRule\",\n      \"clauses\": [{\n        \"contextKind\": \"user\",\n        \"attribute\": \"selectedModel\",\n        \"op\": \"contains\",\n        \"values\": [\"sonnet\"],\n        \"negate\": false\n      }],\n      \"variation\": 0\n    }]\n  }'\n```\n\n**Percentage rollout:**\n\n```bash\ncurl -X PATCH \"...\" \\\n  -d '{\n    \"environmentKey\": \"production\",\n    \"instructions\": [{\n      \"kind\": \"addRule\",\n      \"clauses\": [{\n        \"contextKind\": \"user\",\n        \"attribute\": \"tier\",\n        \"op\": \"in\",\n        \"values\": [\"premium\"],\n        \"negate\": false\n      }],\n      \"percentageRolloutConfig\": {\n        \"contextKind\": \"user\",\n        \"bucketBy\": \"key\",\n        \"variations\": [\n          {\"variation\": 0, \"weight\": 60000},\n          {\"variation\": 1, \"weight\": 40000}\n        ]\n      }\n    }]\n  }'\n```\n\n**Set fallthrough (default rule):**\n\n```bash\ncurl -X PATCH \"...\" \\\n  -d '{\n    \"environmentKey\": \"production\",\n    \"instructions\": [{\n      \"kind\": \"updateFallthroughVariationOrRollout\",\n      \"variationId\": \"fallback-variation-uuid\"\n    }]\n  }'\n```\n\n## Python Implementation\n\n```python\nimport requests\nimport os\nfrom typing import Dict, List, Optional\n\nclass AIConfigTargeting:\n    \"\"\"Manager for config targeting rules\"\"\"\n\n    def __init__(self, api_token: str, project_key: str):\n        self.api_token = api_token\n        self.project_key = project_key\n        self.base_url = \"https:\u002F\u002Fapp.launchdarkly.com\u002Fapi\u002Fv2\"\n\n    def get_targeting(self, config_key: str) -> Optional[Dict]:\n        \"\"\"Get current targeting with variation IDs.\"\"\"\n        url = f\"{self.base_url}\u002Fprojects\u002F{self.project_key}\u002Fai-configs\u002F{config_key}\u002Ftargeting\"\n\n        response = requests.get(url, headers={\n            \"Authorization\": self.api_token,\n            \"LD-API-Version\": \"beta\"\n        })\n\n        if response.status_code == 200:\n            return response.json()\n        print(f\"[ERROR] {response.status_code}: {response.text}\")\n        return None\n\n    def get_variation_id(self, config_key: str, variation_key: str) -> Optional[str]:\n        \"\"\"Look up variation UUID from key or name.\"\"\"\n        targeting = self.get_targeting(config_key)\n        if targeting:\n            for var in targeting.get(\"variations\", []):\n                if var.get(\"key\") == variation_key or var.get(\"name\") == variation_key:\n                    return var.get(\"_id\")\n        return None\n\n    def update_targeting(self, config_key: str, environment: str,\n                         instructions: List[Dict], comment: str = \"\") -> Optional[Dict]:\n        \"\"\"Send semantic patch instructions.\"\"\"\n        url = f\"{self.base_url}\u002Fprojects\u002F{self.project_key}\u002Fai-configs\u002F{config_key}\u002Ftargeting\"\n\n        payload = {\"environmentKey\": environment, \"instructions\": instructions}\n        if comment:\n            payload[\"comment\"] = comment\n\n        response = requests.patch(url, headers={\n            \"Authorization\": self.api_token,\n            \"Content-Type\": \"application\u002Fjson; domain-model=launchdarkly.semanticpatch\",\n            \"LD-API-Version\": \"beta\"\n        }, json=payload)\n\n        if response.status_code == 200:\n            return response.json()\n        print(f\"[ERROR] {response.status_code}: {response.text}\")\n        return None\n\n    def enable_config(self, config_key: str, environment: str,\n                      variation_key: str = \"default\") -> bool:\n        \"\"\"\n        Enable a config by setting fallthrough to an enabled variation.\n\n        Note: turnTargetingOn doesn't work for configs. Instead, set the\n        fallthrough from the disabled variation (index 0) to an enabled one.\n        \"\"\"\n        variation_id = self.get_variation_id(config_key, variation_key)\n        if not variation_id:\n            print(f\"[ERROR] Variation '{variation_key}' not found\")\n            return False\n        return self.set_fallthrough(config_key, environment, variation_id)\n\n    def add_rule(self, config_key: str, environment: str,\n                 clauses: List[Dict], variation: int,\n                 description: str = \"\") -> bool:\n        \"\"\"Add targeting rule serving a specific variation index.\"\"\"\n        instruction = {\n            \"kind\": \"addRule\",\n            \"clauses\": clauses,\n            \"variation\": variation\n        }\n        if description:\n            instruction[\"description\"] = description\n\n        result = self.update_targeting(config_key, environment,\n            [instruction], f\"Add rule: {description}\")\n        if result:\n            print(f\"[OK] Rule added\")\n            return True\n        return False\n\n    def add_rollout_rule(self, config_key: str, environment: str,\n                         clauses: List[Dict],\n                         weights: List[Dict],\n                         bucket_by: str = \"key\") -> bool:\n        \"\"\"\n        Add percentage rollout rule.\n\n        weights: [{\"variation\": 0, \"weight\": 50000}, {\"variation\": 1, \"weight\": 50000}]\n        \"\"\"\n        result = self.update_targeting(config_key, environment, [{\n            \"kind\": \"addRule\",\n            \"clauses\": clauses,\n            \"percentageRolloutConfig\": {\n                \"contextKind\": \"user\",\n                \"bucketBy\": bucket_by,\n                \"variations\": weights\n            }\n        }], \"Add percentage rollout\")\n        if result:\n            print(f\"[OK] Rollout rule added\")\n            return True\n        return False\n\n    def set_fallthrough(self, config_key: str, environment: str,\n                        variation_id: str) -> bool:\n        \"\"\"Set default (fallthrough) variation by UUID.\"\"\"\n        result = self.update_targeting(config_key, environment, [{\n            \"kind\": \"updateFallthroughVariationOrRollout\",\n            \"variationId\": variation_id\n        }], \"Set fallthrough\")\n        if result:\n            print(f\"[OK] Fallthrough set\")\n            return True\n        return False\n\n    def target_individuals(self, config_key: str, environment: str,\n                          context_keys: List[str], variation: int,\n                          context_kind: str = \"user\") -> bool:\n        \"\"\"Target specific context keys.\"\"\"\n        result = self.update_targeting(config_key, environment, [{\n            \"kind\": \"addTargets\",\n            \"variation\": variation,\n            \"contextKind\": context_kind,\n            \"values\": context_keys\n        }], f\"Target {len(context_keys)} individuals\")\n        if result:\n            print(f\"[OK] Individual targets added\")\n            return True\n        return False\n\n    def target_segment(self, config_key: str, environment: str,\n                      segment_keys: List[str], variation: int) -> bool:\n        \"\"\"Target a segment.\"\"\"\n        result = self.update_targeting(config_key, environment, [{\n            \"kind\": \"addRule\",\n            \"clauses\": [{\n                \"attribute\": \"segmentMatch\",\n                \"contextKind\": \"\",  # Leave blank for segments\n                \"op\": \"segmentMatch\",\n                \"values\": segment_keys,\n                \"negate\": False\n            }],\n            \"variation\": variation\n        }], f\"Target segments: {segment_keys}\")\n        if result:\n            print(f\"[OK] Segment targeting added\")\n            return True\n        return False\n\n    def clear_rules(self, config_key: str, environment: str) -> bool:\n        \"\"\"Remove all targeting rules.\"\"\"\n        result = self.update_targeting(config_key, environment,\n            [{\"kind\": \"replaceRules\", \"rules\": []}], \"Clear all rules\")\n        if result:\n            print(f\"[OK] All rules cleared\")\n            return True\n        return False\n```\n\n## Instruction Reference\n\n> **Note:** `turnTargetingOn` and `turnTargetingOff` do not work for configs. Configs have targeting enabled by default. To \"enable\" a config, set the fallthrough to an enabled variation using `updateFallthroughVariationOrRollout`.\n\n### Rules\n| Kind | Description |\n|------|-------------|\n| `addRule` | Add rule with clauses and variation\u002Frollout |\n| `removeRule` | Remove by ruleId |\n| `replaceRules` | Replace all rules |\n| `reorderRules` | Change evaluation order |\n| `updateRuleVariationOrRollout` | Update what a rule serves |\n\n### Fallthrough\n| Kind | Description |\n|------|-------------|\n| `updateFallthroughVariationOrRollout` | Set default variation or rollout |\n\n### Individual Targets\n| Kind | Description |\n|------|-------------|\n| `addTargets` | Target specific context keys |\n| `removeTargets` | Remove specific targets |\n| `replaceTargets` | Replace all targets |\n\n## Operators Reference\n\n| Operator | Description | Example |\n|----------|-------------|---------|\n| `in` | Value in list | `[\"premium\", \"enterprise\"]` |\n| `contains` | String contains | `[\"sonnet\"]` |\n| `startsWith` | String prefix | `[\"user-\"]` |\n| `endsWith` | String suffix | `[\".edu\"]` |\n| `matches` | Regex match | `[\"^user-\\\\d+$\"]` |\n| `greaterThan` \u002F `lessThan` | Numeric comparison | `[100]` |\n| `before` \u002F `after` | Date comparison | `[\"2024-12-31T00:00:00Z\"]` |\n| `semVerEqual` \u002F `semVerGreaterThan` | Version comparison | `[\"2.0.0\"]` |\n| `segmentMatch` | Segment membership | `[\"beta-testers\"]` |\n\n## Clause Structure\n\n```json\n{\n  \"contextKind\": \"user\",\n  \"attribute\": \"email\",\n  \"op\": \"endsWith\",\n  \"values\": [\".edu\"],\n  \"negate\": false\n}\n```\n\n- Multiple clauses = AND (all must match)\n- Multiple values = OR (any can match)\n- `negate: true` inverts the operator\n\n## Rollout Types\n\n### Manual Percentage Rollout\n```json\n{\n  \"percentageRolloutConfig\": {\n    \"contextKind\": \"user\",\n    \"bucketBy\": \"key\",\n    \"variations\": [\n      {\"variation\": 0, \"weight\": 50000},\n      {\"variation\": 1, \"weight\": 50000}\n    ]\n  }\n}\n```\n\n### Progressive Rollout\n```json\n{\n  \"progressiveRolloutConfig\": {\n    \"contextKind\": \"user\",\n    \"controlVariation\": 1,\n    \"endVariation\": 0,\n    \"steps\": [\n      {\"rolloutWeight\": 1000, \"duration\": {\"quantity\": 4, \"unit\": \"hour\"}},\n      {\"rolloutWeight\": 5000, \"duration\": {\"quantity\": 4, \"unit\": \"hour\"}},\n      {\"rolloutWeight\": 10000, \"duration\": {\"quantity\": 4, \"unit\": \"hour\"}}\n    ]\n  }\n}\n```\n\n### Guarded Rollout\n```json\n{\n  \"guardedRolloutConfig\": {\n    \"randomizationUnit\": \"user\",\n    \"stages\": [\n      {\"rolloutWeight\": 1000, \"monitoringWindowMilliseconds\": 17280000},\n      {\"rolloutWeight\": 5000, \"monitoringWindowMilliseconds\": 17280000}\n    ],\n    \"metrics\": [{\n      \"metricKey\": \"error-rate\",\n      \"onRegression\": {\"rollback\": true},\n      \"regressionThreshold\": 0.01\n    }]\n  }\n}\n```\n\n## Common Patterns\n\n### Model Routing by Attribute\n```python\n# Route based on selectedModel context attribute\ntargeting.add_rule(\n    config_key=\"model-selector\",\n    environment=\"production\",\n    clauses=[{\n        \"contextKind\": \"user\",\n        \"attribute\": \"selectedModel\",\n        \"op\": \"contains\",\n        \"values\": [\"sonnet\"],\n        \"negate\": False\n    }],\n    variation=0,  # Sonnet variation index\n    description=\"Route sonnet requests\"\n)\n```\n\n### Tier-Based Variation\n```python\ntargeting.add_rule(\n    config_key=\"chat-assistant\",\n    environment=\"production\",\n    clauses=[{\n        \"contextKind\": \"user\",\n        \"attribute\": \"tier\",\n        \"op\": \"in\",\n        \"values\": [\"premium\", \"enterprise\"],\n        \"negate\": False\n    }],\n    variation=0  # Premium model variation\n)\n```\n\n### Segment Targeting\n```python\ntargeting.target_segment(\n    config_key=\"chat-assistant\",\n    environment=\"production\",\n    segment_keys=[\"beta-testers\"],\n    variation=1  # Experimental variation\n)\n```\n\n## Error Handling\n\n| Status | Cause | Solution |\n|--------|-------|----------|\n| 400 | Invalid semantic patch | Check instruction format, ops must be lowercase |\n| 403 | Insufficient permissions | Check API token |\n| 404 | Config not found | Verify projectKey and configKey |\n| 422 | Invalid variation | Use index (0, 1, 2...) or UUID from targeting response |\n\n## Next Steps\n\nAfter configuring targeting:\n1. **Provide config URL:**\n   ```\n   https:\u002F\u002Fapp.launchdarkly.com\u002Fprojects\u002F{projectKey}\u002Fai-configs\u002F{configKey}\n   ```\n2. **Monitor performance** with `built-in-metrics`\n3. **Attach judges** with `online-evals`\n4. **Set up guarded rollouts** for automatic regression detection\n\n## Related Skills\n\n- `configs-create` - Create configs with variations\n- `configs-variations` - Manage variations\n- `online-evals` - Attach judges\n- `segments` - Create segments for targeting\n\n## Other Resources\n\n- [Target with AgentControl](https:\u002F\u002Fdocs.launchdarkly.com\u002Fhome\u002Fai-configs\u002Ftarget.md)\n- [Targeting Rules](https:\u002F\u002Fdocs.launchdarkly.com\u002Fhome\u002Fflags\u002Ftarget-rules.md)\n- [JSON Targeting](https:\u002F\u002Fdocs.launchdarkly.com\u002Fhome\u002Fflags\u002Fjson-targeting.md)\n- [Guarded Rollouts](https:\u002F\u002Fdocs.launchdarkly.com\u002Fhome\u002Freleases\u002Fguarded-rollouts.md)\n",{"data":35,"body":39},{"name":4,"description":6,"compatibility":36,"metadata":37},"Requires LaunchDarkly API access token with ai-configs:write permission.",{"author":8,"version":38},"0.1.0",{"type":40,"children":41},"root",[42,51,57,64,98,104,174,180,187,192,245,251,256,268,274,317,323,329,431,452,458,463,493,699,705,713,944,952,1163,1171,1271,1277,2697,2703,2738,2744,2857,2863,2899,2905,2976,2982,3264,3270,3476,3500,3506,3512,3790,3796,4304,4310,4683,4689,4695,4810,4816,4910,4916,4968,4974,5073,5079,5084,5145,5151,5196,5202,5247],{"type":43,"tag":44,"props":45,"children":47},"element","h1",{"id":46},"config-targeting",[48],{"type":49,"value":50},"text","Config Targeting",{"type":43,"tag":52,"props":53,"children":54},"p",{},[55],{"type":49,"value":56},"Configure targeting rules for configs to control which variations serve to different contexts. Works the same for both completion and agent mode.",{"type":43,"tag":58,"props":59,"children":61},"h2",{"id":60},"prerequisites",[62],{"type":49,"value":63},"Prerequisites",{"type":43,"tag":65,"props":66,"children":67},"ul",{},[68,74,79,84],{"type":43,"tag":69,"props":70,"children":71},"li",{},[72],{"type":49,"value":73},"LaunchDarkly account with AgentControl enabled",{"type":43,"tag":69,"props":75,"children":76},{},[77],{"type":49,"value":78},"API access token with write permissions",{"type":43,"tag":69,"props":80,"children":81},{},[82],{"type":49,"value":83},"Project key and environment key",{"type":43,"tag":69,"props":85,"children":86},{},[87,89,96],{"type":49,"value":88},"Existing config with variations (use ",{"type":43,"tag":90,"props":91,"children":93},"code",{"className":92},[],[94],{"type":49,"value":95},"configs-create",{"type":49,"value":97}," skill)",{"type":43,"tag":58,"props":99,"children":101},{"id":100},"api-key-detection",[102],{"type":49,"value":103},"API Key Detection",{"type":43,"tag":105,"props":106,"children":107},"ol",{},[108,140,164],{"type":43,"tag":69,"props":109,"children":110},{},[111,117,119,125,127,133,134],{"type":43,"tag":112,"props":113,"children":114},"strong",{},[115],{"type":49,"value":116},"Check environment variables",{"type":49,"value":118}," - ",{"type":43,"tag":90,"props":120,"children":122},{"className":121},[],[123],{"type":49,"value":124},"LAUNCHDARKLY_API_KEY",{"type":49,"value":126},", ",{"type":43,"tag":90,"props":128,"children":130},{"className":129},[],[131],{"type":49,"value":132},"LAUNCHDARKLY_API_TOKEN",{"type":49,"value":126},{"type":43,"tag":90,"props":135,"children":137},{"className":136},[],[138],{"type":49,"value":139},"LD_API_KEY",{"type":43,"tag":69,"props":141,"children":142},{},[143,148,150,156,158],{"type":43,"tag":112,"props":144,"children":145},{},[146],{"type":49,"value":147},"Check MCP config",{"type":49,"value":149}," - Claude: ",{"type":43,"tag":90,"props":151,"children":153},{"className":152},[],[154],{"type":49,"value":155},"~\u002F.claude\u002Fconfig.json",{"type":49,"value":157}," -> ",{"type":43,"tag":90,"props":159,"children":161},{"className":160},[],[162],{"type":49,"value":163},"mcpServers.launchdarkly.env.LAUNCHDARKLY_API_KEY",{"type":43,"tag":69,"props":165,"children":166},{},[167,172],{"type":43,"tag":112,"props":168,"children":169},{},[170],{"type":49,"value":171},"Prompt user",{"type":49,"value":173}," - Only if detection fails",{"type":43,"tag":58,"props":175,"children":177},{"id":176},"core-concepts",[178],{"type":49,"value":179},"Core Concepts",{"type":43,"tag":181,"props":182,"children":184},"h3",{"id":183},"evaluation-order",[185],{"type":49,"value":186},"Evaluation Order",{"type":43,"tag":52,"props":188,"children":189},{},[190],{"type":49,"value":191},"Targeting rules evaluate in this order (same as feature flags):",{"type":43,"tag":105,"props":193,"children":194},{},[195,205,215,225,235],{"type":43,"tag":69,"props":196,"children":197},{},[198,203],{"type":43,"tag":112,"props":199,"children":200},{},[201],{"type":49,"value":202},"Individual targets",{"type":49,"value":204}," - Specific context keys (highest priority)",{"type":43,"tag":69,"props":206,"children":207},{},[208,213],{"type":43,"tag":112,"props":209,"children":210},{},[211],{"type":49,"value":212},"Segment rules",{"type":49,"value":214}," - Pre-defined segments",{"type":43,"tag":69,"props":216,"children":217},{},[218,223],{"type":43,"tag":112,"props":219,"children":220},{},[221],{"type":49,"value":222},"Custom rules",{"type":49,"value":224}," - Attribute-based conditions (evaluated in order)",{"type":43,"tag":69,"props":226,"children":227},{},[228,233],{"type":43,"tag":112,"props":229,"children":230},{},[231],{"type":49,"value":232},"Default rule",{"type":49,"value":234}," - Fallthrough for all others",{"type":43,"tag":69,"props":236,"children":237},{},[238,243],{"type":43,"tag":112,"props":239,"children":240},{},[241],{"type":49,"value":242},"Off variation",{"type":49,"value":244}," - When targeting is disabled",{"type":43,"tag":181,"props":246,"children":248},{"id":247},"semantic-patch-api",[249],{"type":49,"value":250},"Semantic Patch API",{"type":43,"tag":52,"props":252,"children":253},{},[254],{"type":49,"value":255},"config targeting uses semantic patch instructions:",{"type":43,"tag":257,"props":258,"children":262},"pre",{"className":259,"code":261,"language":49},[260],"language-text","PATCH \u002Fapi\u002Fv2\u002Fprojects\u002F{projectKey}\u002Fai-configs\u002F{configKey}\u002Ftargeting\nContent-Type: application\u002Fjson; domain-model=launchdarkly.semanticpatch\n",[263],{"type":43,"tag":90,"props":264,"children":266},{"__ignoreMap":265},"",[267],{"type":49,"value":261},{"type":43,"tag":181,"props":269,"children":271},{"id":270},"key-concepts",[272],{"type":49,"value":273},"Key Concepts",{"type":43,"tag":65,"props":275,"children":276},{},[277,287,297,307],{"type":43,"tag":69,"props":278,"children":279},{},[280,285],{"type":43,"tag":112,"props":281,"children":282},{},[283],{"type":49,"value":284},"variationId",{"type":49,"value":286},": UUIDs, not keys. Always fetch targeting first to get IDs.",{"type":43,"tag":69,"props":288,"children":289},{},[290,295],{"type":43,"tag":112,"props":291,"children":292},{},[293],{"type":49,"value":294},"Weights",{"type":49,"value":296},": Thousandths (50000 = 50%, 100000 = 100%)",{"type":43,"tag":69,"props":298,"children":299},{},[300,305],{"type":43,"tag":112,"props":301,"children":302},{},[303],{"type":49,"value":304},"Clause logic",{"type":49,"value":306},": Multiple clauses = AND, multiple values = OR",{"type":43,"tag":69,"props":308,"children":309},{},[310,315],{"type":43,"tag":112,"props":311,"children":312},{},[313],{"type":49,"value":314},"Null attributes",{"type":49,"value":316},": Rules with null\u002Fmissing attributes are skipped",{"type":43,"tag":58,"props":318,"children":320},{"id":319},"workflow",[321],{"type":49,"value":322},"Workflow",{"type":43,"tag":181,"props":324,"children":326},{"id":325},"step-1-get-targeting-with-variation-ids",[327],{"type":49,"value":328},"Step 1: Get Targeting (with Variation IDs)",{"type":43,"tag":257,"props":330,"children":334},{"className":331,"code":332,"language":333,"meta":265,"style":265},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","curl -X GET \"https:\u002F\u002Fapp.launchdarkly.com\u002Fapi\u002Fv2\u002Fprojects\u002F{projectKey}\u002Fai-configs\u002F{configKey}\u002Ftargeting\" \\\n  -H \"Authorization: {api_token}\" \\\n  -H \"LD-API-Version: beta\"\n","bash",[335],{"type":43,"tag":90,"props":336,"children":337},{"__ignoreMap":265},[338,383,409],{"type":43,"tag":339,"props":340,"children":343},"span",{"class":341,"line":342},"line",1,[344,350,356,361,367,372,377],{"type":43,"tag":339,"props":345,"children":347},{"style":346},"--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B",[348],{"type":49,"value":349},"curl",{"type":43,"tag":339,"props":351,"children":353},{"style":352},"--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D",[354],{"type":49,"value":355}," -X",{"type":43,"tag":339,"props":357,"children":358},{"style":352},[359],{"type":49,"value":360}," GET",{"type":43,"tag":339,"props":362,"children":364},{"style":363},"--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF",[365],{"type":49,"value":366}," \"",{"type":43,"tag":339,"props":368,"children":369},{"style":352},[370],{"type":49,"value":371},"https:\u002F\u002Fapp.launchdarkly.com\u002Fapi\u002Fv2\u002Fprojects\u002F{projectKey}\u002Fai-configs\u002F{configKey}\u002Ftargeting",{"type":43,"tag":339,"props":373,"children":374},{"style":363},[375],{"type":49,"value":376},"\"",{"type":43,"tag":339,"props":378,"children":380},{"style":379},"--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8",[381],{"type":49,"value":382}," \\\n",{"type":43,"tag":339,"props":384,"children":386},{"class":341,"line":385},2,[387,392,396,401,405],{"type":43,"tag":339,"props":388,"children":389},{"style":352},[390],{"type":49,"value":391},"  -H",{"type":43,"tag":339,"props":393,"children":394},{"style":363},[395],{"type":49,"value":366},{"type":43,"tag":339,"props":397,"children":398},{"style":352},[399],{"type":49,"value":400},"Authorization: {api_token}",{"type":43,"tag":339,"props":402,"children":403},{"style":363},[404],{"type":49,"value":376},{"type":43,"tag":339,"props":406,"children":407},{"style":379},[408],{"type":49,"value":382},{"type":43,"tag":339,"props":410,"children":412},{"class":341,"line":411},3,[413,417,421,426],{"type":43,"tag":339,"props":414,"children":415},{"style":352},[416],{"type":49,"value":391},{"type":43,"tag":339,"props":418,"children":419},{"style":363},[420],{"type":49,"value":366},{"type":43,"tag":339,"props":422,"children":423},{"style":352},[424],{"type":49,"value":425},"LD-API-Version: beta",{"type":43,"tag":339,"props":427,"children":428},{"style":363},[429],{"type":49,"value":430},"\"\n",{"type":43,"tag":52,"props":432,"children":433},{},[434,436,442,444,450],{"type":49,"value":435},"Response includes ",{"type":43,"tag":90,"props":437,"children":439},{"className":438},[],[440],{"type":49,"value":441},"variations",{"type":49,"value":443}," array with ",{"type":43,"tag":90,"props":445,"children":447},{"className":446},[],[448],{"type":49,"value":449},"_id",{"type":49,"value":451}," (UUID) for each variation.",{"type":43,"tag":181,"props":453,"children":455},{"id":454},"step-2-edit-the-default-rule",[456],{"type":49,"value":457},"Step 2: Edit the Default Rule",{"type":43,"tag":52,"props":459,"children":460},{},[461],{"type":49,"value":462},"Edit the default rule to serve the variation you created.",{"type":43,"tag":464,"props":465,"children":466},"blockquote",{},[467],{"type":43,"tag":52,"props":468,"children":469},{},[470,475,477,483,485,491],{"type":43,"tag":112,"props":471,"children":472},{},[473],{"type":49,"value":474},"Important:",{"type":49,"value":476}," The ",{"type":43,"tag":90,"props":478,"children":480},{"className":479},[],[481],{"type":49,"value":482},"turnTargetingOn",{"type":49,"value":484}," instruction does not work for configs. Use ",{"type":43,"tag":90,"props":486,"children":488},{"className":487},[],[489],{"type":49,"value":490},"updateFallthroughVariationOrRollout",{"type":49,"value":492}," instead.",{"type":43,"tag":257,"props":494,"children":496},{"className":331,"code":495,"language":333,"meta":265,"style":265},"# First, get variation IDs from Step 1 response\n# Then set fallthrough to the enabled variation (e.g., \"Default\" variation)\ncurl -X PATCH \"https:\u002F\u002Fapp.launchdarkly.com\u002Fapi\u002Fv2\u002Fprojects\u002F{projectKey}\u002Fai-configs\u002F{configKey}\u002Ftargeting\" \\\n  -H \"Authorization: {api_token}\" \\\n  -H \"Content-Type: application\u002Fjson; domain-model=launchdarkly.semanticpatch\" \\\n  -H \"LD-API-Version: beta\" \\\n  -d '{\n    \"environmentKey\": \"production\",\n    \"instructions\": [{\n      \"kind\": \"updateFallthroughVariationOrRollout\",\n      \"variationId\": \"your-enabled-variation-uuid\"\n    }]\n  }'\n",[497],{"type":43,"tag":90,"props":498,"children":499},{"__ignoreMap":265},[500,509,517,549,573,598,621,640,649,658,667,676,685],{"type":43,"tag":339,"props":501,"children":502},{"class":341,"line":342},[503],{"type":43,"tag":339,"props":504,"children":506},{"style":505},"--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic",[507],{"type":49,"value":508},"# First, get variation IDs from Step 1 response\n",{"type":43,"tag":339,"props":510,"children":511},{"class":341,"line":385},[512],{"type":43,"tag":339,"props":513,"children":514},{"style":505},[515],{"type":49,"value":516},"# Then set fallthrough to the enabled variation (e.g., \"Default\" variation)\n",{"type":43,"tag":339,"props":518,"children":519},{"class":341,"line":411},[520,524,528,533,537,541,545],{"type":43,"tag":339,"props":521,"children":522},{"style":346},[523],{"type":49,"value":349},{"type":43,"tag":339,"props":525,"children":526},{"style":352},[527],{"type":49,"value":355},{"type":43,"tag":339,"props":529,"children":530},{"style":352},[531],{"type":49,"value":532}," PATCH",{"type":43,"tag":339,"props":534,"children":535},{"style":363},[536],{"type":49,"value":366},{"type":43,"tag":339,"props":538,"children":539},{"style":352},[540],{"type":49,"value":371},{"type":43,"tag":339,"props":542,"children":543},{"style":363},[544],{"type":49,"value":376},{"type":43,"tag":339,"props":546,"children":547},{"style":379},[548],{"type":49,"value":382},{"type":43,"tag":339,"props":550,"children":552},{"class":341,"line":551},4,[553,557,561,565,569],{"type":43,"tag":339,"props":554,"children":555},{"style":352},[556],{"type":49,"value":391},{"type":43,"tag":339,"props":558,"children":559},{"style":363},[560],{"type":49,"value":366},{"type":43,"tag":339,"props":562,"children":563},{"style":352},[564],{"type":49,"value":400},{"type":43,"tag":339,"props":566,"children":567},{"style":363},[568],{"type":49,"value":376},{"type":43,"tag":339,"props":570,"children":571},{"style":379},[572],{"type":49,"value":382},{"type":43,"tag":339,"props":574,"children":576},{"class":341,"line":575},5,[577,581,585,590,594],{"type":43,"tag":339,"props":578,"children":579},{"style":352},[580],{"type":49,"value":391},{"type":43,"tag":339,"props":582,"children":583},{"style":363},[584],{"type":49,"value":366},{"type":43,"tag":339,"props":586,"children":587},{"style":352},[588],{"type":49,"value":589},"Content-Type: application\u002Fjson; domain-model=launchdarkly.semanticpatch",{"type":43,"tag":339,"props":591,"children":592},{"style":363},[593],{"type":49,"value":376},{"type":43,"tag":339,"props":595,"children":596},{"style":379},[597],{"type":49,"value":382},{"type":43,"tag":339,"props":599,"children":600},{"class":341,"line":24},[601,605,609,613,617],{"type":43,"tag":339,"props":602,"children":603},{"style":352},[604],{"type":49,"value":391},{"type":43,"tag":339,"props":606,"children":607},{"style":363},[608],{"type":49,"value":366},{"type":43,"tag":339,"props":610,"children":611},{"style":352},[612],{"type":49,"value":425},{"type":43,"tag":339,"props":614,"children":615},{"style":363},[616],{"type":49,"value":376},{"type":43,"tag":339,"props":618,"children":619},{"style":379},[620],{"type":49,"value":382},{"type":43,"tag":339,"props":622,"children":624},{"class":341,"line":623},7,[625,630,635],{"type":43,"tag":339,"props":626,"children":627},{"style":352},[628],{"type":49,"value":629},"  -d",{"type":43,"tag":339,"props":631,"children":632},{"style":363},[633],{"type":49,"value":634}," '",{"type":43,"tag":339,"props":636,"children":637},{"style":352},[638],{"type":49,"value":639},"{\n",{"type":43,"tag":339,"props":641,"children":643},{"class":341,"line":642},8,[644],{"type":43,"tag":339,"props":645,"children":646},{"style":352},[647],{"type":49,"value":648},"    \"environmentKey\": \"production\",\n",{"type":43,"tag":339,"props":650,"children":652},{"class":341,"line":651},9,[653],{"type":43,"tag":339,"props":654,"children":655},{"style":352},[656],{"type":49,"value":657},"    \"instructions\": [{\n",{"type":43,"tag":339,"props":659,"children":661},{"class":341,"line":660},10,[662],{"type":43,"tag":339,"props":663,"children":664},{"style":352},[665],{"type":49,"value":666},"      \"kind\": \"updateFallthroughVariationOrRollout\",\n",{"type":43,"tag":339,"props":668,"children":670},{"class":341,"line":669},11,[671],{"type":43,"tag":339,"props":672,"children":673},{"style":352},[674],{"type":49,"value":675},"      \"variationId\": \"your-enabled-variation-uuid\"\n",{"type":43,"tag":339,"props":677,"children":679},{"class":341,"line":678},12,[680],{"type":43,"tag":339,"props":681,"children":682},{"style":352},[683],{"type":49,"value":684},"    }]\n",{"type":43,"tag":339,"props":686,"children":688},{"class":341,"line":687},13,[689,694],{"type":43,"tag":339,"props":690,"children":691},{"style":352},[692],{"type":49,"value":693},"  }",{"type":43,"tag":339,"props":695,"children":696},{"style":363},[697],{"type":49,"value":698},"'\n",{"type":43,"tag":181,"props":700,"children":702},{"id":701},"step-3-add-targeting-rules",[703],{"type":49,"value":704},"Step 3: Add Targeting Rules",{"type":43,"tag":52,"props":706,"children":707},{},[708],{"type":43,"tag":112,"props":709,"children":710},{},[711],{"type":49,"value":712},"Attribute-based rule:",{"type":43,"tag":257,"props":714,"children":716},{"className":331,"code":715,"language":333,"meta":265,"style":265},"curl -X PATCH \"https:\u002F\u002Fapp.launchdarkly.com\u002Fapi\u002Fv2\u002Fprojects\u002F{projectKey}\u002Fai-configs\u002F{configKey}\u002Ftargeting\" \\\n  -H \"Authorization: {api_token}\" \\\n  -H \"Content-Type: application\u002Fjson; domain-model=launchdarkly.semanticpatch\" \\\n  -H \"LD-API-Version: beta\" \\\n  -d '{\n    \"environmentKey\": \"production\",\n    \"instructions\": [{\n      \"kind\": \"addRule\",\n      \"clauses\": [{\n        \"contextKind\": \"user\",\n        \"attribute\": \"selectedModel\",\n        \"op\": \"contains\",\n        \"values\": [\"sonnet\"],\n        \"negate\": false\n      }],\n      \"variation\": 0\n    }]\n  }'\n",[717],{"type":43,"tag":90,"props":718,"children":719},{"__ignoreMap":265},[720,751,774,797,820,835,842,849,857,865,873,881,889,897,906,915,924,932],{"type":43,"tag":339,"props":721,"children":722},{"class":341,"line":342},[723,727,731,735,739,743,747],{"type":43,"tag":339,"props":724,"children":725},{"style":346},[726],{"type":49,"value":349},{"type":43,"tag":339,"props":728,"children":729},{"style":352},[730],{"type":49,"value":355},{"type":43,"tag":339,"props":732,"children":733},{"style":352},[734],{"type":49,"value":532},{"type":43,"tag":339,"props":736,"children":737},{"style":363},[738],{"type":49,"value":366},{"type":43,"tag":339,"props":740,"children":741},{"style":352},[742],{"type":49,"value":371},{"type":43,"tag":339,"props":744,"children":745},{"style":363},[746],{"type":49,"value":376},{"type":43,"tag":339,"props":748,"children":749},{"style":379},[750],{"type":49,"value":382},{"type":43,"tag":339,"props":752,"children":753},{"class":341,"line":385},[754,758,762,766,770],{"type":43,"tag":339,"props":755,"children":756},{"style":352},[757],{"type":49,"value":391},{"type":43,"tag":339,"props":759,"children":760},{"style":363},[761],{"type":49,"value":366},{"type":43,"tag":339,"props":763,"children":764},{"style":352},[765],{"type":49,"value":400},{"type":43,"tag":339,"props":767,"children":768},{"style":363},[769],{"type":49,"value":376},{"type":43,"tag":339,"props":771,"children":772},{"style":379},[773],{"type":49,"value":382},{"type":43,"tag":339,"props":775,"children":776},{"class":341,"line":411},[777,781,785,789,793],{"type":43,"tag":339,"props":778,"children":779},{"style":352},[780],{"type":49,"value":391},{"type":43,"tag":339,"props":782,"children":783},{"style":363},[784],{"type":49,"value":366},{"type":43,"tag":339,"props":786,"children":787},{"style":352},[788],{"type":49,"value":589},{"type":43,"tag":339,"props":790,"children":791},{"style":363},[792],{"type":49,"value":376},{"type":43,"tag":339,"props":794,"children":795},{"style":379},[796],{"type":49,"value":382},{"type":43,"tag":339,"props":798,"children":799},{"class":341,"line":551},[800,804,808,812,816],{"type":43,"tag":339,"props":801,"children":802},{"style":352},[803],{"type":49,"value":391},{"type":43,"tag":339,"props":805,"children":806},{"style":363},[807],{"type":49,"value":366},{"type":43,"tag":339,"props":809,"children":810},{"style":352},[811],{"type":49,"value":425},{"type":43,"tag":339,"props":813,"children":814},{"style":363},[815],{"type":49,"value":376},{"type":43,"tag":339,"props":817,"children":818},{"style":379},[819],{"type":49,"value":382},{"type":43,"tag":339,"props":821,"children":822},{"class":341,"line":575},[823,827,831],{"type":43,"tag":339,"props":824,"children":825},{"style":352},[826],{"type":49,"value":629},{"type":43,"tag":339,"props":828,"children":829},{"style":363},[830],{"type":49,"value":634},{"type":43,"tag":339,"props":832,"children":833},{"style":352},[834],{"type":49,"value":639},{"type":43,"tag":339,"props":836,"children":837},{"class":341,"line":24},[838],{"type":43,"tag":339,"props":839,"children":840},{"style":352},[841],{"type":49,"value":648},{"type":43,"tag":339,"props":843,"children":844},{"class":341,"line":623},[845],{"type":43,"tag":339,"props":846,"children":847},{"style":352},[848],{"type":49,"value":657},{"type":43,"tag":339,"props":850,"children":851},{"class":341,"line":642},[852],{"type":43,"tag":339,"props":853,"children":854},{"style":352},[855],{"type":49,"value":856},"      \"kind\": \"addRule\",\n",{"type":43,"tag":339,"props":858,"children":859},{"class":341,"line":651},[860],{"type":43,"tag":339,"props":861,"children":862},{"style":352},[863],{"type":49,"value":864},"      \"clauses\": [{\n",{"type":43,"tag":339,"props":866,"children":867},{"class":341,"line":660},[868],{"type":43,"tag":339,"props":869,"children":870},{"style":352},[871],{"type":49,"value":872},"        \"contextKind\": \"user\",\n",{"type":43,"tag":339,"props":874,"children":875},{"class":341,"line":669},[876],{"type":43,"tag":339,"props":877,"children":878},{"style":352},[879],{"type":49,"value":880},"        \"attribute\": \"selectedModel\",\n",{"type":43,"tag":339,"props":882,"children":883},{"class":341,"line":678},[884],{"type":43,"tag":339,"props":885,"children":886},{"style":352},[887],{"type":49,"value":888},"        \"op\": \"contains\",\n",{"type":43,"tag":339,"props":890,"children":891},{"class":341,"line":687},[892],{"type":43,"tag":339,"props":893,"children":894},{"style":352},[895],{"type":49,"value":896},"        \"values\": [\"sonnet\"],\n",{"type":43,"tag":339,"props":898,"children":900},{"class":341,"line":899},14,[901],{"type":43,"tag":339,"props":902,"children":903},{"style":352},[904],{"type":49,"value":905},"        \"negate\": false\n",{"type":43,"tag":339,"props":907,"children":909},{"class":341,"line":908},15,[910],{"type":43,"tag":339,"props":911,"children":912},{"style":352},[913],{"type":49,"value":914},"      }],\n",{"type":43,"tag":339,"props":916,"children":918},{"class":341,"line":917},16,[919],{"type":43,"tag":339,"props":920,"children":921},{"style":352},[922],{"type":49,"value":923},"      \"variation\": 0\n",{"type":43,"tag":339,"props":925,"children":927},{"class":341,"line":926},17,[928],{"type":43,"tag":339,"props":929,"children":930},{"style":352},[931],{"type":49,"value":684},{"type":43,"tag":339,"props":933,"children":935},{"class":341,"line":934},18,[936,940],{"type":43,"tag":339,"props":937,"children":938},{"style":352},[939],{"type":49,"value":693},{"type":43,"tag":339,"props":941,"children":942},{"style":363},[943],{"type":49,"value":698},{"type":43,"tag":52,"props":945,"children":946},{},[947],{"type":43,"tag":112,"props":948,"children":949},{},[950],{"type":49,"value":951},"Percentage rollout:",{"type":43,"tag":257,"props":953,"children":955},{"className":331,"code":954,"language":333,"meta":265,"style":265},"curl -X PATCH \"...\" \\\n  -d '{\n    \"environmentKey\": \"production\",\n    \"instructions\": [{\n      \"kind\": \"addRule\",\n      \"clauses\": [{\n        \"contextKind\": \"user\",\n        \"attribute\": \"tier\",\n        \"op\": \"in\",\n        \"values\": [\"premium\"],\n        \"negate\": false\n      }],\n      \"percentageRolloutConfig\": {\n        \"contextKind\": \"user\",\n        \"bucketBy\": \"key\",\n        \"variations\": [\n          {\"variation\": 0, \"weight\": 60000},\n          {\"variation\": 1, \"weight\": 40000}\n        ]\n      }\n    }]\n  }'\n",[956],{"type":43,"tag":90,"props":957,"children":958},{"__ignoreMap":265},[959,991,1006,1013,1020,1027,1034,1041,1049,1057,1065,1072,1079,1087,1094,1102,1110,1118,1126,1135,1143,1151],{"type":43,"tag":339,"props":960,"children":961},{"class":341,"line":342},[962,966,970,974,978,983,987],{"type":43,"tag":339,"props":963,"children":964},{"style":346},[965],{"type":49,"value":349},{"type":43,"tag":339,"props":967,"children":968},{"style":352},[969],{"type":49,"value":355},{"type":43,"tag":339,"props":971,"children":972},{"style":352},[973],{"type":49,"value":532},{"type":43,"tag":339,"props":975,"children":976},{"style":363},[977],{"type":49,"value":366},{"type":43,"tag":339,"props":979,"children":980},{"style":352},[981],{"type":49,"value":982},"...",{"type":43,"tag":339,"props":984,"children":985},{"style":363},[986],{"type":49,"value":376},{"type":43,"tag":339,"props":988,"children":989},{"style":379},[990],{"type":49,"value":382},{"type":43,"tag":339,"props":992,"children":993},{"class":341,"line":385},[994,998,1002],{"type":43,"tag":339,"props":995,"children":996},{"style":352},[997],{"type":49,"value":629},{"type":43,"tag":339,"props":999,"children":1000},{"style":363},[1001],{"type":49,"value":634},{"type":43,"tag":339,"props":1003,"children":1004},{"style":352},[1005],{"type":49,"value":639},{"type":43,"tag":339,"props":1007,"children":1008},{"class":341,"line":411},[1009],{"type":43,"tag":339,"props":1010,"children":1011},{"style":352},[1012],{"type":49,"value":648},{"type":43,"tag":339,"props":1014,"children":1015},{"class":341,"line":551},[1016],{"type":43,"tag":339,"props":1017,"children":1018},{"style":352},[1019],{"type":49,"value":657},{"type":43,"tag":339,"props":1021,"children":1022},{"class":341,"line":575},[1023],{"type":43,"tag":339,"props":1024,"children":1025},{"style":352},[1026],{"type":49,"value":856},{"type":43,"tag":339,"props":1028,"children":1029},{"class":341,"line":24},[1030],{"type":43,"tag":339,"props":1031,"children":1032},{"style":352},[1033],{"type":49,"value":864},{"type":43,"tag":339,"props":1035,"children":1036},{"class":341,"line":623},[1037],{"type":43,"tag":339,"props":1038,"children":1039},{"style":352},[1040],{"type":49,"value":872},{"type":43,"tag":339,"props":1042,"children":1043},{"class":341,"line":642},[1044],{"type":43,"tag":339,"props":1045,"children":1046},{"style":352},[1047],{"type":49,"value":1048},"        \"attribute\": \"tier\",\n",{"type":43,"tag":339,"props":1050,"children":1051},{"class":341,"line":651},[1052],{"type":43,"tag":339,"props":1053,"children":1054},{"style":352},[1055],{"type":49,"value":1056},"        \"op\": \"in\",\n",{"type":43,"tag":339,"props":1058,"children":1059},{"class":341,"line":660},[1060],{"type":43,"tag":339,"props":1061,"children":1062},{"style":352},[1063],{"type":49,"value":1064},"        \"values\": [\"premium\"],\n",{"type":43,"tag":339,"props":1066,"children":1067},{"class":341,"line":669},[1068],{"type":43,"tag":339,"props":1069,"children":1070},{"style":352},[1071],{"type":49,"value":905},{"type":43,"tag":339,"props":1073,"children":1074},{"class":341,"line":678},[1075],{"type":43,"tag":339,"props":1076,"children":1077},{"style":352},[1078],{"type":49,"value":914},{"type":43,"tag":339,"props":1080,"children":1081},{"class":341,"line":687},[1082],{"type":43,"tag":339,"props":1083,"children":1084},{"style":352},[1085],{"type":49,"value":1086},"      \"percentageRolloutConfig\": {\n",{"type":43,"tag":339,"props":1088,"children":1089},{"class":341,"line":899},[1090],{"type":43,"tag":339,"props":1091,"children":1092},{"style":352},[1093],{"type":49,"value":872},{"type":43,"tag":339,"props":1095,"children":1096},{"class":341,"line":908},[1097],{"type":43,"tag":339,"props":1098,"children":1099},{"style":352},[1100],{"type":49,"value":1101},"        \"bucketBy\": \"key\",\n",{"type":43,"tag":339,"props":1103,"children":1104},{"class":341,"line":917},[1105],{"type":43,"tag":339,"props":1106,"children":1107},{"style":352},[1108],{"type":49,"value":1109},"        \"variations\": [\n",{"type":43,"tag":339,"props":1111,"children":1112},{"class":341,"line":926},[1113],{"type":43,"tag":339,"props":1114,"children":1115},{"style":352},[1116],{"type":49,"value":1117},"          {\"variation\": 0, \"weight\": 60000},\n",{"type":43,"tag":339,"props":1119,"children":1120},{"class":341,"line":934},[1121],{"type":43,"tag":339,"props":1122,"children":1123},{"style":352},[1124],{"type":49,"value":1125},"          {\"variation\": 1, \"weight\": 40000}\n",{"type":43,"tag":339,"props":1127,"children":1129},{"class":341,"line":1128},19,[1130],{"type":43,"tag":339,"props":1131,"children":1132},{"style":352},[1133],{"type":49,"value":1134},"        ]\n",{"type":43,"tag":339,"props":1136,"children":1137},{"class":341,"line":20},[1138],{"type":43,"tag":339,"props":1139,"children":1140},{"style":352},[1141],{"type":49,"value":1142},"      }\n",{"type":43,"tag":339,"props":1144,"children":1146},{"class":341,"line":1145},21,[1147],{"type":43,"tag":339,"props":1148,"children":1149},{"style":352},[1150],{"type":49,"value":684},{"type":43,"tag":339,"props":1152,"children":1154},{"class":341,"line":1153},22,[1155,1159],{"type":43,"tag":339,"props":1156,"children":1157},{"style":352},[1158],{"type":49,"value":693},{"type":43,"tag":339,"props":1160,"children":1161},{"style":363},[1162],{"type":49,"value":698},{"type":43,"tag":52,"props":1164,"children":1165},{},[1166],{"type":43,"tag":112,"props":1167,"children":1168},{},[1169],{"type":49,"value":1170},"Set fallthrough (default rule):",{"type":43,"tag":257,"props":1172,"children":1174},{"className":331,"code":1173,"language":333,"meta":265,"style":265},"curl -X PATCH \"...\" \\\n  -d '{\n    \"environmentKey\": \"production\",\n    \"instructions\": [{\n      \"kind\": \"updateFallthroughVariationOrRollout\",\n      \"variationId\": \"fallback-variation-uuid\"\n    }]\n  }'\n",[1175],{"type":43,"tag":90,"props":1176,"children":1177},{"__ignoreMap":265},[1178,1209,1224,1231,1238,1245,1253,1260],{"type":43,"tag":339,"props":1179,"children":1180},{"class":341,"line":342},[1181,1185,1189,1193,1197,1201,1205],{"type":43,"tag":339,"props":1182,"children":1183},{"style":346},[1184],{"type":49,"value":349},{"type":43,"tag":339,"props":1186,"children":1187},{"style":352},[1188],{"type":49,"value":355},{"type":43,"tag":339,"props":1190,"children":1191},{"style":352},[1192],{"type":49,"value":532},{"type":43,"tag":339,"props":1194,"children":1195},{"style":363},[1196],{"type":49,"value":366},{"type":43,"tag":339,"props":1198,"children":1199},{"style":352},[1200],{"type":49,"value":982},{"type":43,"tag":339,"props":1202,"children":1203},{"style":363},[1204],{"type":49,"value":376},{"type":43,"tag":339,"props":1206,"children":1207},{"style":379},[1208],{"type":49,"value":382},{"type":43,"tag":339,"props":1210,"children":1211},{"class":341,"line":385},[1212,1216,1220],{"type":43,"tag":339,"props":1213,"children":1214},{"style":352},[1215],{"type":49,"value":629},{"type":43,"tag":339,"props":1217,"children":1218},{"style":363},[1219],{"type":49,"value":634},{"type":43,"tag":339,"props":1221,"children":1222},{"style":352},[1223],{"type":49,"value":639},{"type":43,"tag":339,"props":1225,"children":1226},{"class":341,"line":411},[1227],{"type":43,"tag":339,"props":1228,"children":1229},{"style":352},[1230],{"type":49,"value":648},{"type":43,"tag":339,"props":1232,"children":1233},{"class":341,"line":551},[1234],{"type":43,"tag":339,"props":1235,"children":1236},{"style":352},[1237],{"type":49,"value":657},{"type":43,"tag":339,"props":1239,"children":1240},{"class":341,"line":575},[1241],{"type":43,"tag":339,"props":1242,"children":1243},{"style":352},[1244],{"type":49,"value":666},{"type":43,"tag":339,"props":1246,"children":1247},{"class":341,"line":24},[1248],{"type":43,"tag":339,"props":1249,"children":1250},{"style":352},[1251],{"type":49,"value":1252},"      \"variationId\": \"fallback-variation-uuid\"\n",{"type":43,"tag":339,"props":1254,"children":1255},{"class":341,"line":623},[1256],{"type":43,"tag":339,"props":1257,"children":1258},{"style":352},[1259],{"type":49,"value":684},{"type":43,"tag":339,"props":1261,"children":1262},{"class":341,"line":642},[1263,1267],{"type":43,"tag":339,"props":1264,"children":1265},{"style":352},[1266],{"type":49,"value":693},{"type":43,"tag":339,"props":1268,"children":1269},{"style":363},[1270],{"type":49,"value":698},{"type":43,"tag":58,"props":1272,"children":1274},{"id":1273},"python-implementation",[1275],{"type":49,"value":1276},"Python Implementation",{"type":43,"tag":257,"props":1278,"children":1282},{"className":1279,"code":1280,"language":1281,"meta":265,"style":265},"language-python shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import requests\nimport os\nfrom typing import Dict, List, Optional\n\nclass AIConfigTargeting:\n    \"\"\"Manager for config targeting rules\"\"\"\n\n    def __init__(self, api_token: str, project_key: str):\n        self.api_token = api_token\n        self.project_key = project_key\n        self.base_url = \"https:\u002F\u002Fapp.launchdarkly.com\u002Fapi\u002Fv2\"\n\n    def get_targeting(self, config_key: str) -> Optional[Dict]:\n        \"\"\"Get current targeting with variation IDs.\"\"\"\n        url = f\"{self.base_url}\u002Fprojects\u002F{self.project_key}\u002Fai-configs\u002F{config_key}\u002Ftargeting\"\n\n        response = requests.get(url, headers={\n            \"Authorization\": self.api_token,\n            \"LD-API-Version\": \"beta\"\n        })\n\n        if response.status_code == 200:\n            return response.json()\n        print(f\"[ERROR] {response.status_code}: {response.text}\")\n        return None\n\n    def get_variation_id(self, config_key: str, variation_key: str) -> Optional[str]:\n        \"\"\"Look up variation UUID from key or name.\"\"\"\n        targeting = self.get_targeting(config_key)\n        if targeting:\n            for var in targeting.get(\"variations\", []):\n                if var.get(\"key\") == variation_key or var.get(\"name\") == variation_key:\n                    return var.get(\"_id\")\n        return None\n\n    def update_targeting(self, config_key: str, environment: str,\n                         instructions: List[Dict], comment: str = \"\") -> Optional[Dict]:\n        \"\"\"Send semantic patch instructions.\"\"\"\n        url = f\"{self.base_url}\u002Fprojects\u002F{self.project_key}\u002Fai-configs\u002F{config_key}\u002Ftargeting\"\n\n        payload = {\"environmentKey\": environment, \"instructions\": instructions}\n        if comment:\n            payload[\"comment\"] = comment\n\n        response = requests.patch(url, headers={\n            \"Authorization\": self.api_token,\n            \"Content-Type\": \"application\u002Fjson; domain-model=launchdarkly.semanticpatch\",\n            \"LD-API-Version\": \"beta\"\n        }, json=payload)\n\n        if response.status_code == 200:\n            return response.json()\n        print(f\"[ERROR] {response.status_code}: {response.text}\")\n        return None\n\n    def enable_config(self, config_key: str, environment: str,\n                      variation_key: str = \"default\") -> bool:\n        \"\"\"\n        Enable a config by setting fallthrough to an enabled variation.\n\n        Note: turnTargetingOn doesn't work for configs. Instead, set the\n        fallthrough from the disabled variation (index 0) to an enabled one.\n        \"\"\"\n        variation_id = self.get_variation_id(config_key, variation_key)\n        if not variation_id:\n            print(f\"[ERROR] Variation '{variation_key}' not found\")\n            return False\n        return self.set_fallthrough(config_key, environment, variation_id)\n\n    def add_rule(self, config_key: str, environment: str,\n                 clauses: List[Dict], variation: int,\n                 description: str = \"\") -> bool:\n        \"\"\"Add targeting rule serving a specific variation index.\"\"\"\n        instruction = {\n            \"kind\": \"addRule\",\n            \"clauses\": clauses,\n            \"variation\": variation\n        }\n        if description:\n            instruction[\"description\"] = description\n\n        result = self.update_targeting(config_key, environment,\n            [instruction], f\"Add rule: {description}\")\n        if result:\n            print(f\"[OK] Rule added\")\n            return True\n        return False\n\n    def add_rollout_rule(self, config_key: str, environment: str,\n                         clauses: List[Dict],\n                         weights: List[Dict],\n                         bucket_by: str = \"key\") -> bool:\n        \"\"\"\n        Add percentage rollout rule.\n\n        weights: [{\"variation\": 0, \"weight\": 50000}, {\"variation\": 1, \"weight\": 50000}]\n        \"\"\"\n        result = self.update_targeting(config_key, environment, [{\n            \"kind\": \"addRule\",\n            \"clauses\": clauses,\n            \"percentageRolloutConfig\": {\n                \"contextKind\": \"user\",\n                \"bucketBy\": bucket_by,\n                \"variations\": weights\n            }\n        }], \"Add percentage rollout\")\n        if result:\n            print(f\"[OK] Rollout rule added\")\n            return True\n        return False\n\n    def set_fallthrough(self, config_key: str, environment: str,\n                        variation_id: str) -> bool:\n        \"\"\"Set default (fallthrough) variation by UUID.\"\"\"\n        result = self.update_targeting(config_key, environment, [{\n            \"kind\": \"updateFallthroughVariationOrRollout\",\n            \"variationId\": variation_id\n        }], \"Set fallthrough\")\n        if result:\n            print(f\"[OK] Fallthrough set\")\n            return True\n        return False\n\n    def target_individuals(self, config_key: str, environment: str,\n                          context_keys: List[str], variation: int,\n                          context_kind: str = \"user\") -> bool:\n        \"\"\"Target specific context keys.\"\"\"\n        result = self.update_targeting(config_key, environment, [{\n            \"kind\": \"addTargets\",\n            \"variation\": variation,\n            \"contextKind\": context_kind,\n            \"values\": context_keys\n        }], f\"Target {len(context_keys)} individuals\")\n        if result:\n            print(f\"[OK] Individual targets added\")\n            return True\n        return False\n\n    def target_segment(self, config_key: str, environment: str,\n                      segment_keys: List[str], variation: int) -> bool:\n        \"\"\"Target a segment.\"\"\"\n        result = self.update_targeting(config_key, environment, [{\n            \"kind\": \"addRule\",\n            \"clauses\": [{\n                \"attribute\": \"segmentMatch\",\n                \"contextKind\": \"\",  # Leave blank for segments\n                \"op\": \"segmentMatch\",\n                \"values\": segment_keys,\n                \"negate\": False\n            }],\n            \"variation\": variation\n        }], f\"Target segments: {segment_keys}\")\n        if result:\n            print(f\"[OK] Segment targeting added\")\n            return True\n        return False\n\n    def clear_rules(self, config_key: str, environment: str) -> bool:\n        \"\"\"Remove all targeting rules.\"\"\"\n        result = self.update_targeting(config_key, environment,\n            [{\"kind\": \"replaceRules\", \"rules\": []}], \"Clear all rules\")\n        if result:\n            print(f\"[OK] All rules cleared\")\n            return True\n        return False\n","python",[1283],{"type":43,"tag":90,"props":1284,"children":1285},{"__ignoreMap":265},[1286,1294,1302,1310,1319,1327,1335,1342,1350,1358,1366,1374,1381,1389,1397,1405,1412,1420,1428,1436,1444,1451,1459,1468,1477,1486,1494,1503,1512,1521,1530,1539,1548,1557,1565,1573,1582,1591,1600,1608,1616,1625,1634,1643,1651,1660,1668,1677,1685,1694,1702,1710,1718,1726,1734,1742,1751,1760,1769,1778,1786,1795,1804,1812,1821,1830,1839,1848,1857,1865,1874,1883,1892,1901,1910,1919,1928,1937,1946,1955,1964,1972,1981,1990,1999,2008,2017,2026,2034,2043,2052,2061,2070,2078,2087,2095,2104,2112,2121,2129,2137,2146,2155,2164,2173,2182,2191,2199,2208,2216,2224,2232,2241,2250,2259,2267,2276,2285,2294,2302,2311,2319,2327,2335,2344,2353,2362,2371,2379,2388,2397,2406,2415,2424,2432,2441,2449,2457,2465,2474,2483,2492,2500,2508,2517,2526,2535,2544,2553,2562,2571,2579,2588,2596,2605,2613,2621,2629,2638,2647,2655,2664,2672,2681,2689],{"type":43,"tag":339,"props":1287,"children":1288},{"class":341,"line":342},[1289],{"type":43,"tag":339,"props":1290,"children":1291},{},[1292],{"type":49,"value":1293},"import requests\n",{"type":43,"tag":339,"props":1295,"children":1296},{"class":341,"line":385},[1297],{"type":43,"tag":339,"props":1298,"children":1299},{},[1300],{"type":49,"value":1301},"import os\n",{"type":43,"tag":339,"props":1303,"children":1304},{"class":341,"line":411},[1305],{"type":43,"tag":339,"props":1306,"children":1307},{},[1308],{"type":49,"value":1309},"from typing import Dict, List, Optional\n",{"type":43,"tag":339,"props":1311,"children":1312},{"class":341,"line":551},[1313],{"type":43,"tag":339,"props":1314,"children":1316},{"emptyLinePlaceholder":1315},true,[1317],{"type":49,"value":1318},"\n",{"type":43,"tag":339,"props":1320,"children":1321},{"class":341,"line":575},[1322],{"type":43,"tag":339,"props":1323,"children":1324},{},[1325],{"type":49,"value":1326},"class AIConfigTargeting:\n",{"type":43,"tag":339,"props":1328,"children":1329},{"class":341,"line":24},[1330],{"type":43,"tag":339,"props":1331,"children":1332},{},[1333],{"type":49,"value":1334},"    \"\"\"Manager for config targeting rules\"\"\"\n",{"type":43,"tag":339,"props":1336,"children":1337},{"class":341,"line":623},[1338],{"type":43,"tag":339,"props":1339,"children":1340},{"emptyLinePlaceholder":1315},[1341],{"type":49,"value":1318},{"type":43,"tag":339,"props":1343,"children":1344},{"class":341,"line":642},[1345],{"type":43,"tag":339,"props":1346,"children":1347},{},[1348],{"type":49,"value":1349},"    def __init__(self, api_token: str, project_key: str):\n",{"type":43,"tag":339,"props":1351,"children":1352},{"class":341,"line":651},[1353],{"type":43,"tag":339,"props":1354,"children":1355},{},[1356],{"type":49,"value":1357},"        self.api_token = api_token\n",{"type":43,"tag":339,"props":1359,"children":1360},{"class":341,"line":660},[1361],{"type":43,"tag":339,"props":1362,"children":1363},{},[1364],{"type":49,"value":1365},"        self.project_key = project_key\n",{"type":43,"tag":339,"props":1367,"children":1368},{"class":341,"line":669},[1369],{"type":43,"tag":339,"props":1370,"children":1371},{},[1372],{"type":49,"value":1373},"        self.base_url = \"https:\u002F\u002Fapp.launchdarkly.com\u002Fapi\u002Fv2\"\n",{"type":43,"tag":339,"props":1375,"children":1376},{"class":341,"line":678},[1377],{"type":43,"tag":339,"props":1378,"children":1379},{"emptyLinePlaceholder":1315},[1380],{"type":49,"value":1318},{"type":43,"tag":339,"props":1382,"children":1383},{"class":341,"line":687},[1384],{"type":43,"tag":339,"props":1385,"children":1386},{},[1387],{"type":49,"value":1388},"    def get_targeting(self, config_key: str) -> Optional[Dict]:\n",{"type":43,"tag":339,"props":1390,"children":1391},{"class":341,"line":899},[1392],{"type":43,"tag":339,"props":1393,"children":1394},{},[1395],{"type":49,"value":1396},"        \"\"\"Get current targeting with variation IDs.\"\"\"\n",{"type":43,"tag":339,"props":1398,"children":1399},{"class":341,"line":908},[1400],{"type":43,"tag":339,"props":1401,"children":1402},{},[1403],{"type":49,"value":1404},"        url = f\"{self.base_url}\u002Fprojects\u002F{self.project_key}\u002Fai-configs\u002F{config_key}\u002Ftargeting\"\n",{"type":43,"tag":339,"props":1406,"children":1407},{"class":341,"line":917},[1408],{"type":43,"tag":339,"props":1409,"children":1410},{"emptyLinePlaceholder":1315},[1411],{"type":49,"value":1318},{"type":43,"tag":339,"props":1413,"children":1414},{"class":341,"line":926},[1415],{"type":43,"tag":339,"props":1416,"children":1417},{},[1418],{"type":49,"value":1419},"        response = requests.get(url, headers={\n",{"type":43,"tag":339,"props":1421,"children":1422},{"class":341,"line":934},[1423],{"type":43,"tag":339,"props":1424,"children":1425},{},[1426],{"type":49,"value":1427},"            \"Authorization\": self.api_token,\n",{"type":43,"tag":339,"props":1429,"children":1430},{"class":341,"line":1128},[1431],{"type":43,"tag":339,"props":1432,"children":1433},{},[1434],{"type":49,"value":1435},"            \"LD-API-Version\": \"beta\"\n",{"type":43,"tag":339,"props":1437,"children":1438},{"class":341,"line":20},[1439],{"type":43,"tag":339,"props":1440,"children":1441},{},[1442],{"type":49,"value":1443},"        })\n",{"type":43,"tag":339,"props":1445,"children":1446},{"class":341,"line":1145},[1447],{"type":43,"tag":339,"props":1448,"children":1449},{"emptyLinePlaceholder":1315},[1450],{"type":49,"value":1318},{"type":43,"tag":339,"props":1452,"children":1453},{"class":341,"line":1153},[1454],{"type":43,"tag":339,"props":1455,"children":1456},{},[1457],{"type":49,"value":1458},"        if response.status_code == 200:\n",{"type":43,"tag":339,"props":1460,"children":1462},{"class":341,"line":1461},23,[1463],{"type":43,"tag":339,"props":1464,"children":1465},{},[1466],{"type":49,"value":1467},"            return response.json()\n",{"type":43,"tag":339,"props":1469,"children":1471},{"class":341,"line":1470},24,[1472],{"type":43,"tag":339,"props":1473,"children":1474},{},[1475],{"type":49,"value":1476},"        print(f\"[ERROR] {response.status_code}: {response.text}\")\n",{"type":43,"tag":339,"props":1478,"children":1480},{"class":341,"line":1479},25,[1481],{"type":43,"tag":339,"props":1482,"children":1483},{},[1484],{"type":49,"value":1485},"        return None\n",{"type":43,"tag":339,"props":1487,"children":1489},{"class":341,"line":1488},26,[1490],{"type":43,"tag":339,"props":1491,"children":1492},{"emptyLinePlaceholder":1315},[1493],{"type":49,"value":1318},{"type":43,"tag":339,"props":1495,"children":1497},{"class":341,"line":1496},27,[1498],{"type":43,"tag":339,"props":1499,"children":1500},{},[1501],{"type":49,"value":1502},"    def get_variation_id(self, config_key: str, variation_key: str) -> Optional[str]:\n",{"type":43,"tag":339,"props":1504,"children":1506},{"class":341,"line":1505},28,[1507],{"type":43,"tag":339,"props":1508,"children":1509},{},[1510],{"type":49,"value":1511},"        \"\"\"Look up variation UUID from key or name.\"\"\"\n",{"type":43,"tag":339,"props":1513,"children":1515},{"class":341,"line":1514},29,[1516],{"type":43,"tag":339,"props":1517,"children":1518},{},[1519],{"type":49,"value":1520},"        targeting = self.get_targeting(config_key)\n",{"type":43,"tag":339,"props":1522,"children":1524},{"class":341,"line":1523},30,[1525],{"type":43,"tag":339,"props":1526,"children":1527},{},[1528],{"type":49,"value":1529},"        if targeting:\n",{"type":43,"tag":339,"props":1531,"children":1533},{"class":341,"line":1532},31,[1534],{"type":43,"tag":339,"props":1535,"children":1536},{},[1537],{"type":49,"value":1538},"            for var in targeting.get(\"variations\", []):\n",{"type":43,"tag":339,"props":1540,"children":1542},{"class":341,"line":1541},32,[1543],{"type":43,"tag":339,"props":1544,"children":1545},{},[1546],{"type":49,"value":1547},"                if var.get(\"key\") == variation_key or var.get(\"name\") == variation_key:\n",{"type":43,"tag":339,"props":1549,"children":1551},{"class":341,"line":1550},33,[1552],{"type":43,"tag":339,"props":1553,"children":1554},{},[1555],{"type":49,"value":1556},"                    return var.get(\"_id\")\n",{"type":43,"tag":339,"props":1558,"children":1560},{"class":341,"line":1559},34,[1561],{"type":43,"tag":339,"props":1562,"children":1563},{},[1564],{"type":49,"value":1485},{"type":43,"tag":339,"props":1566,"children":1568},{"class":341,"line":1567},35,[1569],{"type":43,"tag":339,"props":1570,"children":1571},{"emptyLinePlaceholder":1315},[1572],{"type":49,"value":1318},{"type":43,"tag":339,"props":1574,"children":1576},{"class":341,"line":1575},36,[1577],{"type":43,"tag":339,"props":1578,"children":1579},{},[1580],{"type":49,"value":1581},"    def update_targeting(self, config_key: str, environment: str,\n",{"type":43,"tag":339,"props":1583,"children":1585},{"class":341,"line":1584},37,[1586],{"type":43,"tag":339,"props":1587,"children":1588},{},[1589],{"type":49,"value":1590},"                         instructions: List[Dict], comment: str = \"\") -> Optional[Dict]:\n",{"type":43,"tag":339,"props":1592,"children":1594},{"class":341,"line":1593},38,[1595],{"type":43,"tag":339,"props":1596,"children":1597},{},[1598],{"type":49,"value":1599},"        \"\"\"Send semantic patch instructions.\"\"\"\n",{"type":43,"tag":339,"props":1601,"children":1603},{"class":341,"line":1602},39,[1604],{"type":43,"tag":339,"props":1605,"children":1606},{},[1607],{"type":49,"value":1404},{"type":43,"tag":339,"props":1609,"children":1611},{"class":341,"line":1610},40,[1612],{"type":43,"tag":339,"props":1613,"children":1614},{"emptyLinePlaceholder":1315},[1615],{"type":49,"value":1318},{"type":43,"tag":339,"props":1617,"children":1619},{"class":341,"line":1618},41,[1620],{"type":43,"tag":339,"props":1621,"children":1622},{},[1623],{"type":49,"value":1624},"        payload = {\"environmentKey\": environment, \"instructions\": instructions}\n",{"type":43,"tag":339,"props":1626,"children":1628},{"class":341,"line":1627},42,[1629],{"type":43,"tag":339,"props":1630,"children":1631},{},[1632],{"type":49,"value":1633},"        if comment:\n",{"type":43,"tag":339,"props":1635,"children":1637},{"class":341,"line":1636},43,[1638],{"type":43,"tag":339,"props":1639,"children":1640},{},[1641],{"type":49,"value":1642},"            payload[\"comment\"] = comment\n",{"type":43,"tag":339,"props":1644,"children":1646},{"class":341,"line":1645},44,[1647],{"type":43,"tag":339,"props":1648,"children":1649},{"emptyLinePlaceholder":1315},[1650],{"type":49,"value":1318},{"type":43,"tag":339,"props":1652,"children":1654},{"class":341,"line":1653},45,[1655],{"type":43,"tag":339,"props":1656,"children":1657},{},[1658],{"type":49,"value":1659},"        response = requests.patch(url, headers={\n",{"type":43,"tag":339,"props":1661,"children":1663},{"class":341,"line":1662},46,[1664],{"type":43,"tag":339,"props":1665,"children":1666},{},[1667],{"type":49,"value":1427},{"type":43,"tag":339,"props":1669,"children":1671},{"class":341,"line":1670},47,[1672],{"type":43,"tag":339,"props":1673,"children":1674},{},[1675],{"type":49,"value":1676},"            \"Content-Type\": \"application\u002Fjson; domain-model=launchdarkly.semanticpatch\",\n",{"type":43,"tag":339,"props":1678,"children":1680},{"class":341,"line":1679},48,[1681],{"type":43,"tag":339,"props":1682,"children":1683},{},[1684],{"type":49,"value":1435},{"type":43,"tag":339,"props":1686,"children":1688},{"class":341,"line":1687},49,[1689],{"type":43,"tag":339,"props":1690,"children":1691},{},[1692],{"type":49,"value":1693},"        }, json=payload)\n",{"type":43,"tag":339,"props":1695,"children":1697},{"class":341,"line":1696},50,[1698],{"type":43,"tag":339,"props":1699,"children":1700},{"emptyLinePlaceholder":1315},[1701],{"type":49,"value":1318},{"type":43,"tag":339,"props":1703,"children":1705},{"class":341,"line":1704},51,[1706],{"type":43,"tag":339,"props":1707,"children":1708},{},[1709],{"type":49,"value":1458},{"type":43,"tag":339,"props":1711,"children":1713},{"class":341,"line":1712},52,[1714],{"type":43,"tag":339,"props":1715,"children":1716},{},[1717],{"type":49,"value":1467},{"type":43,"tag":339,"props":1719,"children":1721},{"class":341,"line":1720},53,[1722],{"type":43,"tag":339,"props":1723,"children":1724},{},[1725],{"type":49,"value":1476},{"type":43,"tag":339,"props":1727,"children":1729},{"class":341,"line":1728},54,[1730],{"type":43,"tag":339,"props":1731,"children":1732},{},[1733],{"type":49,"value":1485},{"type":43,"tag":339,"props":1735,"children":1737},{"class":341,"line":1736},55,[1738],{"type":43,"tag":339,"props":1739,"children":1740},{"emptyLinePlaceholder":1315},[1741],{"type":49,"value":1318},{"type":43,"tag":339,"props":1743,"children":1745},{"class":341,"line":1744},56,[1746],{"type":43,"tag":339,"props":1747,"children":1748},{},[1749],{"type":49,"value":1750},"    def enable_config(self, config_key: str, environment: str,\n",{"type":43,"tag":339,"props":1752,"children":1754},{"class":341,"line":1753},57,[1755],{"type":43,"tag":339,"props":1756,"children":1757},{},[1758],{"type":49,"value":1759},"                      variation_key: str = \"default\") -> bool:\n",{"type":43,"tag":339,"props":1761,"children":1763},{"class":341,"line":1762},58,[1764],{"type":43,"tag":339,"props":1765,"children":1766},{},[1767],{"type":49,"value":1768},"        \"\"\"\n",{"type":43,"tag":339,"props":1770,"children":1772},{"class":341,"line":1771},59,[1773],{"type":43,"tag":339,"props":1774,"children":1775},{},[1776],{"type":49,"value":1777},"        Enable a config by setting fallthrough to an enabled variation.\n",{"type":43,"tag":339,"props":1779,"children":1781},{"class":341,"line":1780},60,[1782],{"type":43,"tag":339,"props":1783,"children":1784},{"emptyLinePlaceholder":1315},[1785],{"type":49,"value":1318},{"type":43,"tag":339,"props":1787,"children":1789},{"class":341,"line":1788},61,[1790],{"type":43,"tag":339,"props":1791,"children":1792},{},[1793],{"type":49,"value":1794},"        Note: turnTargetingOn doesn't work for configs. Instead, set the\n",{"type":43,"tag":339,"props":1796,"children":1798},{"class":341,"line":1797},62,[1799],{"type":43,"tag":339,"props":1800,"children":1801},{},[1802],{"type":49,"value":1803},"        fallthrough from the disabled variation (index 0) to an enabled one.\n",{"type":43,"tag":339,"props":1805,"children":1807},{"class":341,"line":1806},63,[1808],{"type":43,"tag":339,"props":1809,"children":1810},{},[1811],{"type":49,"value":1768},{"type":43,"tag":339,"props":1813,"children":1815},{"class":341,"line":1814},64,[1816],{"type":43,"tag":339,"props":1817,"children":1818},{},[1819],{"type":49,"value":1820},"        variation_id = self.get_variation_id(config_key, variation_key)\n",{"type":43,"tag":339,"props":1822,"children":1824},{"class":341,"line":1823},65,[1825],{"type":43,"tag":339,"props":1826,"children":1827},{},[1828],{"type":49,"value":1829},"        if not variation_id:\n",{"type":43,"tag":339,"props":1831,"children":1833},{"class":341,"line":1832},66,[1834],{"type":43,"tag":339,"props":1835,"children":1836},{},[1837],{"type":49,"value":1838},"            print(f\"[ERROR] Variation '{variation_key}' not found\")\n",{"type":43,"tag":339,"props":1840,"children":1842},{"class":341,"line":1841},67,[1843],{"type":43,"tag":339,"props":1844,"children":1845},{},[1846],{"type":49,"value":1847},"            return False\n",{"type":43,"tag":339,"props":1849,"children":1851},{"class":341,"line":1850},68,[1852],{"type":43,"tag":339,"props":1853,"children":1854},{},[1855],{"type":49,"value":1856},"        return self.set_fallthrough(config_key, environment, variation_id)\n",{"type":43,"tag":339,"props":1858,"children":1860},{"class":341,"line":1859},69,[1861],{"type":43,"tag":339,"props":1862,"children":1863},{"emptyLinePlaceholder":1315},[1864],{"type":49,"value":1318},{"type":43,"tag":339,"props":1866,"children":1868},{"class":341,"line":1867},70,[1869],{"type":43,"tag":339,"props":1870,"children":1871},{},[1872],{"type":49,"value":1873},"    def add_rule(self, config_key: str, environment: str,\n",{"type":43,"tag":339,"props":1875,"children":1877},{"class":341,"line":1876},71,[1878],{"type":43,"tag":339,"props":1879,"children":1880},{},[1881],{"type":49,"value":1882},"                 clauses: List[Dict], variation: int,\n",{"type":43,"tag":339,"props":1884,"children":1886},{"class":341,"line":1885},72,[1887],{"type":43,"tag":339,"props":1888,"children":1889},{},[1890],{"type":49,"value":1891},"                 description: str = \"\") -> bool:\n",{"type":43,"tag":339,"props":1893,"children":1895},{"class":341,"line":1894},73,[1896],{"type":43,"tag":339,"props":1897,"children":1898},{},[1899],{"type":49,"value":1900},"        \"\"\"Add targeting rule serving a specific variation index.\"\"\"\n",{"type":43,"tag":339,"props":1902,"children":1904},{"class":341,"line":1903},74,[1905],{"type":43,"tag":339,"props":1906,"children":1907},{},[1908],{"type":49,"value":1909},"        instruction = {\n",{"type":43,"tag":339,"props":1911,"children":1913},{"class":341,"line":1912},75,[1914],{"type":43,"tag":339,"props":1915,"children":1916},{},[1917],{"type":49,"value":1918},"            \"kind\": \"addRule\",\n",{"type":43,"tag":339,"props":1920,"children":1922},{"class":341,"line":1921},76,[1923],{"type":43,"tag":339,"props":1924,"children":1925},{},[1926],{"type":49,"value":1927},"            \"clauses\": clauses,\n",{"type":43,"tag":339,"props":1929,"children":1931},{"class":341,"line":1930},77,[1932],{"type":43,"tag":339,"props":1933,"children":1934},{},[1935],{"type":49,"value":1936},"            \"variation\": variation\n",{"type":43,"tag":339,"props":1938,"children":1940},{"class":341,"line":1939},78,[1941],{"type":43,"tag":339,"props":1942,"children":1943},{},[1944],{"type":49,"value":1945},"        }\n",{"type":43,"tag":339,"props":1947,"children":1949},{"class":341,"line":1948},79,[1950],{"type":43,"tag":339,"props":1951,"children":1952},{},[1953],{"type":49,"value":1954},"        if description:\n",{"type":43,"tag":339,"props":1956,"children":1958},{"class":341,"line":1957},80,[1959],{"type":43,"tag":339,"props":1960,"children":1961},{},[1962],{"type":49,"value":1963},"            instruction[\"description\"] = description\n",{"type":43,"tag":339,"props":1965,"children":1967},{"class":341,"line":1966},81,[1968],{"type":43,"tag":339,"props":1969,"children":1970},{"emptyLinePlaceholder":1315},[1971],{"type":49,"value":1318},{"type":43,"tag":339,"props":1973,"children":1975},{"class":341,"line":1974},82,[1976],{"type":43,"tag":339,"props":1977,"children":1978},{},[1979],{"type":49,"value":1980},"        result = self.update_targeting(config_key, environment,\n",{"type":43,"tag":339,"props":1982,"children":1984},{"class":341,"line":1983},83,[1985],{"type":43,"tag":339,"props":1986,"children":1987},{},[1988],{"type":49,"value":1989},"            [instruction], f\"Add rule: {description}\")\n",{"type":43,"tag":339,"props":1991,"children":1993},{"class":341,"line":1992},84,[1994],{"type":43,"tag":339,"props":1995,"children":1996},{},[1997],{"type":49,"value":1998},"        if result:\n",{"type":43,"tag":339,"props":2000,"children":2002},{"class":341,"line":2001},85,[2003],{"type":43,"tag":339,"props":2004,"children":2005},{},[2006],{"type":49,"value":2007},"            print(f\"[OK] Rule added\")\n",{"type":43,"tag":339,"props":2009,"children":2011},{"class":341,"line":2010},86,[2012],{"type":43,"tag":339,"props":2013,"children":2014},{},[2015],{"type":49,"value":2016},"            return True\n",{"type":43,"tag":339,"props":2018,"children":2020},{"class":341,"line":2019},87,[2021],{"type":43,"tag":339,"props":2022,"children":2023},{},[2024],{"type":49,"value":2025},"        return False\n",{"type":43,"tag":339,"props":2027,"children":2029},{"class":341,"line":2028},88,[2030],{"type":43,"tag":339,"props":2031,"children":2032},{"emptyLinePlaceholder":1315},[2033],{"type":49,"value":1318},{"type":43,"tag":339,"props":2035,"children":2037},{"class":341,"line":2036},89,[2038],{"type":43,"tag":339,"props":2039,"children":2040},{},[2041],{"type":49,"value":2042},"    def add_rollout_rule(self, config_key: str, environment: str,\n",{"type":43,"tag":339,"props":2044,"children":2046},{"class":341,"line":2045},90,[2047],{"type":43,"tag":339,"props":2048,"children":2049},{},[2050],{"type":49,"value":2051},"                         clauses: List[Dict],\n",{"type":43,"tag":339,"props":2053,"children":2055},{"class":341,"line":2054},91,[2056],{"type":43,"tag":339,"props":2057,"children":2058},{},[2059],{"type":49,"value":2060},"                         weights: List[Dict],\n",{"type":43,"tag":339,"props":2062,"children":2064},{"class":341,"line":2063},92,[2065],{"type":43,"tag":339,"props":2066,"children":2067},{},[2068],{"type":49,"value":2069},"                         bucket_by: str = \"key\") -> bool:\n",{"type":43,"tag":339,"props":2071,"children":2073},{"class":341,"line":2072},93,[2074],{"type":43,"tag":339,"props":2075,"children":2076},{},[2077],{"type":49,"value":1768},{"type":43,"tag":339,"props":2079,"children":2081},{"class":341,"line":2080},94,[2082],{"type":43,"tag":339,"props":2083,"children":2084},{},[2085],{"type":49,"value":2086},"        Add percentage rollout rule.\n",{"type":43,"tag":339,"props":2088,"children":2090},{"class":341,"line":2089},95,[2091],{"type":43,"tag":339,"props":2092,"children":2093},{"emptyLinePlaceholder":1315},[2094],{"type":49,"value":1318},{"type":43,"tag":339,"props":2096,"children":2098},{"class":341,"line":2097},96,[2099],{"type":43,"tag":339,"props":2100,"children":2101},{},[2102],{"type":49,"value":2103},"        weights: [{\"variation\": 0, \"weight\": 50000}, {\"variation\": 1, \"weight\": 50000}]\n",{"type":43,"tag":339,"props":2105,"children":2107},{"class":341,"line":2106},97,[2108],{"type":43,"tag":339,"props":2109,"children":2110},{},[2111],{"type":49,"value":1768},{"type":43,"tag":339,"props":2113,"children":2115},{"class":341,"line":2114},98,[2116],{"type":43,"tag":339,"props":2117,"children":2118},{},[2119],{"type":49,"value":2120},"        result = self.update_targeting(config_key, environment, [{\n",{"type":43,"tag":339,"props":2122,"children":2124},{"class":341,"line":2123},99,[2125],{"type":43,"tag":339,"props":2126,"children":2127},{},[2128],{"type":49,"value":1918},{"type":43,"tag":339,"props":2130,"children":2132},{"class":341,"line":2131},100,[2133],{"type":43,"tag":339,"props":2134,"children":2135},{},[2136],{"type":49,"value":1927},{"type":43,"tag":339,"props":2138,"children":2140},{"class":341,"line":2139},101,[2141],{"type":43,"tag":339,"props":2142,"children":2143},{},[2144],{"type":49,"value":2145},"            \"percentageRolloutConfig\": {\n",{"type":43,"tag":339,"props":2147,"children":2149},{"class":341,"line":2148},102,[2150],{"type":43,"tag":339,"props":2151,"children":2152},{},[2153],{"type":49,"value":2154},"                \"contextKind\": \"user\",\n",{"type":43,"tag":339,"props":2156,"children":2158},{"class":341,"line":2157},103,[2159],{"type":43,"tag":339,"props":2160,"children":2161},{},[2162],{"type":49,"value":2163},"                \"bucketBy\": bucket_by,\n",{"type":43,"tag":339,"props":2165,"children":2167},{"class":341,"line":2166},104,[2168],{"type":43,"tag":339,"props":2169,"children":2170},{},[2171],{"type":49,"value":2172},"                \"variations\": weights\n",{"type":43,"tag":339,"props":2174,"children":2176},{"class":341,"line":2175},105,[2177],{"type":43,"tag":339,"props":2178,"children":2179},{},[2180],{"type":49,"value":2181},"            }\n",{"type":43,"tag":339,"props":2183,"children":2185},{"class":341,"line":2184},106,[2186],{"type":43,"tag":339,"props":2187,"children":2188},{},[2189],{"type":49,"value":2190},"        }], \"Add percentage rollout\")\n",{"type":43,"tag":339,"props":2192,"children":2194},{"class":341,"line":2193},107,[2195],{"type":43,"tag":339,"props":2196,"children":2197},{},[2198],{"type":49,"value":1998},{"type":43,"tag":339,"props":2200,"children":2202},{"class":341,"line":2201},108,[2203],{"type":43,"tag":339,"props":2204,"children":2205},{},[2206],{"type":49,"value":2207},"            print(f\"[OK] Rollout rule added\")\n",{"type":43,"tag":339,"props":2209,"children":2211},{"class":341,"line":2210},109,[2212],{"type":43,"tag":339,"props":2213,"children":2214},{},[2215],{"type":49,"value":2016},{"type":43,"tag":339,"props":2217,"children":2219},{"class":341,"line":2218},110,[2220],{"type":43,"tag":339,"props":2221,"children":2222},{},[2223],{"type":49,"value":2025},{"type":43,"tag":339,"props":2225,"children":2227},{"class":341,"line":2226},111,[2228],{"type":43,"tag":339,"props":2229,"children":2230},{"emptyLinePlaceholder":1315},[2231],{"type":49,"value":1318},{"type":43,"tag":339,"props":2233,"children":2235},{"class":341,"line":2234},112,[2236],{"type":43,"tag":339,"props":2237,"children":2238},{},[2239],{"type":49,"value":2240},"    def set_fallthrough(self, config_key: str, environment: str,\n",{"type":43,"tag":339,"props":2242,"children":2244},{"class":341,"line":2243},113,[2245],{"type":43,"tag":339,"props":2246,"children":2247},{},[2248],{"type":49,"value":2249},"                        variation_id: str) -> bool:\n",{"type":43,"tag":339,"props":2251,"children":2253},{"class":341,"line":2252},114,[2254],{"type":43,"tag":339,"props":2255,"children":2256},{},[2257],{"type":49,"value":2258},"        \"\"\"Set default (fallthrough) variation by UUID.\"\"\"\n",{"type":43,"tag":339,"props":2260,"children":2262},{"class":341,"line":2261},115,[2263],{"type":43,"tag":339,"props":2264,"children":2265},{},[2266],{"type":49,"value":2120},{"type":43,"tag":339,"props":2268,"children":2270},{"class":341,"line":2269},116,[2271],{"type":43,"tag":339,"props":2272,"children":2273},{},[2274],{"type":49,"value":2275},"            \"kind\": \"updateFallthroughVariationOrRollout\",\n",{"type":43,"tag":339,"props":2277,"children":2279},{"class":341,"line":2278},117,[2280],{"type":43,"tag":339,"props":2281,"children":2282},{},[2283],{"type":49,"value":2284},"            \"variationId\": variation_id\n",{"type":43,"tag":339,"props":2286,"children":2288},{"class":341,"line":2287},118,[2289],{"type":43,"tag":339,"props":2290,"children":2291},{},[2292],{"type":49,"value":2293},"        }], \"Set fallthrough\")\n",{"type":43,"tag":339,"props":2295,"children":2297},{"class":341,"line":2296},119,[2298],{"type":43,"tag":339,"props":2299,"children":2300},{},[2301],{"type":49,"value":1998},{"type":43,"tag":339,"props":2303,"children":2305},{"class":341,"line":2304},120,[2306],{"type":43,"tag":339,"props":2307,"children":2308},{},[2309],{"type":49,"value":2310},"            print(f\"[OK] Fallthrough set\")\n",{"type":43,"tag":339,"props":2312,"children":2314},{"class":341,"line":2313},121,[2315],{"type":43,"tag":339,"props":2316,"children":2317},{},[2318],{"type":49,"value":2016},{"type":43,"tag":339,"props":2320,"children":2322},{"class":341,"line":2321},122,[2323],{"type":43,"tag":339,"props":2324,"children":2325},{},[2326],{"type":49,"value":2025},{"type":43,"tag":339,"props":2328,"children":2330},{"class":341,"line":2329},123,[2331],{"type":43,"tag":339,"props":2332,"children":2333},{"emptyLinePlaceholder":1315},[2334],{"type":49,"value":1318},{"type":43,"tag":339,"props":2336,"children":2338},{"class":341,"line":2337},124,[2339],{"type":43,"tag":339,"props":2340,"children":2341},{},[2342],{"type":49,"value":2343},"    def target_individuals(self, config_key: str, environment: str,\n",{"type":43,"tag":339,"props":2345,"children":2347},{"class":341,"line":2346},125,[2348],{"type":43,"tag":339,"props":2349,"children":2350},{},[2351],{"type":49,"value":2352},"                          context_keys: List[str], variation: int,\n",{"type":43,"tag":339,"props":2354,"children":2356},{"class":341,"line":2355},126,[2357],{"type":43,"tag":339,"props":2358,"children":2359},{},[2360],{"type":49,"value":2361},"                          context_kind: str = \"user\") -> bool:\n",{"type":43,"tag":339,"props":2363,"children":2365},{"class":341,"line":2364},127,[2366],{"type":43,"tag":339,"props":2367,"children":2368},{},[2369],{"type":49,"value":2370},"        \"\"\"Target specific context keys.\"\"\"\n",{"type":43,"tag":339,"props":2372,"children":2374},{"class":341,"line":2373},128,[2375],{"type":43,"tag":339,"props":2376,"children":2377},{},[2378],{"type":49,"value":2120},{"type":43,"tag":339,"props":2380,"children":2382},{"class":341,"line":2381},129,[2383],{"type":43,"tag":339,"props":2384,"children":2385},{},[2386],{"type":49,"value":2387},"            \"kind\": \"addTargets\",\n",{"type":43,"tag":339,"props":2389,"children":2391},{"class":341,"line":2390},130,[2392],{"type":43,"tag":339,"props":2393,"children":2394},{},[2395],{"type":49,"value":2396},"            \"variation\": variation,\n",{"type":43,"tag":339,"props":2398,"children":2400},{"class":341,"line":2399},131,[2401],{"type":43,"tag":339,"props":2402,"children":2403},{},[2404],{"type":49,"value":2405},"            \"contextKind\": context_kind,\n",{"type":43,"tag":339,"props":2407,"children":2409},{"class":341,"line":2408},132,[2410],{"type":43,"tag":339,"props":2411,"children":2412},{},[2413],{"type":49,"value":2414},"            \"values\": context_keys\n",{"type":43,"tag":339,"props":2416,"children":2418},{"class":341,"line":2417},133,[2419],{"type":43,"tag":339,"props":2420,"children":2421},{},[2422],{"type":49,"value":2423},"        }], f\"Target {len(context_keys)} individuals\")\n",{"type":43,"tag":339,"props":2425,"children":2427},{"class":341,"line":2426},134,[2428],{"type":43,"tag":339,"props":2429,"children":2430},{},[2431],{"type":49,"value":1998},{"type":43,"tag":339,"props":2433,"children":2435},{"class":341,"line":2434},135,[2436],{"type":43,"tag":339,"props":2437,"children":2438},{},[2439],{"type":49,"value":2440},"            print(f\"[OK] Individual targets added\")\n",{"type":43,"tag":339,"props":2442,"children":2444},{"class":341,"line":2443},136,[2445],{"type":43,"tag":339,"props":2446,"children":2447},{},[2448],{"type":49,"value":2016},{"type":43,"tag":339,"props":2450,"children":2452},{"class":341,"line":2451},137,[2453],{"type":43,"tag":339,"props":2454,"children":2455},{},[2456],{"type":49,"value":2025},{"type":43,"tag":339,"props":2458,"children":2460},{"class":341,"line":2459},138,[2461],{"type":43,"tag":339,"props":2462,"children":2463},{"emptyLinePlaceholder":1315},[2464],{"type":49,"value":1318},{"type":43,"tag":339,"props":2466,"children":2468},{"class":341,"line":2467},139,[2469],{"type":43,"tag":339,"props":2470,"children":2471},{},[2472],{"type":49,"value":2473},"    def target_segment(self, config_key: str, environment: str,\n",{"type":43,"tag":339,"props":2475,"children":2477},{"class":341,"line":2476},140,[2478],{"type":43,"tag":339,"props":2479,"children":2480},{},[2481],{"type":49,"value":2482},"                      segment_keys: List[str], variation: int) -> bool:\n",{"type":43,"tag":339,"props":2484,"children":2486},{"class":341,"line":2485},141,[2487],{"type":43,"tag":339,"props":2488,"children":2489},{},[2490],{"type":49,"value":2491},"        \"\"\"Target a segment.\"\"\"\n",{"type":43,"tag":339,"props":2493,"children":2495},{"class":341,"line":2494},142,[2496],{"type":43,"tag":339,"props":2497,"children":2498},{},[2499],{"type":49,"value":2120},{"type":43,"tag":339,"props":2501,"children":2503},{"class":341,"line":2502},143,[2504],{"type":43,"tag":339,"props":2505,"children":2506},{},[2507],{"type":49,"value":1918},{"type":43,"tag":339,"props":2509,"children":2511},{"class":341,"line":2510},144,[2512],{"type":43,"tag":339,"props":2513,"children":2514},{},[2515],{"type":49,"value":2516},"            \"clauses\": [{\n",{"type":43,"tag":339,"props":2518,"children":2520},{"class":341,"line":2519},145,[2521],{"type":43,"tag":339,"props":2522,"children":2523},{},[2524],{"type":49,"value":2525},"                \"attribute\": \"segmentMatch\",\n",{"type":43,"tag":339,"props":2527,"children":2529},{"class":341,"line":2528},146,[2530],{"type":43,"tag":339,"props":2531,"children":2532},{},[2533],{"type":49,"value":2534},"                \"contextKind\": \"\",  # Leave blank for segments\n",{"type":43,"tag":339,"props":2536,"children":2538},{"class":341,"line":2537},147,[2539],{"type":43,"tag":339,"props":2540,"children":2541},{},[2542],{"type":49,"value":2543},"                \"op\": \"segmentMatch\",\n",{"type":43,"tag":339,"props":2545,"children":2547},{"class":341,"line":2546},148,[2548],{"type":43,"tag":339,"props":2549,"children":2550},{},[2551],{"type":49,"value":2552},"                \"values\": segment_keys,\n",{"type":43,"tag":339,"props":2554,"children":2556},{"class":341,"line":2555},149,[2557],{"type":43,"tag":339,"props":2558,"children":2559},{},[2560],{"type":49,"value":2561},"                \"negate\": False\n",{"type":43,"tag":339,"props":2563,"children":2565},{"class":341,"line":2564},150,[2566],{"type":43,"tag":339,"props":2567,"children":2568},{},[2569],{"type":49,"value":2570},"            }],\n",{"type":43,"tag":339,"props":2572,"children":2574},{"class":341,"line":2573},151,[2575],{"type":43,"tag":339,"props":2576,"children":2577},{},[2578],{"type":49,"value":1936},{"type":43,"tag":339,"props":2580,"children":2582},{"class":341,"line":2581},152,[2583],{"type":43,"tag":339,"props":2584,"children":2585},{},[2586],{"type":49,"value":2587},"        }], f\"Target segments: {segment_keys}\")\n",{"type":43,"tag":339,"props":2589,"children":2591},{"class":341,"line":2590},153,[2592],{"type":43,"tag":339,"props":2593,"children":2594},{},[2595],{"type":49,"value":1998},{"type":43,"tag":339,"props":2597,"children":2599},{"class":341,"line":2598},154,[2600],{"type":43,"tag":339,"props":2601,"children":2602},{},[2603],{"type":49,"value":2604},"            print(f\"[OK] Segment targeting added\")\n",{"type":43,"tag":339,"props":2606,"children":2608},{"class":341,"line":2607},155,[2609],{"type":43,"tag":339,"props":2610,"children":2611},{},[2612],{"type":49,"value":2016},{"type":43,"tag":339,"props":2614,"children":2616},{"class":341,"line":2615},156,[2617],{"type":43,"tag":339,"props":2618,"children":2619},{},[2620],{"type":49,"value":2025},{"type":43,"tag":339,"props":2622,"children":2624},{"class":341,"line":2623},157,[2625],{"type":43,"tag":339,"props":2626,"children":2627},{"emptyLinePlaceholder":1315},[2628],{"type":49,"value":1318},{"type":43,"tag":339,"props":2630,"children":2632},{"class":341,"line":2631},158,[2633],{"type":43,"tag":339,"props":2634,"children":2635},{},[2636],{"type":49,"value":2637},"    def clear_rules(self, config_key: str, environment: str) -> bool:\n",{"type":43,"tag":339,"props":2639,"children":2641},{"class":341,"line":2640},159,[2642],{"type":43,"tag":339,"props":2643,"children":2644},{},[2645],{"type":49,"value":2646},"        \"\"\"Remove all targeting rules.\"\"\"\n",{"type":43,"tag":339,"props":2648,"children":2650},{"class":341,"line":2649},160,[2651],{"type":43,"tag":339,"props":2652,"children":2653},{},[2654],{"type":49,"value":1980},{"type":43,"tag":339,"props":2656,"children":2658},{"class":341,"line":2657},161,[2659],{"type":43,"tag":339,"props":2660,"children":2661},{},[2662],{"type":49,"value":2663},"            [{\"kind\": \"replaceRules\", \"rules\": []}], \"Clear all rules\")\n",{"type":43,"tag":339,"props":2665,"children":2667},{"class":341,"line":2666},162,[2668],{"type":43,"tag":339,"props":2669,"children":2670},{},[2671],{"type":49,"value":1998},{"type":43,"tag":339,"props":2673,"children":2675},{"class":341,"line":2674},163,[2676],{"type":43,"tag":339,"props":2677,"children":2678},{},[2679],{"type":49,"value":2680},"            print(f\"[OK] All rules cleared\")\n",{"type":43,"tag":339,"props":2682,"children":2684},{"class":341,"line":2683},164,[2685],{"type":43,"tag":339,"props":2686,"children":2687},{},[2688],{"type":49,"value":2016},{"type":43,"tag":339,"props":2690,"children":2692},{"class":341,"line":2691},165,[2693],{"type":43,"tag":339,"props":2694,"children":2695},{},[2696],{"type":49,"value":2025},{"type":43,"tag":58,"props":2698,"children":2700},{"id":2699},"instruction-reference",[2701],{"type":49,"value":2702},"Instruction Reference",{"type":43,"tag":464,"props":2704,"children":2705},{},[2706],{"type":43,"tag":52,"props":2707,"children":2708},{},[2709,2714,2716,2721,2723,2729,2731,2736],{"type":43,"tag":112,"props":2710,"children":2711},{},[2712],{"type":49,"value":2713},"Note:",{"type":49,"value":2715}," ",{"type":43,"tag":90,"props":2717,"children":2719},{"className":2718},[],[2720],{"type":49,"value":482},{"type":49,"value":2722}," and ",{"type":43,"tag":90,"props":2724,"children":2726},{"className":2725},[],[2727],{"type":49,"value":2728},"turnTargetingOff",{"type":49,"value":2730}," do not work for configs. Configs have targeting enabled by default. To \"enable\" a config, set the fallthrough to an enabled variation using ",{"type":43,"tag":90,"props":2732,"children":2734},{"className":2733},[],[2735],{"type":49,"value":490},{"type":49,"value":2737},".",{"type":43,"tag":181,"props":2739,"children":2741},{"id":2740},"rules",[2742],{"type":49,"value":2743},"Rules",{"type":43,"tag":2745,"props":2746,"children":2747},"table",{},[2748,2767],{"type":43,"tag":2749,"props":2750,"children":2751},"thead",{},[2752],{"type":43,"tag":2753,"props":2754,"children":2755},"tr",{},[2756,2762],{"type":43,"tag":2757,"props":2758,"children":2759},"th",{},[2760],{"type":49,"value":2761},"Kind",{"type":43,"tag":2757,"props":2763,"children":2764},{},[2765],{"type":49,"value":2766},"Description",{"type":43,"tag":2768,"props":2769,"children":2770},"tbody",{},[2771,2789,2806,2823,2840],{"type":43,"tag":2753,"props":2772,"children":2773},{},[2774,2784],{"type":43,"tag":2775,"props":2776,"children":2777},"td",{},[2778],{"type":43,"tag":90,"props":2779,"children":2781},{"className":2780},[],[2782],{"type":49,"value":2783},"addRule",{"type":43,"tag":2775,"props":2785,"children":2786},{},[2787],{"type":49,"value":2788},"Add rule with clauses and variation\u002Frollout",{"type":43,"tag":2753,"props":2790,"children":2791},{},[2792,2801],{"type":43,"tag":2775,"props":2793,"children":2794},{},[2795],{"type":43,"tag":90,"props":2796,"children":2798},{"className":2797},[],[2799],{"type":49,"value":2800},"removeRule",{"type":43,"tag":2775,"props":2802,"children":2803},{},[2804],{"type":49,"value":2805},"Remove by ruleId",{"type":43,"tag":2753,"props":2807,"children":2808},{},[2809,2818],{"type":43,"tag":2775,"props":2810,"children":2811},{},[2812],{"type":43,"tag":90,"props":2813,"children":2815},{"className":2814},[],[2816],{"type":49,"value":2817},"replaceRules",{"type":43,"tag":2775,"props":2819,"children":2820},{},[2821],{"type":49,"value":2822},"Replace all rules",{"type":43,"tag":2753,"props":2824,"children":2825},{},[2826,2835],{"type":43,"tag":2775,"props":2827,"children":2828},{},[2829],{"type":43,"tag":90,"props":2830,"children":2832},{"className":2831},[],[2833],{"type":49,"value":2834},"reorderRules",{"type":43,"tag":2775,"props":2836,"children":2837},{},[2838],{"type":49,"value":2839},"Change evaluation order",{"type":43,"tag":2753,"props":2841,"children":2842},{},[2843,2852],{"type":43,"tag":2775,"props":2844,"children":2845},{},[2846],{"type":43,"tag":90,"props":2847,"children":2849},{"className":2848},[],[2850],{"type":49,"value":2851},"updateRuleVariationOrRollout",{"type":43,"tag":2775,"props":2853,"children":2854},{},[2855],{"type":49,"value":2856},"Update what a rule serves",{"type":43,"tag":181,"props":2858,"children":2860},{"id":2859},"fallthrough",[2861],{"type":49,"value":2862},"Fallthrough",{"type":43,"tag":2745,"props":2864,"children":2865},{},[2866,2880],{"type":43,"tag":2749,"props":2867,"children":2868},{},[2869],{"type":43,"tag":2753,"props":2870,"children":2871},{},[2872,2876],{"type":43,"tag":2757,"props":2873,"children":2874},{},[2875],{"type":49,"value":2761},{"type":43,"tag":2757,"props":2877,"children":2878},{},[2879],{"type":49,"value":2766},{"type":43,"tag":2768,"props":2881,"children":2882},{},[2883],{"type":43,"tag":2753,"props":2884,"children":2885},{},[2886,2894],{"type":43,"tag":2775,"props":2887,"children":2888},{},[2889],{"type":43,"tag":90,"props":2890,"children":2892},{"className":2891},[],[2893],{"type":49,"value":490},{"type":43,"tag":2775,"props":2895,"children":2896},{},[2897],{"type":49,"value":2898},"Set default variation or rollout",{"type":43,"tag":181,"props":2900,"children":2902},{"id":2901},"individual-targets",[2903],{"type":49,"value":2904},"Individual Targets",{"type":43,"tag":2745,"props":2906,"children":2907},{},[2908,2922],{"type":43,"tag":2749,"props":2909,"children":2910},{},[2911],{"type":43,"tag":2753,"props":2912,"children":2913},{},[2914,2918],{"type":43,"tag":2757,"props":2915,"children":2916},{},[2917],{"type":49,"value":2761},{"type":43,"tag":2757,"props":2919,"children":2920},{},[2921],{"type":49,"value":2766},{"type":43,"tag":2768,"props":2923,"children":2924},{},[2925,2942,2959],{"type":43,"tag":2753,"props":2926,"children":2927},{},[2928,2937],{"type":43,"tag":2775,"props":2929,"children":2930},{},[2931],{"type":43,"tag":90,"props":2932,"children":2934},{"className":2933},[],[2935],{"type":49,"value":2936},"addTargets",{"type":43,"tag":2775,"props":2938,"children":2939},{},[2940],{"type":49,"value":2941},"Target specific context keys",{"type":43,"tag":2753,"props":2943,"children":2944},{},[2945,2954],{"type":43,"tag":2775,"props":2946,"children":2947},{},[2948],{"type":43,"tag":90,"props":2949,"children":2951},{"className":2950},[],[2952],{"type":49,"value":2953},"removeTargets",{"type":43,"tag":2775,"props":2955,"children":2956},{},[2957],{"type":49,"value":2958},"Remove specific targets",{"type":43,"tag":2753,"props":2960,"children":2961},{},[2962,2971],{"type":43,"tag":2775,"props":2963,"children":2964},{},[2965],{"type":43,"tag":90,"props":2966,"children":2968},{"className":2967},[],[2969],{"type":49,"value":2970},"replaceTargets",{"type":43,"tag":2775,"props":2972,"children":2973},{},[2974],{"type":49,"value":2975},"Replace all targets",{"type":43,"tag":58,"props":2977,"children":2979},{"id":2978},"operators-reference",[2980],{"type":49,"value":2981},"Operators Reference",{"type":43,"tag":2745,"props":2983,"children":2984},{},[2985,3005],{"type":43,"tag":2749,"props":2986,"children":2987},{},[2988],{"type":43,"tag":2753,"props":2989,"children":2990},{},[2991,2996,3000],{"type":43,"tag":2757,"props":2992,"children":2993},{},[2994],{"type":49,"value":2995},"Operator",{"type":43,"tag":2757,"props":2997,"children":2998},{},[2999],{"type":49,"value":2766},{"type":43,"tag":2757,"props":3001,"children":3002},{},[3003],{"type":49,"value":3004},"Example",{"type":43,"tag":2768,"props":3006,"children":3007},{},[3008,3034,3060,3086,3112,3138,3172,3205,3238],{"type":43,"tag":2753,"props":3009,"children":3010},{},[3011,3020,3025],{"type":43,"tag":2775,"props":3012,"children":3013},{},[3014],{"type":43,"tag":90,"props":3015,"children":3017},{"className":3016},[],[3018],{"type":49,"value":3019},"in",{"type":43,"tag":2775,"props":3021,"children":3022},{},[3023],{"type":49,"value":3024},"Value in list",{"type":43,"tag":2775,"props":3026,"children":3027},{},[3028],{"type":43,"tag":90,"props":3029,"children":3031},{"className":3030},[],[3032],{"type":49,"value":3033},"[\"premium\", \"enterprise\"]",{"type":43,"tag":2753,"props":3035,"children":3036},{},[3037,3046,3051],{"type":43,"tag":2775,"props":3038,"children":3039},{},[3040],{"type":43,"tag":90,"props":3041,"children":3043},{"className":3042},[],[3044],{"type":49,"value":3045},"contains",{"type":43,"tag":2775,"props":3047,"children":3048},{},[3049],{"type":49,"value":3050},"String contains",{"type":43,"tag":2775,"props":3052,"children":3053},{},[3054],{"type":43,"tag":90,"props":3055,"children":3057},{"className":3056},[],[3058],{"type":49,"value":3059},"[\"sonnet\"]",{"type":43,"tag":2753,"props":3061,"children":3062},{},[3063,3072,3077],{"type":43,"tag":2775,"props":3064,"children":3065},{},[3066],{"type":43,"tag":90,"props":3067,"children":3069},{"className":3068},[],[3070],{"type":49,"value":3071},"startsWith",{"type":43,"tag":2775,"props":3073,"children":3074},{},[3075],{"type":49,"value":3076},"String prefix",{"type":43,"tag":2775,"props":3078,"children":3079},{},[3080],{"type":43,"tag":90,"props":3081,"children":3083},{"className":3082},[],[3084],{"type":49,"value":3085},"[\"user-\"]",{"type":43,"tag":2753,"props":3087,"children":3088},{},[3089,3098,3103],{"type":43,"tag":2775,"props":3090,"children":3091},{},[3092],{"type":43,"tag":90,"props":3093,"children":3095},{"className":3094},[],[3096],{"type":49,"value":3097},"endsWith",{"type":43,"tag":2775,"props":3099,"children":3100},{},[3101],{"type":49,"value":3102},"String suffix",{"type":43,"tag":2775,"props":3104,"children":3105},{},[3106],{"type":43,"tag":90,"props":3107,"children":3109},{"className":3108},[],[3110],{"type":49,"value":3111},"[\".edu\"]",{"type":43,"tag":2753,"props":3113,"children":3114},{},[3115,3124,3129],{"type":43,"tag":2775,"props":3116,"children":3117},{},[3118],{"type":43,"tag":90,"props":3119,"children":3121},{"className":3120},[],[3122],{"type":49,"value":3123},"matches",{"type":43,"tag":2775,"props":3125,"children":3126},{},[3127],{"type":49,"value":3128},"Regex match",{"type":43,"tag":2775,"props":3130,"children":3131},{},[3132],{"type":43,"tag":90,"props":3133,"children":3135},{"className":3134},[],[3136],{"type":49,"value":3137},"[\"^user-\\\\d+$\"]",{"type":43,"tag":2753,"props":3139,"children":3140},{},[3141,3158,3163],{"type":43,"tag":2775,"props":3142,"children":3143},{},[3144,3150,3152],{"type":43,"tag":90,"props":3145,"children":3147},{"className":3146},[],[3148],{"type":49,"value":3149},"greaterThan",{"type":49,"value":3151}," \u002F ",{"type":43,"tag":90,"props":3153,"children":3155},{"className":3154},[],[3156],{"type":49,"value":3157},"lessThan",{"type":43,"tag":2775,"props":3159,"children":3160},{},[3161],{"type":49,"value":3162},"Numeric comparison",{"type":43,"tag":2775,"props":3164,"children":3165},{},[3166],{"type":43,"tag":90,"props":3167,"children":3169},{"className":3168},[],[3170],{"type":49,"value":3171},"[100]",{"type":43,"tag":2753,"props":3173,"children":3174},{},[3175,3191,3196],{"type":43,"tag":2775,"props":3176,"children":3177},{},[3178,3184,3185],{"type":43,"tag":90,"props":3179,"children":3181},{"className":3180},[],[3182],{"type":49,"value":3183},"before",{"type":49,"value":3151},{"type":43,"tag":90,"props":3186,"children":3188},{"className":3187},[],[3189],{"type":49,"value":3190},"after",{"type":43,"tag":2775,"props":3192,"children":3193},{},[3194],{"type":49,"value":3195},"Date comparison",{"type":43,"tag":2775,"props":3197,"children":3198},{},[3199],{"type":43,"tag":90,"props":3200,"children":3202},{"className":3201},[],[3203],{"type":49,"value":3204},"[\"2024-12-31T00:00:00Z\"]",{"type":43,"tag":2753,"props":3206,"children":3207},{},[3208,3224,3229],{"type":43,"tag":2775,"props":3209,"children":3210},{},[3211,3217,3218],{"type":43,"tag":90,"props":3212,"children":3214},{"className":3213},[],[3215],{"type":49,"value":3216},"semVerEqual",{"type":49,"value":3151},{"type":43,"tag":90,"props":3219,"children":3221},{"className":3220},[],[3222],{"type":49,"value":3223},"semVerGreaterThan",{"type":43,"tag":2775,"props":3225,"children":3226},{},[3227],{"type":49,"value":3228},"Version comparison",{"type":43,"tag":2775,"props":3230,"children":3231},{},[3232],{"type":43,"tag":90,"props":3233,"children":3235},{"className":3234},[],[3236],{"type":49,"value":3237},"[\"2.0.0\"]",{"type":43,"tag":2753,"props":3239,"children":3240},{},[3241,3250,3255],{"type":43,"tag":2775,"props":3242,"children":3243},{},[3244],{"type":43,"tag":90,"props":3245,"children":3247},{"className":3246},[],[3248],{"type":49,"value":3249},"segmentMatch",{"type":43,"tag":2775,"props":3251,"children":3252},{},[3253],{"type":49,"value":3254},"Segment membership",{"type":43,"tag":2775,"props":3256,"children":3257},{},[3258],{"type":43,"tag":90,"props":3259,"children":3261},{"className":3260},[],[3262],{"type":49,"value":3263},"[\"beta-testers\"]",{"type":43,"tag":58,"props":3265,"children":3267},{"id":3266},"clause-structure",[3268],{"type":49,"value":3269},"Clause Structure",{"type":43,"tag":257,"props":3271,"children":3275},{"className":3272,"code":3273,"language":3274,"meta":265,"style":265},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{\n  \"contextKind\": \"user\",\n  \"attribute\": \"email\",\n  \"op\": \"endsWith\",\n  \"values\": [\".edu\"],\n  \"negate\": false\n}\n","json",[3276],{"type":43,"tag":90,"props":3277,"children":3278},{"__ignoreMap":265},[3279,3286,3327,3364,3400,3443,3468],{"type":43,"tag":339,"props":3280,"children":3281},{"class":341,"line":342},[3282],{"type":43,"tag":339,"props":3283,"children":3284},{"style":363},[3285],{"type":49,"value":639},{"type":43,"tag":339,"props":3287,"children":3288},{"class":341,"line":385},[3289,3294,3300,3304,3309,3313,3318,3322],{"type":43,"tag":339,"props":3290,"children":3291},{"style":363},[3292],{"type":49,"value":3293},"  \"",{"type":43,"tag":339,"props":3295,"children":3297},{"style":3296},"--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA",[3298],{"type":49,"value":3299},"contextKind",{"type":43,"tag":339,"props":3301,"children":3302},{"style":363},[3303],{"type":49,"value":376},{"type":43,"tag":339,"props":3305,"children":3306},{"style":363},[3307],{"type":49,"value":3308},":",{"type":43,"tag":339,"props":3310,"children":3311},{"style":363},[3312],{"type":49,"value":366},{"type":43,"tag":339,"props":3314,"children":3315},{"style":352},[3316],{"type":49,"value":3317},"user",{"type":43,"tag":339,"props":3319,"children":3320},{"style":363},[3321],{"type":49,"value":376},{"type":43,"tag":339,"props":3323,"children":3324},{"style":363},[3325],{"type":49,"value":3326},",\n",{"type":43,"tag":339,"props":3328,"children":3329},{"class":341,"line":411},[3330,3334,3339,3343,3347,3351,3356,3360],{"type":43,"tag":339,"props":3331,"children":3332},{"style":363},[3333],{"type":49,"value":3293},{"type":43,"tag":339,"props":3335,"children":3336},{"style":3296},[3337],{"type":49,"value":3338},"attribute",{"type":43,"tag":339,"props":3340,"children":3341},{"style":363},[3342],{"type":49,"value":376},{"type":43,"tag":339,"props":3344,"children":3345},{"style":363},[3346],{"type":49,"value":3308},{"type":43,"tag":339,"props":3348,"children":3349},{"style":363},[3350],{"type":49,"value":366},{"type":43,"tag":339,"props":3352,"children":3353},{"style":352},[3354],{"type":49,"value":3355},"email",{"type":43,"tag":339,"props":3357,"children":3358},{"style":363},[3359],{"type":49,"value":376},{"type":43,"tag":339,"props":3361,"children":3362},{"style":363},[3363],{"type":49,"value":3326},{"type":43,"tag":339,"props":3365,"children":3366},{"class":341,"line":551},[3367,3371,3376,3380,3384,3388,3392,3396],{"type":43,"tag":339,"props":3368,"children":3369},{"style":363},[3370],{"type":49,"value":3293},{"type":43,"tag":339,"props":3372,"children":3373},{"style":3296},[3374],{"type":49,"value":3375},"op",{"type":43,"tag":339,"props":3377,"children":3378},{"style":363},[3379],{"type":49,"value":376},{"type":43,"tag":339,"props":3381,"children":3382},{"style":363},[3383],{"type":49,"value":3308},{"type":43,"tag":339,"props":3385,"children":3386},{"style":363},[3387],{"type":49,"value":366},{"type":43,"tag":339,"props":3389,"children":3390},{"style":352},[3391],{"type":49,"value":3097},{"type":43,"tag":339,"props":3393,"children":3394},{"style":363},[3395],{"type":49,"value":376},{"type":43,"tag":339,"props":3397,"children":3398},{"style":363},[3399],{"type":49,"value":3326},{"type":43,"tag":339,"props":3401,"children":3402},{"class":341,"line":575},[3403,3407,3412,3416,3420,3425,3429,3434,3438],{"type":43,"tag":339,"props":3404,"children":3405},{"style":363},[3406],{"type":49,"value":3293},{"type":43,"tag":339,"props":3408,"children":3409},{"style":3296},[3410],{"type":49,"value":3411},"values",{"type":43,"tag":339,"props":3413,"children":3414},{"style":363},[3415],{"type":49,"value":376},{"type":43,"tag":339,"props":3417,"children":3418},{"style":363},[3419],{"type":49,"value":3308},{"type":43,"tag":339,"props":3421,"children":3422},{"style":363},[3423],{"type":49,"value":3424}," [",{"type":43,"tag":339,"props":3426,"children":3427},{"style":363},[3428],{"type":49,"value":376},{"type":43,"tag":339,"props":3430,"children":3431},{"style":352},[3432],{"type":49,"value":3433},".edu",{"type":43,"tag":339,"props":3435,"children":3436},{"style":363},[3437],{"type":49,"value":376},{"type":43,"tag":339,"props":3439,"children":3440},{"style":363},[3441],{"type":49,"value":3442},"],\n",{"type":43,"tag":339,"props":3444,"children":3445},{"class":341,"line":24},[3446,3450,3455,3459,3463],{"type":43,"tag":339,"props":3447,"children":3448},{"style":363},[3449],{"type":49,"value":3293},{"type":43,"tag":339,"props":3451,"children":3452},{"style":3296},[3453],{"type":49,"value":3454},"negate",{"type":43,"tag":339,"props":3456,"children":3457},{"style":363},[3458],{"type":49,"value":376},{"type":43,"tag":339,"props":3460,"children":3461},{"style":363},[3462],{"type":49,"value":3308},{"type":43,"tag":339,"props":3464,"children":3465},{"style":363},[3466],{"type":49,"value":3467}," false\n",{"type":43,"tag":339,"props":3469,"children":3470},{"class":341,"line":623},[3471],{"type":43,"tag":339,"props":3472,"children":3473},{"style":363},[3474],{"type":49,"value":3475},"}\n",{"type":43,"tag":65,"props":3477,"children":3478},{},[3479,3484,3489],{"type":43,"tag":69,"props":3480,"children":3481},{},[3482],{"type":49,"value":3483},"Multiple clauses = AND (all must match)",{"type":43,"tag":69,"props":3485,"children":3486},{},[3487],{"type":49,"value":3488},"Multiple values = OR (any can match)",{"type":43,"tag":69,"props":3490,"children":3491},{},[3492,3498],{"type":43,"tag":90,"props":3493,"children":3495},{"className":3494},[],[3496],{"type":49,"value":3497},"negate: true",{"type":49,"value":3499}," inverts the operator",{"type":43,"tag":58,"props":3501,"children":3503},{"id":3502},"rollout-types",[3504],{"type":49,"value":3505},"Rollout Types",{"type":43,"tag":181,"props":3507,"children":3509},{"id":3508},"manual-percentage-rollout",[3510],{"type":49,"value":3511},"Manual Percentage Rollout",{"type":43,"tag":257,"props":3513,"children":3515},{"className":3272,"code":3514,"language":3274,"meta":265,"style":265},"{\n  \"percentageRolloutConfig\": {\n    \"contextKind\": \"user\",\n    \"bucketBy\": \"key\",\n    \"variations\": [\n      {\"variation\": 0, \"weight\": 50000},\n      {\"variation\": 1, \"weight\": 50000}\n    ]\n  }\n}\n",[3516],{"type":43,"tag":90,"props":3517,"children":3518},{"__ignoreMap":265},[3519,3526,3551,3587,3624,3648,3711,3767,3775,3783],{"type":43,"tag":339,"props":3520,"children":3521},{"class":341,"line":342},[3522],{"type":43,"tag":339,"props":3523,"children":3524},{"style":363},[3525],{"type":49,"value":639},{"type":43,"tag":339,"props":3527,"children":3528},{"class":341,"line":385},[3529,3533,3538,3542,3546],{"type":43,"tag":339,"props":3530,"children":3531},{"style":363},[3532],{"type":49,"value":3293},{"type":43,"tag":339,"props":3534,"children":3535},{"style":3296},[3536],{"type":49,"value":3537},"percentageRolloutConfig",{"type":43,"tag":339,"props":3539,"children":3540},{"style":363},[3541],{"type":49,"value":376},{"type":43,"tag":339,"props":3543,"children":3544},{"style":363},[3545],{"type":49,"value":3308},{"type":43,"tag":339,"props":3547,"children":3548},{"style":363},[3549],{"type":49,"value":3550}," {\n",{"type":43,"tag":339,"props":3552,"children":3553},{"class":341,"line":411},[3554,3559,3563,3567,3571,3575,3579,3583],{"type":43,"tag":339,"props":3555,"children":3556},{"style":363},[3557],{"type":49,"value":3558},"    \"",{"type":43,"tag":339,"props":3560,"children":3561},{"style":346},[3562],{"type":49,"value":3299},{"type":43,"tag":339,"props":3564,"children":3565},{"style":363},[3566],{"type":49,"value":376},{"type":43,"tag":339,"props":3568,"children":3569},{"style":363},[3570],{"type":49,"value":3308},{"type":43,"tag":339,"props":3572,"children":3573},{"style":363},[3574],{"type":49,"value":366},{"type":43,"tag":339,"props":3576,"children":3577},{"style":352},[3578],{"type":49,"value":3317},{"type":43,"tag":339,"props":3580,"children":3581},{"style":363},[3582],{"type":49,"value":376},{"type":43,"tag":339,"props":3584,"children":3585},{"style":363},[3586],{"type":49,"value":3326},{"type":43,"tag":339,"props":3588,"children":3589},{"class":341,"line":551},[3590,3594,3599,3603,3607,3611,3616,3620],{"type":43,"tag":339,"props":3591,"children":3592},{"style":363},[3593],{"type":49,"value":3558},{"type":43,"tag":339,"props":3595,"children":3596},{"style":346},[3597],{"type":49,"value":3598},"bucketBy",{"type":43,"tag":339,"props":3600,"children":3601},{"style":363},[3602],{"type":49,"value":376},{"type":43,"tag":339,"props":3604,"children":3605},{"style":363},[3606],{"type":49,"value":3308},{"type":43,"tag":339,"props":3608,"children":3609},{"style":363},[3610],{"type":49,"value":366},{"type":43,"tag":339,"props":3612,"children":3613},{"style":352},[3614],{"type":49,"value":3615},"key",{"type":43,"tag":339,"props":3617,"children":3618},{"style":363},[3619],{"type":49,"value":376},{"type":43,"tag":339,"props":3621,"children":3622},{"style":363},[3623],{"type":49,"value":3326},{"type":43,"tag":339,"props":3625,"children":3626},{"class":341,"line":575},[3627,3631,3635,3639,3643],{"type":43,"tag":339,"props":3628,"children":3629},{"style":363},[3630],{"type":49,"value":3558},{"type":43,"tag":339,"props":3632,"children":3633},{"style":346},[3634],{"type":49,"value":441},{"type":43,"tag":339,"props":3636,"children":3637},{"style":363},[3638],{"type":49,"value":376},{"type":43,"tag":339,"props":3640,"children":3641},{"style":363},[3642],{"type":49,"value":3308},{"type":43,"tag":339,"props":3644,"children":3645},{"style":363},[3646],{"type":49,"value":3647}," [\n",{"type":43,"tag":339,"props":3649,"children":3650},{"class":341,"line":24},[3651,3656,3660,3666,3670,3674,3679,3684,3688,3693,3697,3701,3706],{"type":43,"tag":339,"props":3652,"children":3653},{"style":363},[3654],{"type":49,"value":3655},"      {",{"type":43,"tag":339,"props":3657,"children":3658},{"style":363},[3659],{"type":49,"value":376},{"type":43,"tag":339,"props":3661,"children":3663},{"style":3662},"--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C",[3664],{"type":49,"value":3665},"variation",{"type":43,"tag":339,"props":3667,"children":3668},{"style":363},[3669],{"type":49,"value":376},{"type":43,"tag":339,"props":3671,"children":3672},{"style":363},[3673],{"type":49,"value":3308},{"type":43,"tag":339,"props":3675,"children":3676},{"style":3662},[3677],{"type":49,"value":3678}," 0",{"type":43,"tag":339,"props":3680,"children":3681},{"style":363},[3682],{"type":49,"value":3683},",",{"type":43,"tag":339,"props":3685,"children":3686},{"style":363},[3687],{"type":49,"value":366},{"type":43,"tag":339,"props":3689,"children":3690},{"style":3662},[3691],{"type":49,"value":3692},"weight",{"type":43,"tag":339,"props":3694,"children":3695},{"style":363},[3696],{"type":49,"value":376},{"type":43,"tag":339,"props":3698,"children":3699},{"style":363},[3700],{"type":49,"value":3308},{"type":43,"tag":339,"props":3702,"children":3703},{"style":3662},[3704],{"type":49,"value":3705}," 50000",{"type":43,"tag":339,"props":3707,"children":3708},{"style":363},[3709],{"type":49,"value":3710},"},\n",{"type":43,"tag":339,"props":3712,"children":3713},{"class":341,"line":623},[3714,3718,3722,3726,3730,3734,3739,3743,3747,3751,3755,3759,3763],{"type":43,"tag":339,"props":3715,"children":3716},{"style":363},[3717],{"type":49,"value":3655},{"type":43,"tag":339,"props":3719,"children":3720},{"style":363},[3721],{"type":49,"value":376},{"type":43,"tag":339,"props":3723,"children":3724},{"style":3662},[3725],{"type":49,"value":3665},{"type":43,"tag":339,"props":3727,"children":3728},{"style":363},[3729],{"type":49,"value":376},{"type":43,"tag":339,"props":3731,"children":3732},{"style":363},[3733],{"type":49,"value":3308},{"type":43,"tag":339,"props":3735,"children":3736},{"style":3662},[3737],{"type":49,"value":3738}," 1",{"type":43,"tag":339,"props":3740,"children":3741},{"style":363},[3742],{"type":49,"value":3683},{"type":43,"tag":339,"props":3744,"children":3745},{"style":363},[3746],{"type":49,"value":366},{"type":43,"tag":339,"props":3748,"children":3749},{"style":3662},[3750],{"type":49,"value":3692},{"type":43,"tag":339,"props":3752,"children":3753},{"style":363},[3754],{"type":49,"value":376},{"type":43,"tag":339,"props":3756,"children":3757},{"style":363},[3758],{"type":49,"value":3308},{"type":43,"tag":339,"props":3760,"children":3761},{"style":3662},[3762],{"type":49,"value":3705},{"type":43,"tag":339,"props":3764,"children":3765},{"style":363},[3766],{"type":49,"value":3475},{"type":43,"tag":339,"props":3768,"children":3769},{"class":341,"line":642},[3770],{"type":43,"tag":339,"props":3771,"children":3772},{"style":363},[3773],{"type":49,"value":3774},"    ]\n",{"type":43,"tag":339,"props":3776,"children":3777},{"class":341,"line":651},[3778],{"type":43,"tag":339,"props":3779,"children":3780},{"style":363},[3781],{"type":49,"value":3782},"  }\n",{"type":43,"tag":339,"props":3784,"children":3785},{"class":341,"line":660},[3786],{"type":43,"tag":339,"props":3787,"children":3788},{"style":363},[3789],{"type":49,"value":3475},{"type":43,"tag":181,"props":3791,"children":3793},{"id":3792},"progressive-rollout",[3794],{"type":49,"value":3795},"Progressive Rollout",{"type":43,"tag":257,"props":3797,"children":3799},{"className":3272,"code":3798,"language":3274,"meta":265,"style":265},"{\n  \"progressiveRolloutConfig\": {\n    \"contextKind\": \"user\",\n    \"controlVariation\": 1,\n    \"endVariation\": 0,\n    \"steps\": [\n      {\"rolloutWeight\": 1000, \"duration\": {\"quantity\": 4, \"unit\": \"hour\"}},\n      {\"rolloutWeight\": 5000, \"duration\": {\"quantity\": 4, \"unit\": \"hour\"}},\n      {\"rolloutWeight\": 10000, \"duration\": {\"quantity\": 4, \"unit\": \"hour\"}}\n    ]\n  }\n}\n",[3800],{"type":43,"tag":90,"props":3801,"children":3802},{"__ignoreMap":265},[3803,3810,3834,3869,3897,3925,3949,4066,4174,4283,4290,4297],{"type":43,"tag":339,"props":3804,"children":3805},{"class":341,"line":342},[3806],{"type":43,"tag":339,"props":3807,"children":3808},{"style":363},[3809],{"type":49,"value":639},{"type":43,"tag":339,"props":3811,"children":3812},{"class":341,"line":385},[3813,3817,3822,3826,3830],{"type":43,"tag":339,"props":3814,"children":3815},{"style":363},[3816],{"type":49,"value":3293},{"type":43,"tag":339,"props":3818,"children":3819},{"style":3296},[3820],{"type":49,"value":3821},"progressiveRolloutConfig",{"type":43,"tag":339,"props":3823,"children":3824},{"style":363},[3825],{"type":49,"value":376},{"type":43,"tag":339,"props":3827,"children":3828},{"style":363},[3829],{"type":49,"value":3308},{"type":43,"tag":339,"props":3831,"children":3832},{"style":363},[3833],{"type":49,"value":3550},{"type":43,"tag":339,"props":3835,"children":3836},{"class":341,"line":411},[3837,3841,3845,3849,3853,3857,3861,3865],{"type":43,"tag":339,"props":3838,"children":3839},{"style":363},[3840],{"type":49,"value":3558},{"type":43,"tag":339,"props":3842,"children":3843},{"style":346},[3844],{"type":49,"value":3299},{"type":43,"tag":339,"props":3846,"children":3847},{"style":363},[3848],{"type":49,"value":376},{"type":43,"tag":339,"props":3850,"children":3851},{"style":363},[3852],{"type":49,"value":3308},{"type":43,"tag":339,"props":3854,"children":3855},{"style":363},[3856],{"type":49,"value":366},{"type":43,"tag":339,"props":3858,"children":3859},{"style":352},[3860],{"type":49,"value":3317},{"type":43,"tag":339,"props":3862,"children":3863},{"style":363},[3864],{"type":49,"value":376},{"type":43,"tag":339,"props":3866,"children":3867},{"style":363},[3868],{"type":49,"value":3326},{"type":43,"tag":339,"props":3870,"children":3871},{"class":341,"line":551},[3872,3876,3881,3885,3889,3893],{"type":43,"tag":339,"props":3873,"children":3874},{"style":363},[3875],{"type":49,"value":3558},{"type":43,"tag":339,"props":3877,"children":3878},{"style":346},[3879],{"type":49,"value":3880},"controlVariation",{"type":43,"tag":339,"props":3882,"children":3883},{"style":363},[3884],{"type":49,"value":376},{"type":43,"tag":339,"props":3886,"children":3887},{"style":363},[3888],{"type":49,"value":3308},{"type":43,"tag":339,"props":3890,"children":3891},{"style":3662},[3892],{"type":49,"value":3738},{"type":43,"tag":339,"props":3894,"children":3895},{"style":363},[3896],{"type":49,"value":3326},{"type":43,"tag":339,"props":3898,"children":3899},{"class":341,"line":575},[3900,3904,3909,3913,3917,3921],{"type":43,"tag":339,"props":3901,"children":3902},{"style":363},[3903],{"type":49,"value":3558},{"type":43,"tag":339,"props":3905,"children":3906},{"style":346},[3907],{"type":49,"value":3908},"endVariation",{"type":43,"tag":339,"props":3910,"children":3911},{"style":363},[3912],{"type":49,"value":376},{"type":43,"tag":339,"props":3914,"children":3915},{"style":363},[3916],{"type":49,"value":3308},{"type":43,"tag":339,"props":3918,"children":3919},{"style":3662},[3920],{"type":49,"value":3678},{"type":43,"tag":339,"props":3922,"children":3923},{"style":363},[3924],{"type":49,"value":3326},{"type":43,"tag":339,"props":3926,"children":3927},{"class":341,"line":24},[3928,3932,3937,3941,3945],{"type":43,"tag":339,"props":3929,"children":3930},{"style":363},[3931],{"type":49,"value":3558},{"type":43,"tag":339,"props":3933,"children":3934},{"style":346},[3935],{"type":49,"value":3936},"steps",{"type":43,"tag":339,"props":3938,"children":3939},{"style":363},[3940],{"type":49,"value":376},{"type":43,"tag":339,"props":3942,"children":3943},{"style":363},[3944],{"type":49,"value":3308},{"type":43,"tag":339,"props":3946,"children":3947},{"style":363},[3948],{"type":49,"value":3647},{"type":43,"tag":339,"props":3950,"children":3951},{"class":341,"line":623},[3952,3956,3960,3965,3969,3973,3978,3982,3986,3991,3995,3999,4004,4008,4014,4018,4022,4027,4031,4035,4040,4044,4048,4052,4057,4061],{"type":43,"tag":339,"props":3953,"children":3954},{"style":363},[3955],{"type":49,"value":3655},{"type":43,"tag":339,"props":3957,"children":3958},{"style":363},[3959],{"type":49,"value":376},{"type":43,"tag":339,"props":3961,"children":3962},{"style":3662},[3963],{"type":49,"value":3964},"rolloutWeight",{"type":43,"tag":339,"props":3966,"children":3967},{"style":363},[3968],{"type":49,"value":376},{"type":43,"tag":339,"props":3970,"children":3971},{"style":363},[3972],{"type":49,"value":3308},{"type":43,"tag":339,"props":3974,"children":3975},{"style":3662},[3976],{"type":49,"value":3977}," 1000",{"type":43,"tag":339,"props":3979,"children":3980},{"style":363},[3981],{"type":49,"value":3683},{"type":43,"tag":339,"props":3983,"children":3984},{"style":363},[3985],{"type":49,"value":366},{"type":43,"tag":339,"props":3987,"children":3988},{"style":3662},[3989],{"type":49,"value":3990},"duration",{"type":43,"tag":339,"props":3992,"children":3993},{"style":363},[3994],{"type":49,"value":376},{"type":43,"tag":339,"props":3996,"children":3997},{"style":363},[3998],{"type":49,"value":3308},{"type":43,"tag":339,"props":4000,"children":4001},{"style":363},[4002],{"type":49,"value":4003}," {",{"type":43,"tag":339,"props":4005,"children":4006},{"style":363},[4007],{"type":49,"value":376},{"type":43,"tag":339,"props":4009,"children":4011},{"style":4010},"--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178",[4012],{"type":49,"value":4013},"quantity",{"type":43,"tag":339,"props":4015,"children":4016},{"style":363},[4017],{"type":49,"value":376},{"type":43,"tag":339,"props":4019,"children":4020},{"style":363},[4021],{"type":49,"value":3308},{"type":43,"tag":339,"props":4023,"children":4024},{"style":3662},[4025],{"type":49,"value":4026}," 4",{"type":43,"tag":339,"props":4028,"children":4029},{"style":363},[4030],{"type":49,"value":3683},{"type":43,"tag":339,"props":4032,"children":4033},{"style":363},[4034],{"type":49,"value":366},{"type":43,"tag":339,"props":4036,"children":4037},{"style":4010},[4038],{"type":49,"value":4039},"unit",{"type":43,"tag":339,"props":4041,"children":4042},{"style":363},[4043],{"type":49,"value":376},{"type":43,"tag":339,"props":4045,"children":4046},{"style":363},[4047],{"type":49,"value":3308},{"type":43,"tag":339,"props":4049,"children":4050},{"style":363},[4051],{"type":49,"value":366},{"type":43,"tag":339,"props":4053,"children":4054},{"style":352},[4055],{"type":49,"value":4056},"hour",{"type":43,"tag":339,"props":4058,"children":4059},{"style":363},[4060],{"type":49,"value":376},{"type":43,"tag":339,"props":4062,"children":4063},{"style":363},[4064],{"type":49,"value":4065},"}},\n",{"type":43,"tag":339,"props":4067,"children":4068},{"class":341,"line":642},[4069,4073,4077,4081,4085,4089,4094,4098,4102,4106,4110,4114,4118,4122,4126,4130,4134,4138,4142,4146,4150,4154,4158,4162,4166,4170],{"type":43,"tag":339,"props":4070,"children":4071},{"style":363},[4072],{"type":49,"value":3655},{"type":43,"tag":339,"props":4074,"children":4075},{"style":363},[4076],{"type":49,"value":376},{"type":43,"tag":339,"props":4078,"children":4079},{"style":3662},[4080],{"type":49,"value":3964},{"type":43,"tag":339,"props":4082,"children":4083},{"style":363},[4084],{"type":49,"value":376},{"type":43,"tag":339,"props":4086,"children":4087},{"style":363},[4088],{"type":49,"value":3308},{"type":43,"tag":339,"props":4090,"children":4091},{"style":3662},[4092],{"type":49,"value":4093}," 5000",{"type":43,"tag":339,"props":4095,"children":4096},{"style":363},[4097],{"type":49,"value":3683},{"type":43,"tag":339,"props":4099,"children":4100},{"style":363},[4101],{"type":49,"value":366},{"type":43,"tag":339,"props":4103,"children":4104},{"style":3662},[4105],{"type":49,"value":3990},{"type":43,"tag":339,"props":4107,"children":4108},{"style":363},[4109],{"type":49,"value":376},{"type":43,"tag":339,"props":4111,"children":4112},{"style":363},[4113],{"type":49,"value":3308},{"type":43,"tag":339,"props":4115,"children":4116},{"style":363},[4117],{"type":49,"value":4003},{"type":43,"tag":339,"props":4119,"children":4120},{"style":363},[4121],{"type":49,"value":376},{"type":43,"tag":339,"props":4123,"children":4124},{"style":4010},[4125],{"type":49,"value":4013},{"type":43,"tag":339,"props":4127,"children":4128},{"style":363},[4129],{"type":49,"value":376},{"type":43,"tag":339,"props":4131,"children":4132},{"style":363},[4133],{"type":49,"value":3308},{"type":43,"tag":339,"props":4135,"children":4136},{"style":3662},[4137],{"type":49,"value":4026},{"type":43,"tag":339,"props":4139,"children":4140},{"style":363},[4141],{"type":49,"value":3683},{"type":43,"tag":339,"props":4143,"children":4144},{"style":363},[4145],{"type":49,"value":366},{"type":43,"tag":339,"props":4147,"children":4148},{"style":4010},[4149],{"type":49,"value":4039},{"type":43,"tag":339,"props":4151,"children":4152},{"style":363},[4153],{"type":49,"value":376},{"type":43,"tag":339,"props":4155,"children":4156},{"style":363},[4157],{"type":49,"value":3308},{"type":43,"tag":339,"props":4159,"children":4160},{"style":363},[4161],{"type":49,"value":366},{"type":43,"tag":339,"props":4163,"children":4164},{"style":352},[4165],{"type":49,"value":4056},{"type":43,"tag":339,"props":4167,"children":4168},{"style":363},[4169],{"type":49,"value":376},{"type":43,"tag":339,"props":4171,"children":4172},{"style":363},[4173],{"type":49,"value":4065},{"type":43,"tag":339,"props":4175,"children":4176},{"class":341,"line":651},[4177,4181,4185,4189,4193,4197,4202,4206,4210,4214,4218,4222,4226,4230,4234,4238,4242,4246,4250,4254,4258,4262,4266,4270,4274,4278],{"type":43,"tag":339,"props":4178,"children":4179},{"style":363},[4180],{"type":49,"value":3655},{"type":43,"tag":339,"props":4182,"children":4183},{"style":363},[4184],{"type":49,"value":376},{"type":43,"tag":339,"props":4186,"children":4187},{"style":3662},[4188],{"type":49,"value":3964},{"type":43,"tag":339,"props":4190,"children":4191},{"style":363},[4192],{"type":49,"value":376},{"type":43,"tag":339,"props":4194,"children":4195},{"style":363},[4196],{"type":49,"value":3308},{"type":43,"tag":339,"props":4198,"children":4199},{"style":3662},[4200],{"type":49,"value":4201}," 10000",{"type":43,"tag":339,"props":4203,"children":4204},{"style":363},[4205],{"type":49,"value":3683},{"type":43,"tag":339,"props":4207,"children":4208},{"style":363},[4209],{"type":49,"value":366},{"type":43,"tag":339,"props":4211,"children":4212},{"style":3662},[4213],{"type":49,"value":3990},{"type":43,"tag":339,"props":4215,"children":4216},{"style":363},[4217],{"type":49,"value":376},{"type":43,"tag":339,"props":4219,"children":4220},{"style":363},[4221],{"type":49,"value":3308},{"type":43,"tag":339,"props":4223,"children":4224},{"style":363},[4225],{"type":49,"value":4003},{"type":43,"tag":339,"props":4227,"children":4228},{"style":363},[4229],{"type":49,"value":376},{"type":43,"tag":339,"props":4231,"children":4232},{"style":4010},[4233],{"type":49,"value":4013},{"type":43,"tag":339,"props":4235,"children":4236},{"style":363},[4237],{"type":49,"value":376},{"type":43,"tag":339,"props":4239,"children":4240},{"style":363},[4241],{"type":49,"value":3308},{"type":43,"tag":339,"props":4243,"children":4244},{"style":3662},[4245],{"type":49,"value":4026},{"type":43,"tag":339,"props":4247,"children":4248},{"style":363},[4249],{"type":49,"value":3683},{"type":43,"tag":339,"props":4251,"children":4252},{"style":363},[4253],{"type":49,"value":366},{"type":43,"tag":339,"props":4255,"children":4256},{"style":4010},[4257],{"type":49,"value":4039},{"type":43,"tag":339,"props":4259,"children":4260},{"style":363},[4261],{"type":49,"value":376},{"type":43,"tag":339,"props":4263,"children":4264},{"style":363},[4265],{"type":49,"value":3308},{"type":43,"tag":339,"props":4267,"children":4268},{"style":363},[4269],{"type":49,"value":366},{"type":43,"tag":339,"props":4271,"children":4272},{"style":352},[4273],{"type":49,"value":4056},{"type":43,"tag":339,"props":4275,"children":4276},{"style":363},[4277],{"type":49,"value":376},{"type":43,"tag":339,"props":4279,"children":4280},{"style":363},[4281],{"type":49,"value":4282},"}}\n",{"type":43,"tag":339,"props":4284,"children":4285},{"class":341,"line":660},[4286],{"type":43,"tag":339,"props":4287,"children":4288},{"style":363},[4289],{"type":49,"value":3774},{"type":43,"tag":339,"props":4291,"children":4292},{"class":341,"line":669},[4293],{"type":43,"tag":339,"props":4294,"children":4295},{"style":363},[4296],{"type":49,"value":3782},{"type":43,"tag":339,"props":4298,"children":4299},{"class":341,"line":678},[4300],{"type":43,"tag":339,"props":4301,"children":4302},{"style":363},[4303],{"type":49,"value":3475},{"type":43,"tag":181,"props":4305,"children":4307},{"id":4306},"guarded-rollout",[4308],{"type":49,"value":4309},"Guarded Rollout",{"type":43,"tag":257,"props":4311,"children":4313},{"className":3272,"code":4312,"language":3274,"meta":265,"style":265},"{\n  \"guardedRolloutConfig\": {\n    \"randomizationUnit\": \"user\",\n    \"stages\": [\n      {\"rolloutWeight\": 1000, \"monitoringWindowMilliseconds\": 17280000},\n      {\"rolloutWeight\": 5000, \"monitoringWindowMilliseconds\": 17280000}\n    ],\n    \"metrics\": [{\n      \"metricKey\": \"error-rate\",\n      \"onRegression\": {\"rollback\": true},\n      \"regressionThreshold\": 0.01\n    }]\n  }\n}\n",[4314],{"type":43,"tag":90,"props":4315,"children":4316},{"__ignoreMap":265},[4317,4324,4348,4384,4408,4465,4520,4528,4553,4591,4637,4662,4669,4676],{"type":43,"tag":339,"props":4318,"children":4319},{"class":341,"line":342},[4320],{"type":43,"tag":339,"props":4321,"children":4322},{"style":363},[4323],{"type":49,"value":639},{"type":43,"tag":339,"props":4325,"children":4326},{"class":341,"line":385},[4327,4331,4336,4340,4344],{"type":43,"tag":339,"props":4328,"children":4329},{"style":363},[4330],{"type":49,"value":3293},{"type":43,"tag":339,"props":4332,"children":4333},{"style":3296},[4334],{"type":49,"value":4335},"guardedRolloutConfig",{"type":43,"tag":339,"props":4337,"children":4338},{"style":363},[4339],{"type":49,"value":376},{"type":43,"tag":339,"props":4341,"children":4342},{"style":363},[4343],{"type":49,"value":3308},{"type":43,"tag":339,"props":4345,"children":4346},{"style":363},[4347],{"type":49,"value":3550},{"type":43,"tag":339,"props":4349,"children":4350},{"class":341,"line":411},[4351,4355,4360,4364,4368,4372,4376,4380],{"type":43,"tag":339,"props":4352,"children":4353},{"style":363},[4354],{"type":49,"value":3558},{"type":43,"tag":339,"props":4356,"children":4357},{"style":346},[4358],{"type":49,"value":4359},"randomizationUnit",{"type":43,"tag":339,"props":4361,"children":4362},{"style":363},[4363],{"type":49,"value":376},{"type":43,"tag":339,"props":4365,"children":4366},{"style":363},[4367],{"type":49,"value":3308},{"type":43,"tag":339,"props":4369,"children":4370},{"style":363},[4371],{"type":49,"value":366},{"type":43,"tag":339,"props":4373,"children":4374},{"style":352},[4375],{"type":49,"value":3317},{"type":43,"tag":339,"props":4377,"children":4378},{"style":363},[4379],{"type":49,"value":376},{"type":43,"tag":339,"props":4381,"children":4382},{"style":363},[4383],{"type":49,"value":3326},{"type":43,"tag":339,"props":4385,"children":4386},{"class":341,"line":551},[4387,4391,4396,4400,4404],{"type":43,"tag":339,"props":4388,"children":4389},{"style":363},[4390],{"type":49,"value":3558},{"type":43,"tag":339,"props":4392,"children":4393},{"style":346},[4394],{"type":49,"value":4395},"stages",{"type":43,"tag":339,"props":4397,"children":4398},{"style":363},[4399],{"type":49,"value":376},{"type":43,"tag":339,"props":4401,"children":4402},{"style":363},[4403],{"type":49,"value":3308},{"type":43,"tag":339,"props":4405,"children":4406},{"style":363},[4407],{"type":49,"value":3647},{"type":43,"tag":339,"props":4409,"children":4410},{"class":341,"line":575},[4411,4415,4419,4423,4427,4431,4435,4439,4443,4448,4452,4456,4461],{"type":43,"tag":339,"props":4412,"children":4413},{"style":363},[4414],{"type":49,"value":3655},{"type":43,"tag":339,"props":4416,"children":4417},{"style":363},[4418],{"type":49,"value":376},{"type":43,"tag":339,"props":4420,"children":4421},{"style":3662},[4422],{"type":49,"value":3964},{"type":43,"tag":339,"props":4424,"children":4425},{"style":363},[4426],{"type":49,"value":376},{"type":43,"tag":339,"props":4428,"children":4429},{"style":363},[4430],{"type":49,"value":3308},{"type":43,"tag":339,"props":4432,"children":4433},{"style":3662},[4434],{"type":49,"value":3977},{"type":43,"tag":339,"props":4436,"children":4437},{"style":363},[4438],{"type":49,"value":3683},{"type":43,"tag":339,"props":4440,"children":4441},{"style":363},[4442],{"type":49,"value":366},{"type":43,"tag":339,"props":4444,"children":4445},{"style":3662},[4446],{"type":49,"value":4447},"monitoringWindowMilliseconds",{"type":43,"tag":339,"props":4449,"children":4450},{"style":363},[4451],{"type":49,"value":376},{"type":43,"tag":339,"props":4453,"children":4454},{"style":363},[4455],{"type":49,"value":3308},{"type":43,"tag":339,"props":4457,"children":4458},{"style":3662},[4459],{"type":49,"value":4460}," 17280000",{"type":43,"tag":339,"props":4462,"children":4463},{"style":363},[4464],{"type":49,"value":3710},{"type":43,"tag":339,"props":4466,"children":4467},{"class":341,"line":24},[4468,4472,4476,4480,4484,4488,4492,4496,4500,4504,4508,4512,4516],{"type":43,"tag":339,"props":4469,"children":4470},{"style":363},[4471],{"type":49,"value":3655},{"type":43,"tag":339,"props":4473,"children":4474},{"style":363},[4475],{"type":49,"value":376},{"type":43,"tag":339,"props":4477,"children":4478},{"style":3662},[4479],{"type":49,"value":3964},{"type":43,"tag":339,"props":4481,"children":4482},{"style":363},[4483],{"type":49,"value":376},{"type":43,"tag":339,"props":4485,"children":4486},{"style":363},[4487],{"type":49,"value":3308},{"type":43,"tag":339,"props":4489,"children":4490},{"style":3662},[4491],{"type":49,"value":4093},{"type":43,"tag":339,"props":4493,"children":4494},{"style":363},[4495],{"type":49,"value":3683},{"type":43,"tag":339,"props":4497,"children":4498},{"style":363},[4499],{"type":49,"value":366},{"type":43,"tag":339,"props":4501,"children":4502},{"style":3662},[4503],{"type":49,"value":4447},{"type":43,"tag":339,"props":4505,"children":4506},{"style":363},[4507],{"type":49,"value":376},{"type":43,"tag":339,"props":4509,"children":4510},{"style":363},[4511],{"type":49,"value":3308},{"type":43,"tag":339,"props":4513,"children":4514},{"style":3662},[4515],{"type":49,"value":4460},{"type":43,"tag":339,"props":4517,"children":4518},{"style":363},[4519],{"type":49,"value":3475},{"type":43,"tag":339,"props":4521,"children":4522},{"class":341,"line":623},[4523],{"type":43,"tag":339,"props":4524,"children":4525},{"style":363},[4526],{"type":49,"value":4527},"    ],\n",{"type":43,"tag":339,"props":4529,"children":4530},{"class":341,"line":642},[4531,4535,4540,4544,4548],{"type":43,"tag":339,"props":4532,"children":4533},{"style":363},[4534],{"type":49,"value":3558},{"type":43,"tag":339,"props":4536,"children":4537},{"style":346},[4538],{"type":49,"value":4539},"metrics",{"type":43,"tag":339,"props":4541,"children":4542},{"style":363},[4543],{"type":49,"value":376},{"type":43,"tag":339,"props":4545,"children":4546},{"style":363},[4547],{"type":49,"value":3308},{"type":43,"tag":339,"props":4549,"children":4550},{"style":363},[4551],{"type":49,"value":4552}," [{\n",{"type":43,"tag":339,"props":4554,"children":4555},{"class":341,"line":651},[4556,4561,4566,4570,4574,4578,4583,4587],{"type":43,"tag":339,"props":4557,"children":4558},{"style":363},[4559],{"type":49,"value":4560},"      \"",{"type":43,"tag":339,"props":4562,"children":4563},{"style":3662},[4564],{"type":49,"value":4565},"metricKey",{"type":43,"tag":339,"props":4567,"children":4568},{"style":363},[4569],{"type":49,"value":376},{"type":43,"tag":339,"props":4571,"children":4572},{"style":363},[4573],{"type":49,"value":3308},{"type":43,"tag":339,"props":4575,"children":4576},{"style":363},[4577],{"type":49,"value":366},{"type":43,"tag":339,"props":4579,"children":4580},{"style":352},[4581],{"type":49,"value":4582},"error-rate",{"type":43,"tag":339,"props":4584,"children":4585},{"style":363},[4586],{"type":49,"value":376},{"type":43,"tag":339,"props":4588,"children":4589},{"style":363},[4590],{"type":49,"value":3326},{"type":43,"tag":339,"props":4592,"children":4593},{"class":341,"line":660},[4594,4598,4603,4607,4611,4615,4619,4624,4628,4632],{"type":43,"tag":339,"props":4595,"children":4596},{"style":363},[4597],{"type":49,"value":4560},{"type":43,"tag":339,"props":4599,"children":4600},{"style":3662},[4601],{"type":49,"value":4602},"onRegression",{"type":43,"tag":339,"props":4604,"children":4605},{"style":363},[4606],{"type":49,"value":376},{"type":43,"tag":339,"props":4608,"children":4609},{"style":363},[4610],{"type":49,"value":3308},{"type":43,"tag":339,"props":4612,"children":4613},{"style":363},[4614],{"type":49,"value":4003},{"type":43,"tag":339,"props":4616,"children":4617},{"style":363},[4618],{"type":49,"value":376},{"type":43,"tag":339,"props":4620,"children":4621},{"style":4010},[4622],{"type":49,"value":4623},"rollback",{"type":43,"tag":339,"props":4625,"children":4626},{"style":363},[4627],{"type":49,"value":376},{"type":43,"tag":339,"props":4629,"children":4630},{"style":363},[4631],{"type":49,"value":3308},{"type":43,"tag":339,"props":4633,"children":4634},{"style":363},[4635],{"type":49,"value":4636}," true},\n",{"type":43,"tag":339,"props":4638,"children":4639},{"class":341,"line":669},[4640,4644,4649,4653,4657],{"type":43,"tag":339,"props":4641,"children":4642},{"style":363},[4643],{"type":49,"value":4560},{"type":43,"tag":339,"props":4645,"children":4646},{"style":3662},[4647],{"type":49,"value":4648},"regressionThreshold",{"type":43,"tag":339,"props":4650,"children":4651},{"style":363},[4652],{"type":49,"value":376},{"type":43,"tag":339,"props":4654,"children":4655},{"style":363},[4656],{"type":49,"value":3308},{"type":43,"tag":339,"props":4658,"children":4659},{"style":3662},[4660],{"type":49,"value":4661}," 0.01\n",{"type":43,"tag":339,"props":4663,"children":4664},{"class":341,"line":678},[4665],{"type":43,"tag":339,"props":4666,"children":4667},{"style":363},[4668],{"type":49,"value":684},{"type":43,"tag":339,"props":4670,"children":4671},{"class":341,"line":687},[4672],{"type":43,"tag":339,"props":4673,"children":4674},{"style":363},[4675],{"type":49,"value":3782},{"type":43,"tag":339,"props":4677,"children":4678},{"class":341,"line":899},[4679],{"type":43,"tag":339,"props":4680,"children":4681},{"style":363},[4682],{"type":49,"value":3475},{"type":43,"tag":58,"props":4684,"children":4686},{"id":4685},"common-patterns",[4687],{"type":49,"value":4688},"Common Patterns",{"type":43,"tag":181,"props":4690,"children":4692},{"id":4691},"model-routing-by-attribute",[4693],{"type":49,"value":4694},"Model Routing by Attribute",{"type":43,"tag":257,"props":4696,"children":4698},{"className":1279,"code":4697,"language":1281,"meta":265,"style":265},"# Route based on selectedModel context attribute\ntargeting.add_rule(\n    config_key=\"model-selector\",\n    environment=\"production\",\n    clauses=[{\n        \"contextKind\": \"user\",\n        \"attribute\": \"selectedModel\",\n        \"op\": \"contains\",\n        \"values\": [\"sonnet\"],\n        \"negate\": False\n    }],\n    variation=0,  # Sonnet variation index\n    description=\"Route sonnet requests\"\n)\n",[4699],{"type":43,"tag":90,"props":4700,"children":4701},{"__ignoreMap":265},[4702,4710,4718,4726,4734,4742,4749,4756,4763,4770,4778,4786,4794,4802],{"type":43,"tag":339,"props":4703,"children":4704},{"class":341,"line":342},[4705],{"type":43,"tag":339,"props":4706,"children":4707},{},[4708],{"type":49,"value":4709},"# Route based on selectedModel context attribute\n",{"type":43,"tag":339,"props":4711,"children":4712},{"class":341,"line":385},[4713],{"type":43,"tag":339,"props":4714,"children":4715},{},[4716],{"type":49,"value":4717},"targeting.add_rule(\n",{"type":43,"tag":339,"props":4719,"children":4720},{"class":341,"line":411},[4721],{"type":43,"tag":339,"props":4722,"children":4723},{},[4724],{"type":49,"value":4725},"    config_key=\"model-selector\",\n",{"type":43,"tag":339,"props":4727,"children":4728},{"class":341,"line":551},[4729],{"type":43,"tag":339,"props":4730,"children":4731},{},[4732],{"type":49,"value":4733},"    environment=\"production\",\n",{"type":43,"tag":339,"props":4735,"children":4736},{"class":341,"line":575},[4737],{"type":43,"tag":339,"props":4738,"children":4739},{},[4740],{"type":49,"value":4741},"    clauses=[{\n",{"type":43,"tag":339,"props":4743,"children":4744},{"class":341,"line":24},[4745],{"type":43,"tag":339,"props":4746,"children":4747},{},[4748],{"type":49,"value":872},{"type":43,"tag":339,"props":4750,"children":4751},{"class":341,"line":623},[4752],{"type":43,"tag":339,"props":4753,"children":4754},{},[4755],{"type":49,"value":880},{"type":43,"tag":339,"props":4757,"children":4758},{"class":341,"line":642},[4759],{"type":43,"tag":339,"props":4760,"children":4761},{},[4762],{"type":49,"value":888},{"type":43,"tag":339,"props":4764,"children":4765},{"class":341,"line":651},[4766],{"type":43,"tag":339,"props":4767,"children":4768},{},[4769],{"type":49,"value":896},{"type":43,"tag":339,"props":4771,"children":4772},{"class":341,"line":660},[4773],{"type":43,"tag":339,"props":4774,"children":4775},{},[4776],{"type":49,"value":4777},"        \"negate\": False\n",{"type":43,"tag":339,"props":4779,"children":4780},{"class":341,"line":669},[4781],{"type":43,"tag":339,"props":4782,"children":4783},{},[4784],{"type":49,"value":4785},"    }],\n",{"type":43,"tag":339,"props":4787,"children":4788},{"class":341,"line":678},[4789],{"type":43,"tag":339,"props":4790,"children":4791},{},[4792],{"type":49,"value":4793},"    variation=0,  # Sonnet variation index\n",{"type":43,"tag":339,"props":4795,"children":4796},{"class":341,"line":687},[4797],{"type":43,"tag":339,"props":4798,"children":4799},{},[4800],{"type":49,"value":4801},"    description=\"Route sonnet requests\"\n",{"type":43,"tag":339,"props":4803,"children":4804},{"class":341,"line":899},[4805],{"type":43,"tag":339,"props":4806,"children":4807},{},[4808],{"type":49,"value":4809},")\n",{"type":43,"tag":181,"props":4811,"children":4813},{"id":4812},"tier-based-variation",[4814],{"type":49,"value":4815},"Tier-Based Variation",{"type":43,"tag":257,"props":4817,"children":4819},{"className":1279,"code":4818,"language":1281,"meta":265,"style":265},"targeting.add_rule(\n    config_key=\"chat-assistant\",\n    environment=\"production\",\n    clauses=[{\n        \"contextKind\": \"user\",\n        \"attribute\": \"tier\",\n        \"op\": \"in\",\n        \"values\": [\"premium\", \"enterprise\"],\n        \"negate\": False\n    }],\n    variation=0  # Premium model variation\n)\n",[4820],{"type":43,"tag":90,"props":4821,"children":4822},{"__ignoreMap":265},[4823,4830,4838,4845,4852,4859,4866,4873,4881,4888,4895,4903],{"type":43,"tag":339,"props":4824,"children":4825},{"class":341,"line":342},[4826],{"type":43,"tag":339,"props":4827,"children":4828},{},[4829],{"type":49,"value":4717},{"type":43,"tag":339,"props":4831,"children":4832},{"class":341,"line":385},[4833],{"type":43,"tag":339,"props":4834,"children":4835},{},[4836],{"type":49,"value":4837},"    config_key=\"chat-assistant\",\n",{"type":43,"tag":339,"props":4839,"children":4840},{"class":341,"line":411},[4841],{"type":43,"tag":339,"props":4842,"children":4843},{},[4844],{"type":49,"value":4733},{"type":43,"tag":339,"props":4846,"children":4847},{"class":341,"line":551},[4848],{"type":43,"tag":339,"props":4849,"children":4850},{},[4851],{"type":49,"value":4741},{"type":43,"tag":339,"props":4853,"children":4854},{"class":341,"line":575},[4855],{"type":43,"tag":339,"props":4856,"children":4857},{},[4858],{"type":49,"value":872},{"type":43,"tag":339,"props":4860,"children":4861},{"class":341,"line":24},[4862],{"type":43,"tag":339,"props":4863,"children":4864},{},[4865],{"type":49,"value":1048},{"type":43,"tag":339,"props":4867,"children":4868},{"class":341,"line":623},[4869],{"type":43,"tag":339,"props":4870,"children":4871},{},[4872],{"type":49,"value":1056},{"type":43,"tag":339,"props":4874,"children":4875},{"class":341,"line":642},[4876],{"type":43,"tag":339,"props":4877,"children":4878},{},[4879],{"type":49,"value":4880},"        \"values\": [\"premium\", \"enterprise\"],\n",{"type":43,"tag":339,"props":4882,"children":4883},{"class":341,"line":651},[4884],{"type":43,"tag":339,"props":4885,"children":4886},{},[4887],{"type":49,"value":4777},{"type":43,"tag":339,"props":4889,"children":4890},{"class":341,"line":660},[4891],{"type":43,"tag":339,"props":4892,"children":4893},{},[4894],{"type":49,"value":4785},{"type":43,"tag":339,"props":4896,"children":4897},{"class":341,"line":669},[4898],{"type":43,"tag":339,"props":4899,"children":4900},{},[4901],{"type":49,"value":4902},"    variation=0  # Premium model variation\n",{"type":43,"tag":339,"props":4904,"children":4905},{"class":341,"line":678},[4906],{"type":43,"tag":339,"props":4907,"children":4908},{},[4909],{"type":49,"value":4809},{"type":43,"tag":181,"props":4911,"children":4913},{"id":4912},"segment-targeting",[4914],{"type":49,"value":4915},"Segment Targeting",{"type":43,"tag":257,"props":4917,"children":4919},{"className":1279,"code":4918,"language":1281,"meta":265,"style":265},"targeting.target_segment(\n    config_key=\"chat-assistant\",\n    environment=\"production\",\n    segment_keys=[\"beta-testers\"],\n    variation=1  # Experimental variation\n)\n",[4920],{"type":43,"tag":90,"props":4921,"children":4922},{"__ignoreMap":265},[4923,4931,4938,4945,4953,4961],{"type":43,"tag":339,"props":4924,"children":4925},{"class":341,"line":342},[4926],{"type":43,"tag":339,"props":4927,"children":4928},{},[4929],{"type":49,"value":4930},"targeting.target_segment(\n",{"type":43,"tag":339,"props":4932,"children":4933},{"class":341,"line":385},[4934],{"type":43,"tag":339,"props":4935,"children":4936},{},[4937],{"type":49,"value":4837},{"type":43,"tag":339,"props":4939,"children":4940},{"class":341,"line":411},[4941],{"type":43,"tag":339,"props":4942,"children":4943},{},[4944],{"type":49,"value":4733},{"type":43,"tag":339,"props":4946,"children":4947},{"class":341,"line":551},[4948],{"type":43,"tag":339,"props":4949,"children":4950},{},[4951],{"type":49,"value":4952},"    segment_keys=[\"beta-testers\"],\n",{"type":43,"tag":339,"props":4954,"children":4955},{"class":341,"line":575},[4956],{"type":43,"tag":339,"props":4957,"children":4958},{},[4959],{"type":49,"value":4960},"    variation=1  # Experimental variation\n",{"type":43,"tag":339,"props":4962,"children":4963},{"class":341,"line":24},[4964],{"type":43,"tag":339,"props":4965,"children":4966},{},[4967],{"type":49,"value":4809},{"type":43,"tag":58,"props":4969,"children":4971},{"id":4970},"error-handling",[4972],{"type":49,"value":4973},"Error Handling",{"type":43,"tag":2745,"props":4975,"children":4976},{},[4977,4998],{"type":43,"tag":2749,"props":4978,"children":4979},{},[4980],{"type":43,"tag":2753,"props":4981,"children":4982},{},[4983,4988,4993],{"type":43,"tag":2757,"props":4984,"children":4985},{},[4986],{"type":49,"value":4987},"Status",{"type":43,"tag":2757,"props":4989,"children":4990},{},[4991],{"type":49,"value":4992},"Cause",{"type":43,"tag":2757,"props":4994,"children":4995},{},[4996],{"type":49,"value":4997},"Solution",{"type":43,"tag":2768,"props":4999,"children":5000},{},[5001,5019,5037,5055],{"type":43,"tag":2753,"props":5002,"children":5003},{},[5004,5009,5014],{"type":43,"tag":2775,"props":5005,"children":5006},{},[5007],{"type":49,"value":5008},"400",{"type":43,"tag":2775,"props":5010,"children":5011},{},[5012],{"type":49,"value":5013},"Invalid semantic patch",{"type":43,"tag":2775,"props":5015,"children":5016},{},[5017],{"type":49,"value":5018},"Check instruction format, ops must be lowercase",{"type":43,"tag":2753,"props":5020,"children":5021},{},[5022,5027,5032],{"type":43,"tag":2775,"props":5023,"children":5024},{},[5025],{"type":49,"value":5026},"403",{"type":43,"tag":2775,"props":5028,"children":5029},{},[5030],{"type":49,"value":5031},"Insufficient permissions",{"type":43,"tag":2775,"props":5033,"children":5034},{},[5035],{"type":49,"value":5036},"Check API token",{"type":43,"tag":2753,"props":5038,"children":5039},{},[5040,5045,5050],{"type":43,"tag":2775,"props":5041,"children":5042},{},[5043],{"type":49,"value":5044},"404",{"type":43,"tag":2775,"props":5046,"children":5047},{},[5048],{"type":49,"value":5049},"Config not found",{"type":43,"tag":2775,"props":5051,"children":5052},{},[5053],{"type":49,"value":5054},"Verify projectKey and configKey",{"type":43,"tag":2753,"props":5056,"children":5057},{},[5058,5063,5068],{"type":43,"tag":2775,"props":5059,"children":5060},{},[5061],{"type":49,"value":5062},"422",{"type":43,"tag":2775,"props":5064,"children":5065},{},[5066],{"type":49,"value":5067},"Invalid variation",{"type":43,"tag":2775,"props":5069,"children":5070},{},[5071],{"type":49,"value":5072},"Use index (0, 1, 2...) or UUID from targeting response",{"type":43,"tag":58,"props":5074,"children":5076},{"id":5075},"next-steps",[5077],{"type":49,"value":5078},"Next Steps",{"type":43,"tag":52,"props":5080,"children":5081},{},[5082],{"type":49,"value":5083},"After configuring targeting:",{"type":43,"tag":105,"props":5085,"children":5086},{},[5087,5104,5120,5135],{"type":43,"tag":69,"props":5088,"children":5089},{},[5090,5095],{"type":43,"tag":112,"props":5091,"children":5092},{},[5093],{"type":49,"value":5094},"Provide config URL:",{"type":43,"tag":257,"props":5096,"children":5099},{"className":5097,"code":5098,"language":49},[260],"https:\u002F\u002Fapp.launchdarkly.com\u002Fprojects\u002F{projectKey}\u002Fai-configs\u002F{configKey}\n",[5100],{"type":43,"tag":90,"props":5101,"children":5102},{"__ignoreMap":265},[5103],{"type":49,"value":5098},{"type":43,"tag":69,"props":5105,"children":5106},{},[5107,5112,5114],{"type":43,"tag":112,"props":5108,"children":5109},{},[5110],{"type":49,"value":5111},"Monitor performance",{"type":49,"value":5113}," with ",{"type":43,"tag":90,"props":5115,"children":5117},{"className":5116},[],[5118],{"type":49,"value":5119},"built-in-metrics",{"type":43,"tag":69,"props":5121,"children":5122},{},[5123,5128,5129],{"type":43,"tag":112,"props":5124,"children":5125},{},[5126],{"type":49,"value":5127},"Attach judges",{"type":49,"value":5113},{"type":43,"tag":90,"props":5130,"children":5132},{"className":5131},[],[5133],{"type":49,"value":5134},"online-evals",{"type":43,"tag":69,"props":5136,"children":5137},{},[5138,5143],{"type":43,"tag":112,"props":5139,"children":5140},{},[5141],{"type":49,"value":5142},"Set up guarded rollouts",{"type":49,"value":5144}," for automatic regression detection",{"type":43,"tag":58,"props":5146,"children":5148},{"id":5147},"related-skills",[5149],{"type":49,"value":5150},"Related Skills",{"type":43,"tag":65,"props":5152,"children":5153},{},[5154,5164,5175,5185],{"type":43,"tag":69,"props":5155,"children":5156},{},[5157,5162],{"type":43,"tag":90,"props":5158,"children":5160},{"className":5159},[],[5161],{"type":49,"value":95},{"type":49,"value":5163}," - Create configs with variations",{"type":43,"tag":69,"props":5165,"children":5166},{},[5167,5173],{"type":43,"tag":90,"props":5168,"children":5170},{"className":5169},[],[5171],{"type":49,"value":5172},"configs-variations",{"type":49,"value":5174}," - Manage variations",{"type":43,"tag":69,"props":5176,"children":5177},{},[5178,5183],{"type":43,"tag":90,"props":5179,"children":5181},{"className":5180},[],[5182],{"type":49,"value":5134},{"type":49,"value":5184}," - Attach judges",{"type":43,"tag":69,"props":5186,"children":5187},{},[5188,5194],{"type":43,"tag":90,"props":5189,"children":5191},{"className":5190},[],[5192],{"type":49,"value":5193},"segments",{"type":49,"value":5195}," - Create segments for targeting",{"type":43,"tag":58,"props":5197,"children":5199},{"id":5198},"other-resources",[5200],{"type":49,"value":5201},"Other Resources",{"type":43,"tag":65,"props":5203,"children":5204},{},[5205,5217,5227,5237],{"type":43,"tag":69,"props":5206,"children":5207},{},[5208],{"type":43,"tag":5209,"props":5210,"children":5214},"a",{"href":5211,"rel":5212},"https:\u002F\u002Fdocs.launchdarkly.com\u002Fhome\u002Fai-configs\u002Ftarget.md",[5213],"nofollow",[5215],{"type":49,"value":5216},"Target with AgentControl",{"type":43,"tag":69,"props":5218,"children":5219},{},[5220],{"type":43,"tag":5209,"props":5221,"children":5224},{"href":5222,"rel":5223},"https:\u002F\u002Fdocs.launchdarkly.com\u002Fhome\u002Fflags\u002Ftarget-rules.md",[5213],[5225],{"type":49,"value":5226},"Targeting Rules",{"type":43,"tag":69,"props":5228,"children":5229},{},[5230],{"type":43,"tag":5209,"props":5231,"children":5234},{"href":5232,"rel":5233},"https:\u002F\u002Fdocs.launchdarkly.com\u002Fhome\u002Fflags\u002Fjson-targeting.md",[5213],[5235],{"type":49,"value":5236},"JSON Targeting",{"type":43,"tag":69,"props":5238,"children":5239},{},[5240],{"type":43,"tag":5209,"props":5241,"children":5244},{"href":5242,"rel":5243},"https:\u002F\u002Fdocs.launchdarkly.com\u002Fhome\u002Freleases\u002Fguarded-rollouts.md",[5213],[5245],{"type":49,"value":5246},"Guarded Rollouts",{"type":43,"tag":5248,"props":5249,"children":5250},"style",{},[5251],{"type":49,"value":5252},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"items":5254,"total":1687},[5255,5272,5281,5294,5305,5315,5323,5337,5346,5355,5364,5373],{"slug":5256,"name":5256,"fn":5257,"description":5258,"org":5259,"tags":5260,"stars":20,"repoUrl":21,"updatedAt":5271},"agent-graphs","create and manage agent graphs","Create and manage agent graphs — directed graphs of configs connected by edges with handoff logic. Use when building multi-agent workflows where configs route to each other.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[5261,5264,5267,5268],{"name":5262,"slug":5263,"type":15},"Agents","agents",{"name":5265,"slug":5266,"type":15},"Architecture","architecture",{"name":9,"slug":8,"type":15},{"name":5269,"slug":5270,"type":15},"Multi-Agent","multi-agent","2026-07-28T05:33:33.709407",{"slug":5273,"name":5273,"fn":5274,"description":5275,"org":5276,"tags":5277,"stars":20,"repoUrl":21,"updatedAt":5280},"aiconfig-agent-graphs","manage agent graphs","DEPRECATED redirect — this skill was renamed to agent-graphs. Do not use this skill; invoke agent-graphs instead. Kept only so old references to aiconfig-agent-graphs still point users to the new name.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[5278,5279],{"name":5262,"slug":5263,"type":15},{"name":5265,"slug":5266,"type":15},"2026-05-22T06:55:56.527064",{"slug":5282,"name":5282,"fn":5283,"description":5284,"org":5285,"tags":5286,"stars":20,"repoUrl":21,"updatedAt":5293},"aiconfig-ai-metrics","manage built-in AI metrics","DEPRECATED redirect — this skill was renamed to built-in-metrics. Do not use this skill; invoke built-in-metrics instead. Kept only so old references to aiconfig-ai-metrics still point users to the new name.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[5287,5290,5291],{"name":5288,"slug":5289,"type":15},"Analytics","analytics",{"name":9,"slug":8,"type":15},{"name":5292,"slug":4539,"type":15},"Metrics","2026-05-22T06:55:53.858749",{"slug":5295,"name":5295,"fn":5296,"description":5297,"org":5298,"tags":5299,"stars":20,"repoUrl":21,"updatedAt":5304},"aiconfig-create","redirect to configs-create skill","DEPRECATED redirect — this skill was renamed to configs-create. Do not use this skill; invoke configs-create instead. Kept only so old references to aiconfig-create still point users to the new name.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[5300,5301],{"name":9,"slug":8,"type":15},{"name":5302,"slug":5303,"type":15},"Reference","reference","2026-05-22T06:55:41.790591",{"slug":5306,"name":5306,"fn":5307,"description":5308,"org":5309,"tags":5310,"stars":20,"repoUrl":21,"updatedAt":5314},"aiconfig-custom-metrics","configure custom metrics in LaunchDarkly","DEPRECATED redirect — this skill was renamed to custom-metrics. Do not use this skill; invoke custom-metrics instead. Kept only so old references to aiconfig-custom-metrics still point users to the new name.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[5311,5312,5313],{"name":5288,"slug":5289,"type":15},{"name":17,"slug":18,"type":15},{"name":9,"slug":8,"type":15},"2026-05-22T06:55:57.84851",{"slug":5316,"name":5316,"fn":5317,"description":5318,"org":5319,"tags":5320,"stars":20,"repoUrl":21,"updatedAt":5322},"aiconfig-migrate","redirect to migrate skill","DEPRECATED redirect — this skill was renamed to migrate. Do not use this skill; invoke migrate instead. Kept only so old references to aiconfig-migrate still point users to the new name.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[5321],{"name":5302,"slug":5303,"type":15},"2026-05-22T06:55:44.464733",{"slug":5324,"name":5324,"fn":5325,"description":5326,"org":5327,"tags":5328,"stars":20,"repoUrl":21,"updatedAt":5336},"aiconfig-online-evals","run online evaluations","DEPRECATED redirect — this skill was renamed to online-evals. Do not use this skill; invoke online-evals instead. Kept only so old references to aiconfig-online-evals still point users to the new name.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[5329,5332,5333],{"name":5330,"slug":5331,"type":15},"Evals","evals",{"name":9,"slug":8,"type":15},{"name":5334,"slug":5335,"type":15},"Testing","testing","2026-05-22T06:55:55.179617",{"slug":5338,"name":5338,"fn":5339,"description":5340,"org":5341,"tags":5342,"stars":20,"repoUrl":21,"updatedAt":5345},"aiconfig-projects","manage AI configuration projects","DEPRECATED redirect — this skill was renamed to projects. Do not use this skill; invoke projects instead. Kept only so old references to aiconfig-projects still point users to the new name.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[5343,5344],{"name":13,"slug":14,"type":15},{"name":9,"slug":8,"type":15},"2026-05-22T06:55:48.522229",{"slug":5347,"name":5347,"fn":5348,"description":5349,"org":5350,"tags":5351,"stars":20,"repoUrl":21,"updatedAt":5354},"aiconfig-snippets","manage AI configuration snippets","DEPRECATED redirect — this skill was renamed to snippets. Do not use this skill; invoke snippets instead. Kept only so old references to aiconfig-snippets still point users to the new name.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[5352,5353],{"name":13,"slug":14,"type":15},{"name":9,"slug":8,"type":15},"2026-05-22T06:55:47.16557",{"slug":5356,"name":5356,"fn":5,"description":5357,"org":5358,"tags":5359,"stars":20,"repoUrl":21,"updatedAt":5363},"aiconfig-targeting","DEPRECATED redirect — this skill was renamed to configs-targeting. Do not use this skill; invoke configs-targeting instead. Kept only so old references to aiconfig-targeting still point users to the new name.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[5360,5361,5362],{"name":13,"slug":14,"type":15},{"name":17,"slug":18,"type":15},{"name":9,"slug":8,"type":15},"2026-05-22T06:55:49.845445",{"slug":5365,"name":5365,"fn":5366,"description":5367,"org":5368,"tags":5369,"stars":20,"repoUrl":21,"updatedAt":5372},"aiconfig-tools","redirect to tools skill","DEPRECATED redirect — this skill was renamed to tools. Do not use this skill; invoke tools instead. Kept only so old references to aiconfig-tools still point users to the new name.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[5370,5371],{"name":9,"slug":8,"type":15},{"name":5302,"slug":5303,"type":15},"2026-05-22T06:55:39.13373",{"slug":5374,"name":5374,"fn":5375,"description":5376,"org":5377,"tags":5378,"stars":20,"repoUrl":21,"updatedAt":5381},"aiconfig-update","redirect to configs-update skill","DEPRECATED redirect — this skill was renamed to configs-update. Do not use this skill; invoke configs-update instead. Kept only so old references to aiconfig-update still point users to the new name.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[5379,5380],{"name":9,"slug":8,"type":15},{"name":5302,"slug":5303,"type":15},"2026-05-22T06:55:40.464884",{"items":5383,"total":1687},[5384,5391,5396,5402,5407,5413,5417],{"slug":5256,"name":5256,"fn":5257,"description":5258,"org":5385,"tags":5386,"stars":20,"repoUrl":21,"updatedAt":5271},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[5387,5388,5389,5390],{"name":5262,"slug":5263,"type":15},{"name":5265,"slug":5266,"type":15},{"name":9,"slug":8,"type":15},{"name":5269,"slug":5270,"type":15},{"slug":5273,"name":5273,"fn":5274,"description":5275,"org":5392,"tags":5393,"stars":20,"repoUrl":21,"updatedAt":5280},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[5394,5395],{"name":5262,"slug":5263,"type":15},{"name":5265,"slug":5266,"type":15},{"slug":5282,"name":5282,"fn":5283,"description":5284,"org":5397,"tags":5398,"stars":20,"repoUrl":21,"updatedAt":5293},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[5399,5400,5401],{"name":5288,"slug":5289,"type":15},{"name":9,"slug":8,"type":15},{"name":5292,"slug":4539,"type":15},{"slug":5295,"name":5295,"fn":5296,"description":5297,"org":5403,"tags":5404,"stars":20,"repoUrl":21,"updatedAt":5304},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[5405,5406],{"name":9,"slug":8,"type":15},{"name":5302,"slug":5303,"type":15},{"slug":5306,"name":5306,"fn":5307,"description":5308,"org":5408,"tags":5409,"stars":20,"repoUrl":21,"updatedAt":5314},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[5410,5411,5412],{"name":5288,"slug":5289,"type":15},{"name":17,"slug":18,"type":15},{"name":9,"slug":8,"type":15},{"slug":5316,"name":5316,"fn":5317,"description":5318,"org":5414,"tags":5415,"stars":20,"repoUrl":21,"updatedAt":5322},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[5416],{"name":5302,"slug":5303,"type":15},{"slug":5324,"name":5324,"fn":5325,"description":5326,"org":5418,"tags":5419,"stars":20,"repoUrl":21,"updatedAt":5336},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[5420,5421,5422],{"name":5330,"slug":5331,"type":15},{"name":9,"slug":8,"type":15},{"name":5334,"slug":5335,"type":15}]