Understanding the OpenFeature JSON Schema
The following JSON is based on OpenFeature Schema. It includes three flag keys:
-
newTitle: Since the flag doesn't contain variants, so it behaves as a boolean flag. Here the state is enabled so the flag resolves to
true. -
color: Since
returnTypeis defined as "number", it resolves to a numeric value. There are four variants: "red", "green", "blue" & "orange" that the flag could resolve to. If any rule condition matches for the provided context then the variant in "action" object is resolved. For instance, if the provided email isuser@feature.test, then it'll match with the second rule, which resolves to "red" variant. That means, the resulting value for the flag will be4294901760. And if the provided email doesn't match with any of the rules then a defaultVariant is used, which is "blue". -
increment: The flag is similar to color. For instance, if email is
user@feature.testthen the flag will be resolved to value3. The value is used as a increment factor in the app.
{
"newTitle": {
"state": "enabled"
},
"color": {
"returnType": "number",
"variants": {
"red": 4294901760,
"green": 4278255360,
"blue": 4278190335,
"orange": 4294934352
},
"defaultVariant": "blue",
"state": "enabled",
"rules": [
{
"action": {
"variant": "green"
},
"conditions": [
{
"context": "email",
"op": "ends_with",
"value": "@feature.flag"
}
]
},
{
"action": {
"variant": "red"
},
"conditions": [
{
"context": "email",
"op": "ends_with",
"value": "@feature.test"
}
]
},
{
"action": {
"variant": "orange"
},
"conditions": [
{
"context": "email",
"op": "ends_with",
"value": "@example.com"
}
]
}
]
},
"increment": {
"returnType": "number",
"variants": {
"single": 1,
"double": 2,
"triple": 3
},
"defaultVariant": "single",
"state": "enabled",
"rules": [
{
"action": {
"variant": "double"
},
"conditions": [
{
"context": "email",
"op": "ends_with",
"value": "@feature.flag"
}
]
},
{
"action": {
"variant": "triple"
},
"conditions": [
{
"context": "email",
"op": "ends_with",
"value": "@feature.test"
}
]
}
]
}
}