Optimizely Feature Experimentation Flags API v1

Feature Experimentation Flags v1 — flags, variations, variable definitions, rulesets, rules, holdouts, groups, custom fields, environments and reports. 55 operations, RFC 9457 problem+json errors, restfuljson.org link relations. Harvested verbatim from the provider's published OpenAPI 2026-08-13.

OpenAPI Specification

optimizely-feature-experimentation-optimizely-feature-experimentation-api-openapi.json Raw ↑
{"components":{"parameters":{"environmentKey":{"description":"The Environment identifier","example":"production","in":"path","name":"environment_key","required":true,"schema":{"type":"string"}},"experimentId":{"description":"Experiment Id","example":12345,"in":"path","name":"experiment_id","required":true,"schema":{"type":"integer"}},"flagId":{"description":"The Flag identifier","example":12345,"in":"path","name":"flag_id","required":true,"schema":{"type":"integer"}},"flagKey":{"description":"The Flag identifier","example":"recurring_deposit","in":"path","name":"flag_key","required":true,"schema":{"type":"string"}},"groupId":{"description":"The group identifier","example":54321,"in":"path","name":"group_id","required":true,"schema":{"type":"integer"}},"holdoutId":{"description":"The holdout identifier","example":54321,"in":"path","name":"holdout_id","required":true,"schema":{"type":"integer"}},"page":{"description":"Page number for pagination","in":"query","name":"page","schema":{"format":"int64","type":"integer"}},"pageNumber":{"description":"Bypass page_token to jump to specific page","in":"query","name":"page_number","schema":{"format":"int64","type":"integer"}},"pageToken":{"description":"Pagination page token. Implements prev, next, last, first","in":"query","name":"page_token","schema":{"type":"string"}},"pageWindow":{"description":"Number of previous and next page links to supply for the request (defaults to 1).","in":"query","name":"page_window","schema":{"type":"integer"}},"perPage":{"description":"The max number of items to include per page or results.","in":"query","name":"per_page","schema":{"format":"int64","type":"integer"}},"projectId":{"description":"The project identifier","example":12345,"in":"path","name":"project_id","required":true,"schema":{"type":"integer"}},"reportKey":{"description":"The Report identifier. Get the key from the List Reports endpoint (key is not displayed in the Optimizely app)","example":"paid_users_45633910","in":"path","name":"report_key","required":true,"schema":{"type":"string"}},"ruleKey":{"description":"The Rule identifier","example":"rule_key","in":"path","name":"rule_key","required":true,"schema":{"type":"string"}},"variableDefinitionKey":{"description":"The Variable Definition identifier","example":"my_str","in":"path","name":"variable_definition_key","required":true,"schema":{"type":"string"}},"variationKey":{"description":"The Variation identifier","example":"high_discount","in":"path","name":"variation_key","required":true,"schema":{"type":"string"}}},"requestBodies":{"FlagRequest":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FlagRequestBody"}}},"required":true},"CustomFieldRequest":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CustomFieldRequestBody"}}},"required":true},"CustomFieldUpdateRequest":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CustomFieldUpdateRequestBody"}}},"required":true},"GroupRequest":{"content":{"application/json":{"example":{"description":"Promo Group description","environment_key":"production","name":"Promo Group","rules":{"123":{"traffic_allocation":2500}}},"schema":{"$ref":"#/components/schemas/GroupRequestBody"}}},"required":true},"HoldoutRequest":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HoldoutRequestBody"}}},"required":true},"VariationRequest":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VariationRequestBody"}}},"required":true}},"responses":{"BadRequestResponse":{"content":{"application/problem+json":{"example":{"detail":"Another entity already exists with this same key","status":400,"title":"Key example_entity already exists\"","uuid":"42c4c855-42f2-4c9a-8544-37b3dff706d2"},"schema":{"$ref":"#/components/schemas/ProblemDetail"}}},"description":"Malformed requests and invalid parameter names and types"},"ChangeHistorySuccessResponse":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChangeHistory"}}},"description":"Successful retrieval of query params for change history.\n\nThe response includes RESTful JSON (https://restfuljson.org/) styled links. If a\nlink is not present in the response, it indicates a user is not authorized to access\nthe related resource.\n"},"ConflictResponse":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}},"description":"Conflicting resource state with requested action"},"CustomFieldSuccessResponse":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CustomField"}}},"description":"Successful retrieval, creation or update of a Custom Field.\n\nThe response includes RESTful JSON (https://restfuljson.org/) styled links. If a\nlink is not present in the response, it indicates a user is not authorized to access\nthe related resource.\n"},"CustomFieldsListSuccessResponse":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CustomFieldsList"}}},"description":"Successful retrieval of a page of Custom Fields.\n\nThe response includes RESTful JSON (https://restfuljson.org/) styled links and pagination metadata.\nObjects in this API MAY include a url property for a link to itself and MAY append _url to properties for related links.\nIf a link is not present in the response, it indicates a user is not authorized to access the related resource.\n"},"EnvironmentMapSuccessResponse":{"content":{"application/json":{"example":{"development":{"archived":false,"key":"development","name":"Development","priority":2},"production":{"archived":false,"key":"production","name":"Production","priority":1}},"schema":{"$ref":"#/components/schemas/EnvironmentMap"}}},"description":"Successful update of Environments.\n\nThe response includes RESTful JSON (https://restfuljson.org/) styled links. If a\nlink is not present in the response, it indicates a user is not authorized to access\nthe related resource.\n"},"FlagSuccessResponse":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Flag"}}},"description":"Successful retrieval, creation or update of a Flag.\n\nThe response includes RESTful JSON (https://restfuljson.org/) styled links. If a\nlink is not present in the response, it indicates a user is not authorized to access\nthe related resource.\n"},"ForbiddenResponse":{"content":{"application/problem+json":{"example":{"detail":"Permission denied","status":403,"title":"Forbidden"},"schema":{"$ref":"#/components/schemas/ProblemDetail"}}},"description":"Do not have permission to perform the operation"},"GroupSuccessResponse":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Group"}}},"description":"Successful retrieval, creation or update of a Group.\n\nThe response includes RESTful JSON (https://restfuljson.org/) styled links. If a\nlink is not present in the response, it indicates a user is not authorized to access\nthe related resource.\n"},"HoldoutExperimentsSuccessResponse":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HoldoutExperiments"}}},"description":"Successful retrieval of holdout experiment rules.\n\nThe response includes a list of experiment rules associated with the holdout,\ncontaining experiment IDs and flag keys for experiments that are part of the\nholdout configuration.\n"},"HoldoutSuccessResponse":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Holdout"}}},"description":"Successful retrieval, creation or update of a Holdout.\n\nThe response includes RESTful JSON (https://restfuljson.org/) styled links. If a\nlink is not present in the response, it indicates a user is not authorized to access\nthe related resource.\n"},"HoldoutsListSuccessResponse":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HoldoutsList"}}},"description":"Successful retrieval of a list of holdouts.\n\nThe response includes RESTful JSON (https://restfuljson.org/) styled links. If a\nlink is not present in the response, it indicates a user is not authorized to access\nthe related resource.\n"},"HoldoutsPaginatedListSuccessResponse":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HoldoutsPaginatedList"}}},"description":"Successful retrieval of a list of holdouts.\n\nThe response includes RESTful JSON (https://restfuljson.org/) styled links. If a\nlink is not present in the response, it indicates a user is not authorized to access\nthe related resource.\n"},"NoContentResponse":{"description":"No content in the response"},"NotFoundResponse":{"description":"Not found. No content"},"ReportSuccessResponse":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Report"}}},"description":"Successful retrieval of a Report.\n\nThe response includes RESTful JSON (https://restfuljson.org/) styled links. If a\nlink is not present in the response, it indicates a user is not authorized to access\nthe related resource.\n"},"RuleSuccessResponse":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Rule"}}},"description":"Successful retrieval of a Rule.\n"},"RulesetSuccessResponse":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Ruleset"}}},"description":"Successful retrieval or update of a Ruleset.\n\nThe response includes RESTful JSON (https://restfuljson.org/) styled links. If a\nlink is not present in the response, it indicates a user is not authorized to access\nthe related resource.\n"},"UnauthorizedResponse":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}},"description":"Invalid credentials"},"UnprocessableEntityResponse":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}},"description":"Missing required properties or unknown values for query parameters"},"VariationSuccessResponse":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Variation"}}},"description":"Successful retrieval, creation or update of a Variation for a Flag.\n\nThe response includes RESTful JSON (https://restfuljson.org/) styled links. If a\nlink is not present in the response, it indicates a user is not authorized to access\nthe related resource.\n"}},"schemas":{"AudienceConditions":{"description":"An Audience Combination composed of other audiences. Each audience is a rule like 'User likes salads', and an Audience Combination is a Boolean combination of these rules, like 'User likes pizza NOT (User likes salads AND User likes soup)'.","oneOf":[{"$ref":"#/components/schemas/AudienceConditionsArray"},{"$ref":"#/components/schemas/AudienceConditionsString"}]},"AudienceConditionsArray":{"example":["or",{"audience_id":123},["and",{"audience_id":456},{"audience_id":789}]],"items":{"anyOf":[{"description":"The logical operator to use (e.g. \"and\", \"or\", or \"not\"). This must be the first item in the audience_conditions array. The \"not\" operator may only be used in conjunction with a single condition or list.","type":"string"},{"description":"An invidual conditional, consisting of a JSON object with an \"audience_id\" value.","properties":{"audience_id":{"type":"integer"}},"required":["audience_id"],"type":"object"},{"$ref":"#/components/schemas/AudienceConditionsArray","description":"A nested AudienceConditionsArray","example":[["and",{"audience_id":456},{"audience_id":789}]]}]},"type":"array"},"AudienceConditionsString":{"description":"A valid AudienceConditionsArray represented as a JSON string","example":"[\n  \"or\",\n  {\n    \"audience_id\": 1038980040\n  },\n  {\n    \"audience_id\": 1033280055\n  },\n  [\n    \"not\",\n    {\n      \"audience_id\": 1120870079\n    }\n  ]\n]","type":"string"},"BrainstormError":{"properties":{"id":{"type":"string"},"message":{"type":"string"},"type":{"type":"string"}},"required":["message","type","id"],"type":"object"},"BrainstormUserChat":{"properties":{"id":{"type":"string"},"type":{"type":"string"},"user_chat":{"type":"string"}},"required":["user_chat","type"],"type":"object"},"BrainstormVariableDefinition":{"properties":{"default_value":{"description":"The default value for the variable.","type":"string"},"description":{"description":"Additional context of the Flag Variable Definition","type":"string"},"key":{"description":"Unique identifier for the variable.","type":"string"},"type":{"description":"The data type of the variable.","enum":["integer","string","boolean","double","json"],"type":"string"}},"required":["key","type","default_value","description"],"type":"object"},"BrainstormVariablesChat":{"properties":{"interactions":{"description":"A list of interactions including user chats and responses","items":{"$ref":"#/components/schemas/BrainstormVariablesInteraction"},"type":"array"}},"required":["interactions"],"type":"object"},"BrainstormVariablesInteraction":{"discriminator":{"mapping":{"error":"#/components/schemas/BrainstormError","response":"#/components/schemas/BrainstormVariablesResponse","user_chat":"#/components/schemas/BrainstormUserChat"},"propertyName":"type"},"type":"object"},"BrainstormVariablesResponse":{"properties":{"id":{"type":"string"},"type":{"type":"string"},"variables":{"items":{"$ref":"#/components/schemas/BrainstormVariableDefinition"},"type":"array"}},"required":["variables","type","id"],"type":"object"},"BrainstormVariation":{"properties":{"description":{"description":"Additional context of the Variation","type":"string"},"key":{"description":"Unique identifier for the variation.","type":"string"},"name":{"description":"Name of the variation.","type":"string"},"variables":{"additionalProperties":{"properties":{"key":{"type":"string"},"type":{"type":"string"},"value":{"type":"string"}},"type":"object"},"default":{},"type":"object"}},"required":["key","name","description","variables"],"type":"object"},"BrainstormVariationsChat":{"properties":{"interactions":{"description":"A list of interactions including user chats and responses","items":{"$ref":"#/components/schemas/BrainstormVariablesInteraction"},"type":"array"}},"required":["interactions"],"type":"object"},"BrainstormVariationsInteraction":{"discriminator":{"mapping":{"error":"#/components/schemas/BrainstormError","response":"#/components/schemas/BrainstormVariationsResponse","user_chat":"#/components/schemas/BrainstormUserChat"},"propertyName":"type"},"type":"object"},"BrainstormVariationsResponse":{"properties":{"id":{"type":"string"},"type":{"type":"string"},"variations":{"items":{"$ref":"#/components/schemas/BrainstormVariation"},"type":"array"}},"required":["variations","type","id"],"type":"object"},"BulkOperationsRequestBody":{"properties":{"keys":{"description":"The list of resource keys to perform the desired operation","items":{"type":"string"},"type":"array"}},"type":"object"},"ChangeHistory":{"items":{"properties":{"entity_ids":{"description":"Array of entity IDs","items":{"anyOf":[{"type":"integer"},{"type":"string"}]},"type":"array"},"entity_type":{"description":"Flag Key","readOnly":true,"type":"string"}},"type":"object"},"type":"array"},"Environment":{"properties":{"account_id":{"description":"The ID of the Account","format":"int64","readOnly":true,"type":"integer"},"archived":{"example":false,"type":"boolean"},"id":{"description":"The ID of the Environment","format":"int64","readOnly":true,"type":"integer"},"key":{"description":"User-facing key to identify this Environment.","example":"production","maxLength":64,"pattern":"^[a-zA-Z0-9_\\-]+$","type":"string"},"name":{"description":"Name of the Environment.","example":"Production","type":"string"},"priority":{"description":"Integer representing the priority of the Environment. This is used for ordering in the UI.","example":1,"type":"integer"},"project_id":{"description":"The ID of the Project this Flag belongs to","format":"int64","readOnly":true,"type":"integer"},"revision":{"description":"Revision number for tracking changes","readOnly":true,"type":"integer"},"role":{"description":"Granular permission role","example":"admin","readOnly":true,"type":"string"}},"required":["key","name","archived","priority","project_id"],"type":"object"},"EnvironmentMap":{"additionalProperties":{"$ref":"#/components/schemas/Environment"},"description":"Map of environments that include environment key as key and environment payload as value.","type":"object"},"Environments":{"properties":{"count":{"description":"Number of Environments on the current page.","example":2,"type":"integer"},"filter_url":{"allOf":[{"$ref":"#/components/schemas/UrlValue"}],"description":"Url template like '.../{?filter}'","example":"/projects/123/environments?archived=false"},"first_url":{"allOf":[{"$ref":"#/components/schemas/UrlValue"}],"description":"Link to first page of Environments in a series.","example":"/projects/123/environments?page_token=gASVCQAAAAAAAACMBTF8MnwylC4%3D#1"},"items":{"items":{"$ref":"#/components/schemas/Environment"},"type":"array"},"last_url":{"allOf":[{"$ref":"#/components/schemas/UrlValue"}],"description":"Link to the last page of Environments in a series.","example":"/projects/123/environments?page_token=gASVCQAAAAAAAACMBTF8MnwylC4%3D#10"},"next_url":{"allOf":[{"$ref":"#/components/schemas/UrlList"}],"description":"List of links to next pages of Environments in a series.\n\n The first element in the array is the exact next page after the current record, etc.\n","example":["/projects/123/environments?page_token=gASVCQAAAAAAAACMBTF8MnwylC4%3D#6","/projects/123/environments?page_token=gASVCQAAAAAAAACMBTF8MnwylC4%3D#7"]},"page":{"description":"Number of the current page. 1-index based.","example":5,"type":"integer"},"prev_url":{"allOf":[{"$ref":"#/components/schemas/UrlList"}],"description":"List of links to previous pages of Environments in a series.\n\nThe first element in the array is the exact previous page before the current record, etc.\n","example":["/projects/123/environments?page_token=gASVCQAAAAAAAACMBTF8MnwylC4%3D#4","/projects/123/environments?page_token=gASVCQAAAAAAAACMBTF8MnwylC4%3D#3"]},"reset_url":{"allOf":[{"$ref":"#/components/schemas/UrlValue"}],"description":"Link to the default pages of Environments","example":"..."},"total_count":{"description":"Total number of Environments for this series.","example":20,"type":"integer"},"total_pages":{"description":"Total number of pages for this series.","example":10,"type":"integer"},"url":{"allOf":[{"$ref":"#/components/schemas/UrlValue"}],"description":"Link to self"}},"required":["url","first_url","last_url","count","page","total_count","total_pages","items"],"type":"object"},"EventPropertyCondition":{"properties":{"name":{"type":"string"},"operator":{"enum":["equal_to","not_equal_to","greater_than","greater_than_or_equal_to","less_than","less_than_or_equal_to","contains","does_not_contain"],"type":"string"},"type":{"enum":["string","number","boolean"],"type":"string"},"value":{"type":"string"}},"required":["name","type","value","operator"],"type":"object"},"Flag":{"example":{"account_id":12345,"archive_url":"...","archived":false,"created_by_user_id":"testuser@optimizely.com","created_time":"2019-05-08T00:00:00.000Z","delete_url":"string","description":"Flag used for driving customers to use recurring deposits by showing a graph of compound interest over time","environments":{"development":{"disable_url":"...","enable_url":"...","enabled":false,"key":"development","name":"Development","priority":2,"rules_summary":[{"audience_ids":[1],"created_time":"2022-01-08T00:00:00.000Z","days_running":30,"enabled":true,"key":"a/b","name":"A/B Test","primary_metric":"conversion_rate","traffic_allocation":100,"type":"experiment","updated_time":"2022-01-08T00:00:00.000Z"}]},"production":{"disable_url":"...","enable_url":"...","enabled":false,"key":"production","name":"Production","priority":1,"rules_detail":[{"audience_ids":[1],"created_time":"2022-01-08T00:00:00.000Z","days_running":30,"enabled":true,"id":123,"key":"a/b","name":"A/B Test","primary_metric":"conversion_rate","traffic_allocation":100,"type":"experiment","updated_time":"2022-01-08T00:00:00.000Z"}],"rules_summary":{"a/b":{"keys":["new_users"]},"targeted_delivery":{"keys":["paid_users","trial_users"]}}}},"id":45633994,"key":"recurring_deposit","name":"Recurring Deposit","outlier_filtering_enabled":false,"project_id":12345,"revision":1,"unarchive_url":"...","update_url":"...","updated_time":"2019-05-08T00:00:00.000Z","url":"...","urn":"flags.flag.optimizely.com::asdfsdf-2344-efadf03-343434-efrrr","variable_definitions":{"advanced":{"default_value":"{\n\t\"hello\": 123\n}","description":"This variable is used to configure the advanced used for advanced purposes","key":"advanced","type":"json"},"amount":{"default_value":"0.0","description":"This variable is used to configure the amount used for computing the discount","key":"amount","type":"double"},"message":{"default_value":"Use recurring deposits to compound interest","description":"This variable is used to configure the message used for displaying the discount","key":"message","type":"string"}},"custom_fields":{"feature_category":"financial","priority":"high","team":"growth"},"owner_user_id":"1234-abcd-5678-efgh","team_ids":["1234567890","0987654321"]},"properties":{"account_id":{"description":"The ID of the Account this Flag belongs to","format":"int64","type":"integer"},"archive_url":{"allOf":[{"$ref":"#/components/schemas/UrlValue"}],"example":"...","readOnly":true},"archived":{"example":false,"type":"boolean"},"created_by_user_email":{"example":"testuser@optimizely.com","readOnly":true,"type":"string"},"created_time":{"example":"2019-05-08T00:00:00.000Z","format":"date-time","readOnly":true,"type":"string"},"delete_url":{"allOf":[{"$ref":"#/components/schemas/UrlValue"}],"readOnly":true},"description":{"example":"Flag used for driving customers to use recurring deposits by showing a graph of compound interest over time","type":"string"},"environments":{"additionalProperties":{"$ref":"#/components/schemas/FlagEnvironment"},"readOnly":true,"type":"object"},"id":{"example":45633994,"readOnly":true,"type":"integer"},"key":{"example":"recurring_deposit","type":"string"},"name":{"example":"Recurring Deposit","type":"string"},"outlier_filtering_enabled":{"default":false,"example":false,"type":"boolean"},"project_id":{"description":"The ID of the Project this Flag belongs to","format":"int64","type":"integer"},"revision":{"description":"Revision number for tracking changes","readOnly":true,"type":"integer"},"role":{"description":"Granular permission role","example":"admin","readOnly":true,"type":"string"},"unarchive_url":{"allOf":[{"$ref":"#/components/schemas/UrlValue"}],"example":"...","readOnly":true},"update_url":{"allOf":[{"$ref":"#/components/schemas/UrlValue"}],"example":"...","readOnly":true},"updated_time":{"example":"2019-05-08T00:00:00.000Z","format":"date-time","readOnly":true,"type":"string"},"url":{"allOf":[{"$ref":"#/components/schemas/UrlValue"}],"description":"Link to self","example":"...","readOnly":true},"urn":{"description":"The URN for the Flag","example":"flags.flag.optimizely.com::asdfsdf-2344-efadf03-343434-efrrr","readOnly":true,"type":"string"},"variable_definitions":{"additionalProperties":{"$ref":"#/components/schemas/VariableDefinition"},"default":{},"type":"object"},"custom_fields":{"additionalProperties":true,"description":"Custom field values associated with this flag","example":{"feature_category":"checkout","priority":"high"},"type":"object"},"owner_user_id":{"description":"Unique user ID of the flag owner. This is the user's unique identifier, not their email address. If no value was provided during creation, this defaults to the user who created the flag.","example":"1234-abcd-5678-efgh","type":"string"},"team_ids":{"description":"List of team IDs associated with this flag","example":["1234567890","0987654321"],"items":{"type":"string"},"type":"array"}},"required":["id","urn","key","name","created_time","updated_time","environments","url"],"type":"object"},"FlagEnvironment":{"properties":{"created_time":{"example":"2019-05-08T00:00:00.000Z","format":"date-time","readOnly":true,"type":"string"},"disable_url":{"allOf":[{"$ref":"#/components/schemas/UrlValue"}],"description":"Link to disable this flag in the environment","example":"...","readOnly":true},"enable_url":{"allOf":[{"$ref":"#/components/schemas/UrlValue"}],"description":"Link to enable this flag in the environment","example":"...","readOnly":true},"enabled":{"example":false,"type":"boolean"},"has_restricted_permissions":{"example":false,"type":"boolean"},"id":{"description":"The ID of the Environment","format":"int64","readOnly":true,"type":"integer"},"key":{"example":"production","type":"string"},"name":{"example":"Production\"","type":"string"},"priority":{"description":"Integer representing the priority of the Environment. This is used for ordering in the UI.","example":1,"type":"integer"},"rules_detail":{"items":{"$ref":"#/components/schemas/RuleDetails"},"type":"array"},"rules_summary":{"additionalProperties":{"$ref":"#/components/schemas/RulesetSummary"},"description":"Map of rules that include rule type as key and summary as value","type":"object"},"status":{"description":"Status of the Flag","example":"draft","type":"string"}},"required":["name","key","priority"],"type":"object"},"FlagMap":{"additionalProperties":{"$ref":"#/components/schemas/Flag"},"description":"Map of flags that include flag key as key and flag payload as value.","type":"object"},"FlagRequestBody":{"properties":{"description":{"example":"Flag used for driving customers to use recurring deposits by showing a graph of compound interest over time","type":"string"},"key":{"example":"recurring_deposit","type":"string"},"name":{"example":"Recurring Deposit","type":"string"},"owner_user_id":{"description":"Unique user ID of the flag owner. This is the user's unique identifier, not their email address. If not provided, defaults to the user making the request.","example":"1234-abcd-5678-efgh","type":"string"},"team_ids":{"description":"List of team IDs associated with this flag","example":["1234567890","0987654321"],"items":{"type":"string"},"type":"array"},"outlier_filtering_enabled":{"default":false,"example":false,"type":"boolean"},"variable_definitions":{"additionalProperties":{"$ref":"#/components/schemas/VariableDefinition"},"example":{"advanced":{"default_value":"{\n\t\"hello\": 123\n}","description":"This variable is used to configure the advanced used for advanced purposes","key":"advanced","type":"json"},"amount":{"default_value":"0.0","description":"This variable is used to configure the amount used for computing the discount","key":"amount","type":"double"},"message":{"default_value":"Use recurring deposits to compound interest","description":"This variable is used to configure the message used for displaying the discount","key":"message","type":"string"}},"type":"object"}},"required":["key"],"type":"object"},"Flags":{"properties":{"count":{"description":"Number of Flags on the current page.","example":2,"type":"integer"},"create_url":{"allOf":[{"$ref":"#/components/schemas/UrlValue"}]},"fetch_flag_url":{"allOf":[{"$ref":"#/components/schemas/UrlValue"}],"description":"A url template to be used to find a particular Flag.\n"},"filter_url":{"allOf":[{"$ref":"#/components/schemas/UrlValue"}],"description":"Url template like '.../{?filter}'"},"first_url":{"allOf":[{"$ref":"#/components/schemas/UrlValue"}],"description":"Link to first page of Flags in a series.","example":"/projects/123/flags?page_token=gASVCQAAAAAAAACMBTF8MnwylC4%3D#1"},"items":{"items":{"$ref":"#/components/schemas/Flag"},"type":"array"},"last_url":{"allOf":[{"$ref":"#/components/schemas/UrlValue"}],"description":"Link to the last page of Flags in a series.","example":"/projects/123/flags?page_token=gASVCQAAAAAAAACMBTF8MnwylC4%3D#10"},"next_url":{"allOf":[{"$ref":"#/components/schemas/UrlList"}],"description":"List of links to next pages of Flags in a series.\n\n The first element in the array is the exact next page after the current record, etc.\n","example":["/projects/123/flags?page_token=gASVCQAAAAAAAACMBTF8MnwylC4%3D#6","/projects/123/flags?page_token=gASVCQAAAAAAAACMBTF8MnwylC4%3D#7"]},"page":{"description":"Number of the current page. 1-index based.","example":5,"type":"integer"},"prev_url":{"allOf":[{"$ref":"#/components/schemas/UrlList"}],"description":"List of links to previous pages of Flags in a series.\n\nThe first element in the array is the exact previous page before the current record, etc.\n","example":["/projects/123/flags?page_token=gASVCQAAAAAAAACMBTF8MnwylC4%3D#4","/projects/123/flags?page_token=gASVCQAAAAAAAACMBTF8MnwylC4%3D#3"]},"reset_url":{"allOf":[{"$ref":"#/components/schemas/UrlValue"}],"description":"Link to the default pages of Flags","example":"..."},"sort_url":{"allOf":[{"$ref":"#/components/schemas/UrlValue"}],"description":"Url template like '.../{?sort}'"},"total_count":{"description":"Total number of Flags for this series.","example":20,"type":"integer"},"total_pages":{"description":"Total number of pages for this series.","example":10,"type":"integer"},"url":{"allOf":[{"$ref":"#/components/schemas/UrlValue"}],"description":"Link to self"}},"required":["url","first_url","last_url","count","page","total_count","total_pages","items"],"type":"object"},"CustomField":{"properties":{"archive_url":{"description":"URL to archive this custom field","readOnly":true,"type":"string"},"archived":{"description":"Whether the custom field is archived","example":false,"type":"boolean"},"created_time":{"description":"Timestamp when the custom field was created","example":"2019-05-08T00:00:00.000Z","format":"date-time","readOnly":true,"type":"string"},"description":{"description":"Description of the custom field","example":"Custom field for tracking feature category","type":"string"},"entity_type":{"description":"Type of entity this custom field applies to","enum":["flag"],"example":"flag","type":"string"},"field_type":{"description":"The data type of the custom field","enum":["text","number","boolean","link","label"],"example":"text","type":"string"},"id":{"description":"Unique identifier for the custom field","example":12345,"format":"int64","readOnly":true,"type":"integer"},"key":{"description":"Unique key for the custom field","example":"feature_category","type":"string"},"name":{"description":"Display name of the custom field","example":"Feature Category","type":"string"},"project_id":{"description":"ID of the project this custom field belongs to","example":12345,"format":"int64","type":"integer"},"required":{"description":"Whether this custom field is required","example":false,"type":"boolean"},"unarchive_url":{"description":"URL to unarchive this custom field","readOnly":true,"type":"string"},"update_url":{"description":"URL to update this custom field","readOnly":true,"type":"string"},"updated_time":{"description":"Timestamp when the custom field was last updated","example":"2019-05-08T00:00:00.000Z","format":"date-time","readOnly":true,"type":"string"},"url":{"description":"URL to this custom field resource","readOnly":true,"type":"string"}},"required":["id","key","name","field_type","entity_type","project_id"],"type":"object"},"CustomFieldRequestBody":{"properties":{"description":{"description":"Description of the custom field","type":"string"},"entity_type":{"description":"Type of entity this custom field applies to","enum":["flag"],"type":"string"},"field_type":{"description":"The data type of the custom field","enum":["text","number","boolean","link","label"],"type":"string"},"key":{"description":"Unique key for the custom field","type":"string"},"name":{"description":"Display name of the custom field","type":"string"},"required":{"description":"Whether this custom field is required","type":"boolean"}},"required":["key","name","field_type","entity_type"],"type":"object"},"CustomFieldUpdateRequestBody":{"properties":{"description":{"description":"Description of the custom field","type":"string"},"name":{"description":"Display name of the custom field","type":"string"},"required":{"description":"Whether this custom field is required","type":"boolean"}},"type":"object"},"CustomFieldsList":{"properties":{"count":{"description":"Number of items on this page","example":10,"type":"integer"},"first_url":{"description":"Link to the first page","type":"string"},"items":{"description":"Array of custom fields","items":{"$ref":"#/components/schemas/CustomField"},"type":"array"},"last_url":{"description":"Link to the last page","type":"string"},"next_url":{"description":"Link to the next page","type":"string"},"page":{"description":"Current page number","example":1,"type":"integer"},"prev_url":{"description":"Link to the previous page","type":"string"},"total_count":{"description":"Total numb

# --- truncated at 32 KB (209 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/optimizely/refs/heads/main/openapi/_original/optimizely-feature-experimentation-optimizely-feature-experimentation-api-openapi.json