Optimizely · Schema
Optimizely Feature Flag
Schema representing a feature flag in Optimizely Feature Experimentation, including variables, variations, and environment-specific rulesets for controlled rollouts and experimentation.
A/B TestingContent ManagementCustomer DataE-CommerceExperimentationFeature FlagsMarketing
Properties
| Name | Type | Description |
|---|---|---|
| key | string | Unique key for the feature flag used in SDK code |
| name | string | Human-readable name of the feature flag |
| description | string | Description of the flag's purpose and behavior |
| project_id | integer | The project this flag belongs to |
| variables | array | Remote configuration variables that can be set per variation |
| variations | array | Variations of the flag with different variable values |
| environments | object | Per-environment flag configurations with rulesets |
| created | string | Timestamp when the flag was created |
| last_modified | string | Timestamp when the flag was last modified |
JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://api.optimizely.com/schemas/optimizely/feature-flag.json",
"title": "Optimizely Feature Flag",
"description": "Schema representing a feature flag in Optimizely Feature Experimentation, including variables, variations, and environment-specific rulesets for controlled rollouts and experimentation.",
"type": "object",
"required": ["key", "name"],
"properties": {
"key": {
"type": "string",
"description": "Unique key for the feature flag used in SDK code",
"minLength": 1,
"maxLength": 64,
"pattern": "^[a-z0-9_]+$"
},
"name": {
"type": "string",
"description": "Human-readable name of the feature flag",
"minLength": 1,
"maxLength": 255
},
"description": {
"type": "string",
"description": "Description of the flag's purpose and behavior",
"maxLength": 2000
},
"project_id": {
"type": "integer",
"description": "The project this flag belongs to"
},
"variables": {
"type": "array",
"description": "Remote configuration variables that can be set per variation",
"items": {
"$ref": "#/$defs/Variable"
}
},
"variations": {
"type": "array",
"description": "Variations of the flag with different variable values",
"items": {
"$ref": "#/$defs/FlagVariation"
}
},
"environments": {
"type": "object",
"description": "Per-environment flag configurations with rulesets",
"additionalProperties": {
"$ref": "#/$defs/FlagEnvironment"
}
},
"created": {
"type": "string",
"format": "date-time",
"description": "Timestamp when the flag was created"
},
"last_modified": {
"type": "string",
"format": "date-time",
"description": "Timestamp when the flag was last modified"
}
},
"$defs": {
"Variable": {
"type": "object",
"description": "A remotely configurable variable within a feature flag",
"required": ["key", "type"],
"properties": {
"key": {
"type": "string",
"description": "Unique key for the variable",
"minLength": 1,
"pattern": "^[a-z0-9_]+$"
},
"type": {
"type": "string",
"description": "Data type of the variable",
"enum": ["string", "integer", "double", "boolean", "json"]
},
"default_value": {
"type": "string",
"description": "Default value of the variable when no variation overrides it"
}
}
},
"FlagVariation": {
"type": "object",
"description": "A variation of a feature flag with specific variable values",
"required": ["key", "name"],
"properties": {
"key": {
"type": "string",
"description": "Unique key for the variation",
"minLength": 1,
"pattern": "^[a-z0-9_]+$"
},
"name": {
"type": "string",
"description": "Human-readable name of the variation"
},
"variables": {
"type": "object",
"description": "Variable key-value overrides for this variation",
"additionalProperties": {
"type": "string"
}
}
}
},
"FlagEnvironment": {
"type": "object",
"description": "Flag configuration for a specific environment",
"properties": {
"enabled": {
"type": "boolean",
"description": "Whether the flag is enabled in this environment"
},
"ruleset": {
"$ref": "#/$defs/Ruleset"
}
}
},
"Ruleset": {
"type": "object",
"description": "A collection of rules determining flag behavior in an environment",
"properties": {
"rules": {
"type": "array",
"description": "Ordered list of rules evaluated top-to-bottom",
"items": {
"$ref": "#/$defs/Rule"
}
}
}
},
"Rule": {
"type": "object",
"description": "A rule that determines which variation to deliver to matching visitors",
"required": ["key", "type"],
"properties": {
"id": {
"type": "string",
"description": "Unique identifier for the rule"
},
"key": {
"type": "string",
"description": "Unique key for the rule"
},
"type": {
"type": "string",
"description": "Type of delivery rule",
"enum": ["a/b_test", "targeted_delivery", "personalization"]
},
"audience_conditions": {
"type": "string",
"description": "JSON-encoded audience targeting conditions"
},
"percentage_included": {
"type": "integer",
"description": "Percentage of matching traffic included in this rule",
"minimum": 0,
"maximum": 10000
},
"variations": {
"type": "array",
"description": "Variation allocation within the rule",
"items": {
"type": "object",
"properties": {
"variation_key": {
"type": "string",
"description": "Key of the variation"
},
"weight": {
"type": "integer",
"description": "Traffic weight allocation",
"minimum": 0,
"maximum": 10000
}
}
}
}
}
}
}
}