Get all flags (SDK)
GET /api/client/features
Returns the SDK configuration for all feature flags that are available to the provided API key. Used by SDKs to configure local evaluation
Request
- 200
clientFeaturesSchema
- application/json
- Schema
- Example (from schema)
Schema
- version number required
A version number for the format used in the response. Most Unleash instances now return version 2, which includes segments as a separate array
features object[]required
A list of feature flags with their configuration
Array [name string requiredThe unique name of a feature flag. Is validated to be URL safe on creation
type stringWhat kind of feature flag is this. Refer to the documentation on feature flag types for more information
description string nullableA description of the flag
enabled boolean requiredWhether the feature flag is enabled for the current API key or not. This is ANDed with the evaluation results of the strategies list, so if this is false, the evaluation result will always be false
stale booleanIf this is true Unleash believes this feature flag has been active longer than Unleash expects a flag of this type to be active
impressionData boolean nullableSet to true if SDKs should trigger impression events when this flag is evaluated
project stringWhich project this feature flag belongs to
strategies object[]
Evaluation strategies for this flag. Each entry in this list will be evaluated and ORed together
Array [id stringA uuid for the feature strategy
name string requiredThe name or type of strategy
title string nullableA descriptive title for the strategy
disabled boolean nullableA toggle to disable the strategy. defaults to false. Disabled strategies are not evaluated or returned to the SDKs
featureName stringThe name or feature the strategy is attached to
sortOrder numberThe order of the strategy in the list
segments number[]A list of segment ids attached to the strategy
constraints object[]
A list of the constraints attached to the strategy. See https://docs.getunleash.io/reference/strategy-constraints
Array [contextName string requiredThe name of the context field that this constraint should apply to.
operator string requiredPossible values: [
NOT_IN
,IN
,STR_ENDS_WITH
,STR_STARTS_WITH
,STR_CONTAINS
,NUM_EQ
,NUM_GT
,NUM_GTE
,NUM_LT
,NUM_LTE
,DATE_AFTER
,DATE_BEFORE
,SEMVER_EQ
,SEMVER_GT
,SEMVER_LT
]The operator to use when evaluating this constraint. For more information about the various operators, refer to the strategy constraint operator documentation.
caseInsensitive booleanDefault value:
false
Whether the operator should be case sensitive or not. Defaults to
false
(being case sensitive).inverted booleanDefault value:
false
Whether the result should be negated or not. If
true
, will turn atrue
result into afalse
result and vice versa.values string[]The context values that should be used for constraint evaluation. Use this property instead of
value
for properties that accept multiple values.value stringThe context value that should be used for constraint evaluation. Use this property instead of
values
for properties that only accept single values.]variants object[]
Strategy level variants
Array [name string requiredThe variant name. Must be unique for this feature flag
weight integer requiredPossible values:
<= 1000
The weight is the likelihood of any one user getting this variant. It is an integer between 0 and 1000. See the section on variant weights for more information
weightType string requiredPossible values: [
variable
,fix
]Set to
fix
if this variant must have exactly the weight allocated to it. If the type isvariable
, the weight will adjust so that the total weight of all variants adds up to 1000. Refer to the variant weight documentation.stickiness string requiredThe stickiness to use for distribution of this variant. Stickiness is how Unleash guarantees that the same user gets the same variant every time
payload object
Extra data configured for this variant
type string requiredPossible values: [
json
,csv
,string
,number
]The type of the value. Commonly used types are string, number, json and csv.
value string requiredThe actual value of payload
]parameters object
A list of parameters for a strategy
property name* string]variants object[]nullable
Variants configured for this flag
Array [name string requiredThe variants name. Is unique for this feature flag
weight number requiredPossible values:
<= 1000
The weight is the likelihood of any one user getting this variant. It is a number between 0 and 1000. See the section on variant weights for more information
weightType stringPossible values: [
variable
,fix
]Set to fix if this variant must have exactly the weight allocated to it. If the type is variable, the weight will adjust so that the total weight of all variants adds up to 1000
stickiness stringStickiness is how Unleash guarantees that the same user gets the same variant every time
payload object
Extra data configured for this variant
type string requiredPossible values: [
json
,csv
,string
,number
]The type of the value. Commonly used types are string, number, json and csv.
value string requiredThe actual value of payload
overrides object[]
Overrides assigning specific variants to specific users. The weighting system automatically assigns users to specific groups for you, but any overrides in this list will take precedence.
Array [contextName string requiredThe name of the context field used to determine overrides
values string[] requiredWhich values that should be overriden
]]dependencies object[]
Feature dependencies for this flag
Array [feature string requiredThe name of the feature we depend on.
enabled booleanWhether the parent feature should be enabled. When
false
variants are ignored.true
by default.variants string[]The list of variants the parent feature should resolve to. Leave empty when you only want to check the
enabled
status.]]segments object[]
A list of Segments configured for this Unleash instance
Array [id number requiredThe segment's id.
name stringThe name of the segment.
constraints object[]required
List of constraints that determine which users are part of the segment
Array [contextName string requiredThe name of the context field that this constraint should apply to.
operator string requiredPossible values: [
NOT_IN
,IN
,STR_ENDS_WITH
,STR_STARTS_WITH
,STR_CONTAINS
,NUM_EQ
,NUM_GT
,NUM_GTE
,NUM_LT
,NUM_LTE
,DATE_AFTER
,DATE_BEFORE
,SEMVER_EQ
,SEMVER_GT
,SEMVER_LT
]The operator to use when evaluating this constraint. For more information about the various operators, refer to the strategy constraint operator documentation.
caseInsensitive booleanDefault value:
false
Whether the operator should be case sensitive or not. Defaults to
false
(being case sensitive).inverted booleanDefault value:
false
Whether the result should be negated or not. If
true
, will turn atrue
result into afalse
result and vice versa.values string[]The context values that should be used for constraint evaluation. Use this property instead of
value
for properties that accept multiple values.value stringThe context value that should be used for constraint evaluation. Use this property instead of
values
for properties that only accept single values.]]query object
A summary of filters and parameters sent to the endpoint. Used by the server to build the features and segments response
tag array[]Features tagged with one of these tags are included
project string[] deprecatedFeatures that are part of these projects are included in this response. This is now handled by API tokens and was marked as deprecated in v5
namePrefix stringFeatures are filtered to only include features whose name starts with this prefix
environment string deprecatedStrategies for the feature flag configured for this environment are included. This is now handled by API tokens and was marked as deprecated in v5
inlineSegmentConstraints booleanSet to true if requesting client does not support Unleash-Client-Specification 4.2.2 or newer. Modern SDKs will have this set to false, since they will be able to merge constraints and segments themselves
{
"version": 2,
"features": [
{
"name": "new.payment.flow.stripe",
"type": "release",
"description": "No variants here",
"enabled": true,
"stale": false,
"impressionData": false,
"project": "new.payment.flow",
"strategies": [
{
"id": "6b5157cb-343a-41e7-bfa3-7b4ec3044840",
"name": "flexibleRollout",
"title": "Gradual Rollout 25-Prod",
"disabled": false,
"featureName": "myAwesomeFeature",
"sortOrder": 9999,
"segments": [
1,
2
],
"constraints": [
{
"contextName": "appName",
"operator": "IN",
"caseInsensitive": false,
"inverted": false,
"values": [
"my-app",
"my-other-app"
],
"value": "my-app"
}
],
"variants": [
{
"name": "blue_group",
"weight": 0,
"weightType": "fix",
"stickiness": "custom.context.field",
"payload": {
"type": "json",
"value": "{\"color\": \"red\"}"
}
}
],
"parameters": {}
}
],
"variants": [
{
"name": "blue_group",
"weight": 0,
"weightType": "variable",
"stickiness": "custom.context.field",
"payload": {
"type": "json",
"value": "{\"color\": \"red\"}"
},
"overrides": [
{
"contextName": "userId",
"values": [
"red",
"blue"
]
}
]
}
],
"dependencies": [
{
"feature": "parent_feature",
"enabled": false,
"variants": [
"variantA",
"variantB"
]
}
]
}
],
"segments": [
{
"id": 0,
"name": "segment A",
"constraints": [
{
"contextName": "appName",
"operator": "IN",
"caseInsensitive": false,
"inverted": false,
"values": [
"my-app",
"my-other-app"
],
"value": "my-app"
}
]
}
],
"query": {
"tag": [
[
"simple:payment",
"simple:stripejourney"
]
],
"namePrefix": "payment",
"inlineSegmentConstraints": true
}
}