flagsmith · Schema
Flagsmith Feature Flag
A feature flag definition in Flagsmith including its metadata, type, default configuration, and multivariate options. Feature flags are the core primitive in Flagsmith for controlling feature rollouts and remote configuration.
Properties
| Name | Type | Description |
|---|---|---|
| id | integer | The unique identifier for this feature flag |
| name | string | The name of the feature flag, used as the key in SDK lookups |
| description | stringnull | A human-readable description of the feature flag and its purpose |
| created_date | string | The date and time the feature flag was created |
| initial_value | stringnull | The initial value assigned to the feature when it was created |
| default_enabled | boolean | Whether the feature flag is enabled by default in new environments |
| type | string | The type of feature flag. STANDARD for simple on/off flags with an optional value, MULTIVARIATE for flags with multiple weighted value variations |
| project | integer | The ID of the project this feature flag belongs to |
| is_archived | boolean | Whether the feature flag is archived and hidden from the dashboard by default |
| owners | array | The users who are designated as owners of this feature flag |
| tags | array | The IDs of tags associated with this feature flag for organization |
| multivariate_options | array | The multivariate value options available for this feature flag when the type is MULTIVARIATE |
JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://flagsmith.com/schemas/flagsmith/feature-flag.json",
"title": "Flagsmith Feature Flag",
"description": "A feature flag definition in Flagsmith including its metadata, type, default configuration, and multivariate options. Feature flags are the core primitive in Flagsmith for controlling feature rollouts and remote configuration.",
"type": "object",
"required": ["name"],
"properties": {
"id": {
"type": "integer",
"description": "The unique identifier for this feature flag"
},
"name": {
"type": "string",
"description": "The name of the feature flag, used as the key in SDK lookups",
"pattern": "^[-_.a-zA-Z0-9]+$",
"maxLength": 2000,
"minLength": 1
},
"description": {
"type": ["string", "null"],
"description": "A human-readable description of the feature flag and its purpose"
},
"created_date": {
"type": "string",
"format": "date-time",
"description": "The date and time the feature flag was created"
},
"initial_value": {
"type": ["string", "null"],
"description": "The initial value assigned to the feature when it was created"
},
"default_enabled": {
"type": "boolean",
"description": "Whether the feature flag is enabled by default in new environments"
},
"type": {
"type": "string",
"enum": ["STANDARD", "MULTIVARIATE"],
"description": "The type of feature flag. STANDARD for simple on/off flags with an optional value, MULTIVARIATE for flags with multiple weighted value variations"
},
"project": {
"type": "integer",
"description": "The ID of the project this feature flag belongs to"
},
"is_archived": {
"type": "boolean",
"description": "Whether the feature flag is archived and hidden from the dashboard by default"
},
"owners": {
"type": "array",
"description": "The users who are designated as owners of this feature flag",
"items": {
"$ref": "#/$defs/FeatureOwner"
}
},
"tags": {
"type": "array",
"description": "The IDs of tags associated with this feature flag for organization",
"items": {
"type": "integer"
}
},
"multivariate_options": {
"type": "array",
"description": "The multivariate value options available for this feature flag when the type is MULTIVARIATE",
"items": {
"$ref": "#/$defs/MultivariateOption"
}
}
},
"$defs": {
"FeatureOwner": {
"type": "object",
"description": "A user designated as an owner of a feature flag",
"properties": {
"id": {
"type": "integer",
"description": "The unique identifier for the user"
},
"email": {
"type": "string",
"format": "email",
"description": "The email address of the user"
}
}
},
"MultivariateOption": {
"type": "object",
"description": "A value variation for a multivariate feature flag with a percentage allocation",
"properties": {
"id": {
"type": "integer",
"description": "The unique identifier for this multivariate option"
},
"type": {
"type": "string",
"description": "The data type of the option value"
},
"string_value": {
"type": ["string", "null"],
"description": "The string value of this option"
},
"integer_value": {
"type": ["integer", "null"],
"description": "The integer value of this option"
},
"boolean_value": {
"type": ["boolean", "null"],
"description": "The boolean value of this option"
},
"default_percentage_allocation": {
"type": "number",
"minimum": 0,
"maximum": 100,
"description": "The default percentage of users who will receive this value variation"
}
}
},
"FeatureState": {
"type": "object",
"description": "The state of a feature flag within a specific environment, including its enabled status and current value",
"properties": {
"id": {
"type": "integer",
"description": "The unique identifier for this feature state"
},
"feature": {
"type": "integer",
"description": "The ID of the feature flag"
},
"enabled": {
"type": "boolean",
"description": "Whether the feature flag is currently enabled in this environment"
},
"feature_state_value": {
"description": "The current value of the feature flag in this environment",
"type": ["string", "integer", "boolean", "null"]
},
"environment": {
"type": "integer",
"description": "The ID of the environment"
},
"identity": {
"type": ["integer", "null"],
"description": "The identity ID if this is an identity-specific override"
},
"feature_segment": {
"type": ["integer", "null"],
"description": "The feature segment ID if this is a segment override"
}
}
},
"Segment": {
"type": "object",
"description": "A segment defining a group of users based on trait-based rules for targeted flag delivery",
"required": ["name", "rules"],
"properties": {
"id": {
"type": "integer",
"description": "The unique identifier for this segment"
},
"name": {
"type": "string",
"description": "The name of the segment"
},
"description": {
"type": ["string", "null"],
"description": "A description of the segment and its targeting criteria"
},
"project": {
"type": "integer",
"description": "The ID of the project this segment belongs to"
},
"rules": {
"type": "array",
"description": "The rules that define membership in this segment",
"items": {
"$ref": "#/$defs/SegmentRule"
}
}
}
},
"SegmentRule": {
"type": "object",
"description": "A rule within a segment combining conditions with logical operators",
"properties": {
"type": {
"type": "string",
"enum": ["ALL", "ANY", "NONE"],
"description": "The logical operator for combining conditions. ALL requires all conditions to match, ANY requires at least one, NONE requires none to match"
},
"rules": {
"type": "array",
"description": "Nested sub-rules for complex targeting logic",
"items": {
"$ref": "#/$defs/SegmentRule"
}
},
"conditions": {
"type": "array",
"description": "The trait-based conditions that make up this rule",
"items": {
"$ref": "#/$defs/SegmentCondition"
}
}
}
},
"SegmentCondition": {
"type": "object",
"description": "A condition evaluating a user trait against a value using a comparison operator",
"properties": {
"operator": {
"type": "string",
"enum": [
"EQUAL",
"NOT_EQUAL",
"GREATER_THAN",
"GREATER_THAN_INCLUSIVE",
"LESS_THAN",
"LESS_THAN_INCLUSIVE",
"CONTAINS",
"NOT_CONTAINS",
"REGEX",
"PERCENTAGE_SPLIT",
"IS_SET",
"IS_NOT_SET",
"IN"
],
"description": "The comparison operator to use when evaluating the trait"
},
"property_": {
"type": "string",
"description": "The trait key to evaluate against"
},
"value": {
"type": "string",
"description": "The value to compare the trait against"
}
}
},
"Identity": {
"type": "object",
"description": "A user identity within an environment with associated traits",
"required": ["identifier"],
"properties": {
"id": {
"type": "integer",
"description": "The unique identifier for this identity"
},
"identifier": {
"type": "string",
"description": "The user-provided identifier for this identity, typically a user ID or email"
},
"environment": {
"type": "integer",
"description": "The ID of the environment this identity belongs to"
},
"traits": {
"type": "array",
"description": "The traits associated with this identity",
"items": {
"$ref": "#/$defs/Trait"
}
}
}
},
"Trait": {
"type": "object",
"description": "A key-value pair associated with an identity used for segment evaluation and personalized flag delivery",
"required": ["trait_key", "trait_value"],
"properties": {
"id": {
"type": "integer",
"description": "The unique identifier for this trait"
},
"trait_key": {
"type": "string",
"description": "The key name of the trait"
},
"trait_value": {
"description": "The value of the trait, which can be a string, integer, float, or boolean",
"type": ["string", "integer", "number", "boolean"]
},
"transient": {
"type": "boolean",
"description": "When true, this trait is used for evaluation only and is not persisted"
}
}
}
}
}