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
              }
            }
          }
        }
      }
    }
  }
}

Work with this as data

Every JSON Schema here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for schemas

4 MCP tools reach this
  • find_json_schemasBrowse and filter every JSON Schema in the catalog.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This JSON Schema
curl "https://apis.io/api/v1/json-schemas/optimizely-feature-flag"
All schemas
curl "https://apis.io/api/v1/json-schemas?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.