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
Responses
- 200
clientFeaturesSchema
- application/json
- Schema
- Example (from schema)
Schema
Array [
Array [
Array [
]
Array [
]
]
Array [
Array [
]
]
Array [
]
]
Array [
Array [
]
]
A version number for the format used in the response. Most Unleash instances now return version 2, which includes segments as a separate array
2
features
object[]
required
A list of feature flags with their configuration
The unique name of a feature flag. Is validated to be URL safe on creation
new.payment.flow.stripe
What kind of feature flag is this. Refer to the documentation on feature flag types for more information
release
A description of the flag
No variants here
Whether 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
true
If this is true Unleash believes this feature flag has been active longer than Unleash expects a flag of this type to be active
false
Set to true if SDKs should trigger impression events when this flag is evaluated
false
Which project this feature flag belongs to
new.payment.flow
strategies
object[]
Evaluation strategies for this flag. Each entry in this list will be evaluated and ORed together
A uuid for the feature strategy
6b5157cb-343a-41e7-bfa3-7b4ec3044840
The name or type of strategy
flexibleRollout
A descriptive title for the strategy
Gradual Rollout 25-Prod
A toggle to disable the strategy. defaults to false. Disabled strategies are not evaluated or returned to the SDKs
false
The name or feature the strategy is attached to
myAwesomeFeature
The order of the strategy in the list
9999
A list of segment ids attached to the strategy
[1,2]
constraints
object[]
A list of the constraints attached to the strategy. See https://docs.getunleash.io/reference/strategy-constraints
The name of the context field that this constraint should apply to.
appName
The operator to use when evaluating this constraint. For more information about the various operators, refer to the strategy constraint operator documentation.
Possible 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
]
IN
Whether the operator should be case sensitive or not. Defaults to false
(being case sensitive).
false
Whether the result should be negated or not. If true
, will turn a true
result into a false
result and vice versa.
false
The context values that should be used for constraint evaluation. Use this property instead of value
for properties that accept multiple values.
["my-app","my-other-app"]
The context value that should be used for constraint evaluation. Use this property instead of values
for properties that only accept single values.
my-app
variants
object[]
Strategy level variants
The variant name. Must be unique for this feature flag
blue_group
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
Possible values: <= 1000
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. Refer to the variant weight documentation.
Possible values: [variable
, fix
]
fix
The stickiness to use for distribution of this variant. Stickiness is how Unleash guarantees that the same user gets the same variant every time
custom.context.field
payload
object
Extra data configured for this variant
The type of the value. Commonly used types are string, number, json and csv.
Possible values: [json
, csv
, string
, number
]
The actual value of payload
parameters
object
A list of parameters for a strategy
variants
object[]
nullable
Variants configured for this flag
The variants name. Is unique for this feature flag
blue_group
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
Possible values: <= 1000
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
Possible values: [variable
, fix
]
variable
Stickiness is how Unleash guarantees that the same user gets the same variant every time
custom.context.field
payload
object
Extra data configured for this variant
The type of the value. Commonly used types are string, number, json and csv.
Possible values: [json
, csv
, string
, number
]
The 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.
The name of the context field used to determine overrides
userId
Which values that should be overriden
["red","blue"]
dependencies
object[]
Feature dependencies for this flag
The name of the feature we depend on.
parent_feature
Whether the parent feature should be enabled. When false
variants are ignored. true
by default.
false
The list of variants the parent feature should resolve to. Leave empty when you only want to check the enabled
status.
["variantA","variantB"]
segments
object[]
A list of Segments configured for this Unleash instance
The segment's id.
The name of the segment.
segment A
constraints
object[]
required
List of constraints that determine which users are part of the segment
The name of the context field that this constraint should apply to.
appName
The operator to use when evaluating this constraint. For more information about the various operators, refer to the strategy constraint operator documentation.
Possible 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
]
IN
Whether the operator should be case sensitive or not. Defaults to false
(being case sensitive).
false
Whether the result should be negated or not. If true
, will turn a true
result into a false
result and vice versa.
false
The context values that should be used for constraint evaluation. Use this property instead of value
for properties that accept multiple values.
["my-app","my-other-app"]
The context value that should be used for constraint evaluation. Use this property instead of values
for properties that only accept single values.
my-app
query
object
A summary of filters and parameters sent to the endpoint. Used by the server to build the features and segments response
Features tagged with one of these tags are included
[["simple:payment","simple:stripejourney"]]
Features 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
["new.payment.flow"]
Features are filtered to only include features whose name starts with this prefix
payment
Strategies for the feature flag configured for this environment are included. This is now handled by API tokens and was marked as deprecated in v5
Set 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
true
{
"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
}
}