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
View JSON Schema on GitHub

JSON Schema

optimizely-feature-flag-schema.json Raw ↑
{
  "$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
              }
            }
          }
        }
      }
    }
  }
}