{"id":19935045,"url":"https://github.com/optimizely/fx-api-cookbook","last_synced_at":"2026-03-19T12:37:25.279Z","repository":{"id":213613125,"uuid":"730851122","full_name":"optimizely/fx-api-cookbook","owner":"optimizely","description":"This repo contains API recipes to get started with Optimizely Feature Experimentation (FX). 👩‍🍳","archived":false,"fork":false,"pushed_at":"2024-02-02T06:57:38.000Z","size":36,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":27,"default_branch":"main","last_synced_at":"2025-07-22T23:53:25.821Z","etag":null,"topics":["optimizely-environment-public","optimizely-library","optimizely-owner-fx"],"latest_commit_sha":null,"homepage":"","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/optimizely.png","metadata":{"files":{"readme":"readme.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-12-12T20:14:11.000Z","updated_at":"2024-11-08T19:09:32.000Z","dependencies_parsed_at":"2024-02-02T07:51:00.715Z","dependency_job_id":null,"html_url":"https://github.com/optimizely/fx-api-cookbook","commit_stats":null,"previous_names":["optimizely/fx-api-cookbook"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/optimizely/fx-api-cookbook","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/optimizely%2Ffx-api-cookbook","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/optimizely%2Ffx-api-cookbook/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/optimizely%2Ffx-api-cookbook/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/optimizely%2Ffx-api-cookbook/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/optimizely","download_url":"https://codeload.github.com/optimizely/fx-api-cookbook/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/optimizely%2Ffx-api-cookbook/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29116450,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-05T05:31:32.482Z","status":"ssl_error","status_checked_at":"2026-02-05T05:31:29.075Z","response_time":65,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["optimizely-environment-public","optimizely-library","optimizely-owner-fx"],"created_at":"2024-11-12T23:18:36.812Z","updated_at":"2026-02-05T08:02:33.126Z","avatar_url":"https://github.com/optimizely.png","language":null,"readme":"# Feature Experimentation REST API Cookbook\n\nThis repo contains API recipes to get started with Optimizely Feature Experimentation (FX). 👩‍🍳\n\nWe'll walk through some of the most common operations in the lifecycle of an experiment using the Optimizely APIs. 🧪\n\n## Prerequisites\n\nTo get started with this API cookbook, first complete the below setup.\n\n### Create Optimizely Account\n\nIf you're not an existing enterprise customer, create a completely free feature flagging account with Optimizely [here](https://www.optimizely.com/free-feature-flagging/) (no credit card required!).\n\n### Install VS Code + Extensions\n\nWe'll be using VS Code as a REST client make requests to the Optimizely APIs. Use the below links to install your IDE (integrated development environment) and needed extensions:\n\n- [VS Code](https://code.visualstudio.com/download)\n- [Rest Client](https://marketplace.visualstudio.com/items?itemName=humao.rest-client) (REST Client extension for VS Code)\n\n### Get Optimizely API Personal Access Token\n\nFollow [these steps](https://docs.developers.optimizely.com/feature-experimentation/docs/using-the-rest-api#generate-a-token) to get a personal access token to the Optimizely APIs.\n\n### VS Code REST Client Setup\n\nNext, we'll setup VS Code so we can make requests to the Optimizely APIs.\n\nLet's create some environment variables for the Optimizely API endpoints and your personal access token that we can reuse across API requests.\n\nIn VS Code, create a directory named `.vscode` in the root of your project. In this directory, create a file named `settings.json` and copy and paste the below into the file. Make sure to replace `{{token}}` with your personal access token and `{{yourProjectId}}` with your project ID (you can find this in the URL from the app homepage, e.g. `https://app.optimizely.com/v2/projects/{{your ProjectId}}/flags/list`):\n\n```\n{\n  \"rest-client.environmentVariables\": {\n    \"$shared\": {\n      \"flagsUrl\": \"https://api.optimizely.com/flags/v1\",\n      \"baseUrl\": \"https://api.optimizely.com/v2\",\n      \"token\": \"Bearer {{yourToken}}\",\n      \"projectId\": {{yourProjectId}}\n    }\n  }\n}\n```\n\nYou can find more information on adding environment variables [here](https://github.com/Huachao/vscode-restclient).\n\n## Overview\n\nNow we'll execute some of the most common operations in the lifecycle of an experiment via the Optimizely APIs.   \nEach of the operations has its own `.rest` file in the `requests` directory of this repo. At this point, the directory structure of your project should be as follows:\n\n```\n📦fx-api-recipes\n ┣ 📂.vscode\n ┃ ┗ 📜settings.json\n ┣ 📂requests\n ┃ ┣ 📜1_create_flag.rest\n ┃ ┣ 📜2_create_variations.rest\n ┃ ┣ 📜3_create_events.rest\n ┃ ┣ 📜4_create_attributes.rest\n ┃ ┣ 📜5_create_audiences.rest\n ┃ ┣ 📜6_create_experiment.rest\n ┃ ┣ 📜7_launch_experiment.rest\n ┃ ┣ 📜8_conclude_experiment.rest\n ┃ ┗ 📜9_analyze_results.rest\n ┗ 📜readme.md\n```\n\nTo execute the requests, open each `.rest` file in VS Code and click the `Send Request` link above the request.\n\nFor more information on how to send requests using the REST Client extension, see [here](https://marketplace.visualstudio.com/items?itemName=humao.rest-client#usage).  \n\n### 1. Create a feature flag and flag variables.\nRun the API request in the file **1_create_flag.rest**. You should see a response like this: \n```json\n{\n  \"key\": \"inventory_on_pdp\",\n  \"name\": \"Inventory on PDP\",\n  \"description\": \"Flag to either show or hide inventory on the product detail page.\",\n  \"url\": \"/projects/{{your_project_id}}/flags/inventory_on_pdp\",\n  \"update_url\": \"/projects/{{your_project_id}}/flags\",\n  \"delete_url\": \"/projects/{{your_project_id}}/flags/inventory_on_pdp\",\n  \"archive_url\": \"/projects/{{your_project_id}}/flags/archived\",\n  \"variable_definitions\": {\n    \"show_amounts\": {\n      \"key\": \"show_amounts\",\n      \"description\": \"If inventory is shown, this variable controls what is displayed: available/unavailable vs the actual inventory amount.\",\n      \"type\": \"boolean\",\n      \"default_value\": \"false\",\n      \"created_time\": \"2024-01-26T07:06:11.433733Z\",\n      \"updated_time\": \"2024-01-26T07:06:11.433741Z\"\n    },\n    \"text_color\": {\n      \"key\": \"text_color\",\n      \"description\": \"The color of the text displaying the inventory.\",\n      \"type\": \"string\",\n      \"default_value\": \"green\",\n      \"created_time\": \"2024-01-26T07:06:11.433741Z\",\n      \"updated_time\": \"2024-01-26T07:06:11.433742Z\"\n    },\n    \"low_stock_threshold\": {\n      \"key\": \"low_stock_threshold\",\n      \"description\": \"The threshold quantity remaining in order to show a low stock message.  Setting this to 0 results in not displaying the low stock message.\",\n      \"type\": \"integer\",\n      \"default_value\": \"0\",\n      \"created_time\": \"2024-01-26T07:06:11.433743Z\",\n      \"updated_time\": \"2024-01-26T07:06:11.433744Z\"\n    },\n    \"low_stock_message\": {\n      \"key\": \"low_stock_message\",\n      \"description\": \"The Low Stock message to display if low_stock_threshold is set to a number greater than 0.\",\n      \"type\": \"string\",\n      \"default_value\": \"Low Stock - Act Quick\",\n      \"created_time\": \"2024-01-26T07:06:11.433744Z\",\n      \"updated_time\": \"2024-01-26T07:06:11.433745Z\"\n    }\n  },\n  \"environments\": {\n    \"production\": {\n      \"key\": \"production\",\n      \"name\": \"Production\",\n      \"enabled\": false,\n      \"priority\": 1,\n      \"rules_summary\": {},\n      \"enable_url\": \"/projects/{{your_project_id}}/flags/inventory_on_pdp/environments/production/ruleset/enabled\"\n    },\n    \"development\": {\n      \"key\": \"development\",\n      \"name\": \"Development\",\n      \"enabled\": false,\n      \"priority\": 2,\n      \"rules_summary\": {},\n      \"enable_url\": \"/projects/{{your_project_id}}/flags/inventory_on_pdp/environments/{{your_environment}}/ruleset/enabled\"\n    }\n  },\n  \"id\": 122050,\n  \"urn\": \"flags.flags.optimizely.com::122050\",\n  \"archived\": false,\n  \"outlier_filtering_enabled\": false,\n  \"project_id\": {{your_project_id}},\n  \"created_by_user_id\": {{your_email}},\n  \"account_id\": {{your_account_id}},\n  \"created_time\": \"2024-01-26T07:06:11.398293Z\",\n  \"updated_time\": \"2024-01-26T07:06:11.398299Z\",\n  \"revision\": 1\n}\n```\n\n### 2. Create variations.\nAdd the `flag_key` to your environment like this:\n```diff\n{\n  \"rest-client.environmentVariables\": {\n    \"$shared\": {\n      \"flagsUrl\": \"https://api.optimizely.com/flags/v1\",\n      \"baseUrl\": \"https://api.optimizely.com/v2\",\n      \"token\": \"Bearer {{yourToken}}\",\n      \"projectId\": {{yourProjectId}},\n+     \"flagKey\": {{your_flag_key}}\n    }\n  }\n}\n```\nNow, run all the API requests in **2_create_variations.rest**. Responses should be like this:\n```json\n{\n  \"key\": \"on_hide_amounts\",\n  \"name\": \"On Hide Amounts\",\n  \"description\": \"Inventory is shown as available/unavailable, in the color green.\",\n  \"variables\": {\n    \"low_stock_message\": {\n      \"key\": \"low_stock_message\",\n      \"type\": \"string\",\n      \"value\": \"Low Stock - Act Quick\",\n      \"is_default\": true\n    },\n    \"low_stock_threshold\": {\n      \"key\": \"low_stock_threshold\",\n      \"type\": \"integer\",\n      \"value\": \"0\",\n      \"is_default\": true\n    },\n    \"show_amounts\": {\n      \"key\": \"show_amounts\",\n      \"type\": \"boolean\",\n      \"value\": \"false\",\n      \"is_default\": true\n    },\n    \"text_color\": {\n      \"key\": \"text_color\",\n      \"type\": \"string\",\n      \"value\": \"green\",\n      \"is_default\": true\n    }\n  },\n  \"id\": 382325,\n  \"urn\": \"variations.flags.optimizely.com::382325\",\n  \"flag_key\": \"inventory_on_pdp\",\n  \"environment_usage_count\": {},\n  \"archived\": false,\n  \"enabled\": true,\n  \"in_use\": false,\n  \"created_time\": \"2024-01-26T11:41:00.800857Z\",\n  \"updated_time\": \"2024-01-26T11:41:00.800862Z\",\n  \"url\": \"/projects/{{your_project_id}}/flags/inventory_on_pdp/variations/on_hide_amounts\",\n  \"update_url\": \"/projects/{{your_project_id}}/flags/inventory_on_pdp/variations\",\n  \"delete_url\": \"/projects/{{your_project_id}}/flags/inventory_on_pdp/variations/on_hide_amounts\",\n  \"archive_url\": \"/projects/{{your_project_id}}/flags/inventory_on_pdp/variations/archived\",\n  \"fetch_flag_url\": \"/projects/{{your_project_id}}/flags/inventory_on_pdp\",\n  \"revision\": 1\n}\n\n```\n### 3. Create events.\nNow we will create some events in the project. Go ahead and run all the requests in **3_create_events.rest**. For each of them, you'll see a response like this:\n```json\n{\n  \"archived\": false,\n  \"category\": \"other\",\n  \"created\": \"2024-01-26T11:47:56.638984Z\",\n  \"description\": \"Event used to track users that have added the item to the cart.\",\n  \"event_type\": \"custom\",\n  \"id\": 27447690047,\n  \"is_classic\": false,\n  \"key\": \"add_to_cart\",\n  \"name\": \"add_to_cart\",\n  \"project_id\": {{your_project_id}}\n}\n```\nSave the id of the events. We will need to use them later.\n### 4. Create attributes.\nRun the **4_create_attributes.rest**. For each request, you should see a response like this:\n```json\n{\n  \"archived\": false,\n  \"condition_type\": \"custom_attribute\",\n  \"description\": \"\",\n  \"id\": 27509090124,\n  \"key\": \"is_logged_in\",\n  \"last_modified\": \"2024-01-29T08:01:51.953697Z\",\n  \"name\": \"is_logged_in\",\n  \"project_id\": {{your_project_id}}\n}\n```\n### 5. Create audiences.\nWe need to create some audiences too. To create them, run **5_create_audiences.rest**. For each request, there will be a response like this:\n```json\n{\n  \"archived\": false,\n  \"conditions\": \"[\\\"and\\\", [\\\"or\\\", [\\\"or\\\", {\\\"match_type\\\": \\\"exact\\\", \\\"name\\\": \\\"is_logged_in\\\", \\\"type\\\": \\\"custom_attribute\\\", \\\"value\\\": false}]]]\",\n  \"created\": \"2024-01-29T08:04:58.002727Z\",\n  \"description\": \"\",\n  \"experiment_count\": 0,\n  \"id\": 27430350138,\n  \"is_classic\": false,\n  \"last_modified\": \"2024-01-29T08:04:58.002734Z\",\n  \"name\": \"Anonymous Users\",\n  \"project_id\": {{your_project_id}},\n  \"segmentation\": false\n}\n```\n### 6. Create an experiment.\nNow we will create an experiment. But, we need to add an event as a metric for the experiment. We've already created some events in step **3**, now we will use one of them. For this case, we're going to use the event `add_to_cart`.   \nWe hope you already stored the id of the event; make sure you add them to the environment. You also need to add the environment you want to create the experiment on. For this case, we will use `development`.  \n```diff\n{\n  \"rest-client.environmentVariables\": {\n    \"$shared\": {\n      \"flagsUrl\": \"https://api.optimizely.com/flags/v1\",\n      \"baseUrl\": \"https://api.optimizely.com/v2\",\n      \"token\": \"Bearer {{yourToken}}\",\n      \"projectId\": {{yourProjectId}},\n      \"flagKey\": {{your_flag_key}},\n+     \"environment\": \"development\",\n+     \"eventId\": 27280660613\n    }\n  }\n}\n```\nNow we will execute the **6_create_experiment.rest**. You should see a response like this:\n````json\n{\n  \"url\": \"/projects/{{your_project_id}}/flags/inventory_on_pdp/environments/{{your_environment}}/ruleset\",\n  \"update_url\": \"/projects/{{your_project_id}}/flags/inventory_on_pdp/environments/{{your_environment}}/ruleset\",\n  \"enable_url\": \"/projects/{{your_project_id}}/flags/inventory_on_pdp/environments/{{your_environment}}/ruleset/enabled\",\n  \"rules\": {\n    \"stock_message_test\": {\n      \"key\": \"stock_message_test\",\n      \"name\": \"Stock Message Test\",\n      \"description\": \"\",\n      \"variations\": {\n        \"off\": {\n          \"key\": \"off\",\n          \"name\": \"Off\",\n          \"percentage_included\": 3333\n        },\n        \"on_show_amounts\": {\n          \"key\": \"on_show_amounts\",\n          \"name\": \"On Show Amounts\",\n          \"percentage_included\": 3333\n        },\n        \"on_show_amounts_red\": {\n          \"key\": \"on_show_amounts_red\",\n          \"name\": \"On Show Amounts Red\",\n          \"percentage_included\": 3334\n        }\n      },\n      \"type\": \"a/b\",\n      \"distribution_mode\": \"manual\",\n      \"id\": 295492,\n      \"urn\": \"rules.flags.optimizely.com::295492\",\n      \"archived\": false,\n      \"enabled\": false,\n      \"created_time\": \"2024-01-29T08:54:17.963801Z\",\n      \"updated_time\": \"2024-01-29T08:54:17.963808Z\",\n      \"audience_conditions\": [],\n      \"audience_ids\": [],\n      \"percentage_included\": 10000,\n      \"metrics\": [\n        {\n          \"event_id\": {{your_event_id}},\n          \"event_type\": \"custom\",\n          \"scope\": \"visitor\",\n          \"aggregator\": \"unique\",\n          \"winning_direction\": \"increasing\",\n          \"display_title\": \"add_to_cart\"\n        }\n      ],\n      \"allow_list\": {},\n      \"group_rule\": {\n        \"group_id\": 0,\n        \"traffic_allocation\": 0\n      },\n      \"group_remaining_traffic_allocation\": 100\n    }\n  },\n  \"rule_priorities\": [\n    \"stock_message_test\"\n  ],\n  \"id\": 323190,\n  \"urn\": \"rulesets.flags.optimizely.com::323190\",\n  \"archived\": false,\n  \"enabled\": false,\n  \"updated_time\": \"2024-01-29T08:54:18.279750Z\",\n  \"flag_key\": \"inventory_on_pdp\",\n  \"environment_key\": \"development\",\n  \"environment_name\": \"Development\",\n  \"default_variation_key\": \"off\",\n  \"default_variation_name\": \"Off\",\n  \"revision\": 2\n}\n\n````\nCongratulations! You just created your first experiment.\n\n### 7. Launch the experiment.\nNow we will launch the experiment we just created. Execute the endpoints in **7_launch_experiment.rest**.  \nSample response:\n```json\n{\n  \"url\": \"/projects/{{your_project_id}}/flags/inventory_on_pdp/environments/{{your_environment}}/ruleset\",\n  \"update_url\": \"/projects/{{your_project_id}}/flags/inventory_on_pdp/environments/{{your_environment}}/ruleset\",\n  \"disable_url\": \"/projects/{{your_project_id}}/flags/inventory_on_pdp/environments/{{your_environment}}/ruleset/disabled\",\n  \"rules\": {\n    \"stock_message_test\": {\n      \"key\": \"stock_message_test\",\n      \"name\": \"Stock Message Test\",\n      \"description\": \"\",\n      \"variations\": {\n        \"off\": {\n          \"key\": \"off\",\n          \"name\": \"Off\",\n          \"percentage_included\": 3333\n        },\n        \"on_show_amounts\": {\n          \"key\": \"on_show_amounts\",\n          \"name\": \"On Show Amounts\",\n          \"percentage_included\": 3333\n        },\n        \"on_show_amounts_red\": {\n          \"key\": \"on_show_amounts_red\",\n          \"name\": \"On Show Amounts Red\",\n          \"percentage_included\": 3334\n        }\n      },\n      \"type\": \"a/b\",\n      \"distribution_mode\": \"manual\",\n      \"id\": 295492,\n      \"urn\": \"rules.flags.optimizely.com::295492\",\n      \"archived\": false,\n      \"enabled\": true,\n      \"created_time\": \"2024-01-29T08:54:17.963801Z\",\n      \"updated_time\": \"2024-01-29T08:59:54.871320Z\",\n      \"audience_conditions\": [],\n      \"audience_ids\": [],\n      \"percentage_included\": 10000,\n      \"metrics\": [\n        {\n          \"event_id\": {{your_event_id}},\n          \"event_type\": \"custom\",\n          \"scope\": \"visitor\",\n          \"aggregator\": \"unique\",\n          \"winning_direction\": \"increasing\",\n          \"display_title\": \"add_to_cart\"\n        }\n      ],\n      \"fetch_results_ui_url\": \"https://app.optimizely.com/v2/projects/{{your_project_id}}/results/9300000403730/experiments/9300000495990\",\n      \"allow_list\": {},\n      \"group_rule\": {\n        \"group_id\": 0,\n        \"traffic_allocation\": 0\n      },\n      \"group_remaining_traffic_allocation\": 100\n    }\n  },\n  \"rule_priorities\": [\n    \"stock_message_test\"\n  ],\n  \"id\": 323190,\n  \"urn\": \"rulesets.flags.optimizely.com::323190\",\n  \"archived\": false,\n  \"enabled\": true,\n  \"updated_time\": \"2024-01-29T08:59:55.179266Z\",\n  \"flag_key\": \"inventory_on_pdp\",\n  \"environment_key\": \"development\",\n  \"environment_name\": \"Development\",\n  \"default_variation_key\": \"off\",\n  \"default_variation_name\": \"Off\",\n  \"revision\": 4\n}\n\n```\n### 8. Conclude the experiment.\nYou can also disable an experiment. To do this, run **8_conclude_experiment.rest**.\nSample response:\n```json\n{\n  \"url\": \"/projects/{{your_project_id}}/flags/inventory_on_pdp/environments/{{your_environment}}/ruleset\",\n  \"update_url\": \"/projects/{{your_project_id}}/flags/inventory_on_pdp/environments/{{your_environment}}/ruleset\",\n  \"disable_url\": \"/projects/{{your_project_id}}/flags/inventory_on_pdp/environments/{{your_environment}}/ruleset/disabled\",\n  \"rules\": {\n    \"stock_message_test\": {\n      \"key\": \"stock_message_test\",\n      \"name\": \"Stock Message Test\",\n      \"description\": \"\",\n      \"variations\": {\n        \"off\": {\n          \"key\": \"off\",\n          \"name\": \"Off\",\n          \"percentage_included\": 3333\n        },\n        \"on_show_amounts\": {\n          \"key\": \"on_show_amounts\",\n          \"name\": \"On Show Amounts\",\n          \"percentage_included\": 3333\n        },\n        \"on_show_amounts_red\": {\n          \"key\": \"on_show_amounts_red\",\n          \"name\": \"On Show Amounts Red\",\n          \"percentage_included\": 3334\n        }\n      },\n      \"type\": \"a/b\",\n      \"distribution_mode\": \"manual\",\n      \"id\": 295492,\n      \"urn\": \"rules.flags.optimizely.com::295492\",\n      \"archived\": false,\n      \"enabled\": false,\n      \"created_time\": \"2024-01-29T08:54:17.963801Z\",\n      \"updated_time\": \"2024-01-29T09:12:44.867722Z\",\n      \"audience_conditions\": [],\n      \"audience_ids\": [],\n      \"percentage_included\": 10000,\n      \"metrics\": [\n        {\n          \"event_id\": {{your_event_id}},\n          \"event_type\": \"custom\",\n          \"scope\": \"visitor\",\n          \"aggregator\": \"unique\",\n          \"winning_direction\": \"increasing\",\n          \"display_title\": \"add_to_cart\"\n        }\n      ],\n      \"fetch_results_ui_url\": \"https://app.optimizely.com/v2/projects/{{your_project_id}}/results/9300000403730/experiments/9300000495990\",\n      \"allow_list\": {},\n      \"group_rule\": {\n        \"group_id\": 0,\n        \"traffic_allocation\": 0\n      },\n      \"group_remaining_traffic_allocation\": 100\n    }\n  },\n  \"rule_priorities\": [\n    \"stock_message_test\"\n  ],\n  \"id\": 323190,\n  \"urn\": \"rulesets.flags.optimizely.com::323190\",\n  \"archived\": false,\n  \"enabled\": true,\n  \"updated_time\": \"2024-01-29T09:12:45.111613Z\",\n  \"flag_key\": \"inventory_on_pdp\",\n  \"environment_key\": \"development\",\n  \"environment_name\": \"Development\",\n  \"default_variation_key\": \"off\",\n  \"default_variation_name\": \"Off\",\n  \"revision\": 5\n}\n```\n### 9. Analyze results.\nLet's analyze results of the experiment. Open the file **9_analyze_results.rest** and execute the requests one by one. Follow the instructions before each request.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Foptimizely%2Ffx-api-cookbook","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Foptimizely%2Ffx-api-cookbook","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Foptimizely%2Ffx-api-cookbook/lists"}