statsig · Schema

Statsig Feature Gate

A feature gate configuration that controls access to features based on targeting rules, conditions, and user properties. Feature gates are the core primitive for feature flagging in Statsig.

Properties

Name Type Description
id string The unique identifier of the feature gate.
name string The name of the feature gate, used as the key for SDK evaluation.
description string A human-readable description of the gate's purpose and the feature it controls.
isEnabled boolean Whether the gate is currently enabled and actively evaluating rules. When disabled, the gate returns false for all users.
status string The current lifecycle status of the gate.
rules array The ordered list of targeting rules evaluated for this gate. Rules are evaluated top-to-bottom and the first matching rule determines the result.
overrides object
tags array Tags for organizing and categorizing the gate.
targetApps array Target applications this gate is scoped to.
salt string Salt value used for deterministic user assignment hashing.
createdTime integer Timestamp in milliseconds since epoch when the gate was created.
lastModifiedTime integer Timestamp in milliseconds since epoch when the gate was last modified.
View JSON Schema on GitHub

JSON Schema

statsig-feature-gate-schema.json Raw ↑
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://schemas.statsig.com/schemas/statsig/feature-gate.json",
  "title": "Statsig Feature Gate",
  "description": "A feature gate configuration that controls access to features based on targeting rules, conditions, and user properties. Feature gates are the core primitive for feature flagging in Statsig.",
  "type": "object",
  "required": ["name"],
  "properties": {
    "id": {
      "type": "string",
      "description": "The unique identifier of the feature gate."
    },
    "name": {
      "type": "string",
      "description": "The name of the feature gate, used as the key for SDK evaluation.",
      "minLength": 1,
      "maxLength": 256,
      "pattern": "^[a-zA-Z0-9_\\-\\.]+$"
    },
    "description": {
      "type": "string",
      "description": "A human-readable description of the gate's purpose and the feature it controls.",
      "maxLength": 4096
    },
    "isEnabled": {
      "type": "boolean",
      "description": "Whether the gate is currently enabled and actively evaluating rules. When disabled, the gate returns false for all users.",
      "default": true
    },
    "status": {
      "type": "string",
      "description": "The current lifecycle status of the gate.",
      "enum": ["active", "disabled", "launched", "archived"]
    },
    "rules": {
      "type": "array",
      "description": "The ordered list of targeting rules evaluated for this gate. Rules are evaluated top-to-bottom and the first matching rule determines the result.",
      "items": {
        "$ref": "#/$defs/Rule"
      }
    },
    "overrides": {
      "$ref": "#/$defs/Overrides"
    },
    "tags": {
      "type": "array",
      "description": "Tags for organizing and categorizing the gate.",
      "items": {
        "type": "string"
      }
    },
    "targetApps": {
      "type": "array",
      "description": "Target applications this gate is scoped to.",
      "items": {
        "type": "string"
      }
    },
    "salt": {
      "type": "string",
      "description": "Salt value used for deterministic user assignment hashing."
    },
    "createdTime": {
      "type": "integer",
      "description": "Timestamp in milliseconds since epoch when the gate was created."
    },
    "lastModifiedTime": {
      "type": "integer",
      "description": "Timestamp in milliseconds since epoch when the gate was last modified."
    }
  },
  "$defs": {
    "Rule": {
      "type": "object",
      "description": "A targeting rule that defines conditions under which the gate passes or returns specific values.",
      "properties": {
        "id": {
          "type": "string",
          "description": "The unique identifier of the rule."
        },
        "name": {
          "type": "string",
          "description": "A human-readable name for the rule."
        },
        "passPercentage": {
          "type": "number",
          "description": "The percentage of users matching conditions who pass the rule.",
          "minimum": 0,
          "maximum": 100,
          "default": 100
        },
        "conditions": {
          "type": "array",
          "description": "The conditions that must all be met for this rule to apply. Conditions within a rule are ANDed together.",
          "items": {
            "$ref": "#/$defs/Condition"
          }
        },
        "returnValue": {
          "type": "object",
          "description": "The value returned when this rule matches, used for dynamic configs."
        },
        "environments": {
          "type": "array",
          "description": "Environments where this rule is active (e.g., production, staging).",
          "items": {
            "type": "string"
          }
        }
      }
    },
    "Condition": {
      "type": "object",
      "description": "A condition within a targeting rule that evaluates user properties against specified criteria.",
      "required": ["type"],
      "properties": {
        "type": {
          "type": "string",
          "description": "The type of condition to evaluate.",
          "enum": [
            "user_id",
            "email",
            "ip_address",
            "country",
            "app_version",
            "custom_field",
            "browser_name",
            "browser_version",
            "os_name",
            "os_version",
            "passes_gate",
            "fails_gate",
            "environment",
            "passes_segment",
            "fails_segment",
            "time",
            "unit_id"
          ]
        },
        "targetValue": {
          "description": "The value or array of values to compare against."
        },
        "operator": {
          "type": "string",
          "description": "The comparison operator to use.",
          "enum": [
            "any",
            "none",
            "str_starts_with_any",
            "str_ends_with_any",
            "str_contains_any",
            "str_contains_none",
            "str_matches",
            "gt",
            "gte",
            "lt",
            "lte",
            "version_gt",
            "version_gte",
            "version_lt",
            "version_lte",
            "before",
            "after",
            "on"
          ]
        },
        "field": {
          "type": "string",
          "description": "The user field to evaluate, used with custom_field condition type."
        }
      }
    },
    "Overrides": {
      "type": "object",
      "description": "User and ID overrides that force specific evaluation results, bypassing normal rule evaluation.",
      "properties": {
        "userOverrides": {
          "type": "array",
          "description": "User-specific overrides by user ID.",
          "items": {
            "type": "object",
            "properties": {
              "userID": {
                "type": "string",
                "description": "The user ID to override."
              },
              "value": {
                "type": "boolean",
                "description": "The forced evaluation result for this user."
              }
            },
            "required": ["userID", "value"]
          }
        },
        "idOverrides": {
          "type": "array",
          "description": "ID-based overrides for custom ID types.",
          "items": {
            "type": "object",
            "properties": {
              "ids": {
                "type": "array",
                "description": "The IDs to override.",
                "items": {
                  "type": "string"
                }
              },
              "value": {
                "type": "boolean",
                "description": "The forced evaluation result for these IDs."
              }
            },
            "required": ["ids", "value"]
          }
        }
      }
    }
  }
}