Create Rule
Create a new rule. A rule decides at which proportions user from a specific segment should be assigned variants from the flag.
curl --request POST \
--url https://flags.eu.confidence.dev/v1/flags/{flag}/rules \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"segment": "<string>",
"assignmentSpec": {
"bucketCount": {},
"assignments": [
{
"assignmentId": "<string>",
"fallthrough": {},
"clientDefault": {},
"bucketRanges": [
{
"lower": {},
"upper": {}
}
]
}
]
},
"enabled": true,
"name": "<string>",
"description": "<string>",
"targetingKeySelector": "<string>",
"environments": [
"<string>"
],
"labels": [
{}
],
"materializationSpec": {
"writeMaterialization": "<string>",
"readMaterialization": "<string>",
"mode": {
"materializationMustMatch": true,
"segmentTargetingCanBeIgnored": true
}
}
}
'import requests
url = "https://flags.eu.confidence.dev/v1/flags/{flag}/rules"
payload = {
"segment": "<string>",
"assignmentSpec": {
"bucketCount": {},
"assignments": [
{
"assignmentId": "<string>",
"fallthrough": {},
"clientDefault": {},
"bucketRanges": [
{
"lower": {},
"upper": {}
}
]
}
]
},
"enabled": True,
"name": "<string>",
"description": "<string>",
"targetingKeySelector": "<string>",
"environments": ["<string>"],
"labels": [{}],
"materializationSpec": {
"writeMaterialization": "<string>",
"readMaterialization": "<string>",
"mode": {
"materializationMustMatch": True,
"segmentTargetingCanBeIgnored": True
}
}
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
segment: '<string>',
assignmentSpec: {
bucketCount: {},
assignments: [
{
assignmentId: '<string>',
fallthrough: {},
clientDefault: {},
bucketRanges: [{lower: {}, upper: {}}]
}
]
},
enabled: true,
name: '<string>',
description: '<string>',
targetingKeySelector: '<string>',
environments: ['<string>'],
labels: [{}],
materializationSpec: {
writeMaterialization: '<string>',
readMaterialization: '<string>',
mode: {materializationMustMatch: true, segmentTargetingCanBeIgnored: true}
}
})
};
fetch('https://flags.eu.confidence.dev/v1/flags/{flag}/rules', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://flags.eu.confidence.dev/v1/flags/{flag}/rules",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'segment' => '<string>',
'assignmentSpec' => [
'bucketCount' => [
],
'assignments' => [
[
'assignmentId' => '<string>',
'fallthrough' => [
],
'clientDefault' => [
],
'bucketRanges' => [
[
'lower' => [
],
'upper' => [
]
]
]
]
]
],
'enabled' => true,
'name' => '<string>',
'description' => '<string>',
'targetingKeySelector' => '<string>',
'environments' => [
'<string>'
],
'labels' => [
[
]
],
'materializationSpec' => [
'writeMaterialization' => '<string>',
'readMaterialization' => '<string>',
'mode' => [
'materializationMustMatch' => true,
'segmentTargetingCanBeIgnored' => true
]
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://flags.eu.confidence.dev/v1/flags/{flag}/rules"
payload := strings.NewReader("{\n \"segment\": \"<string>\",\n \"assignmentSpec\": {\n \"bucketCount\": {},\n \"assignments\": [\n {\n \"assignmentId\": \"<string>\",\n \"fallthrough\": {},\n \"clientDefault\": {},\n \"bucketRanges\": [\n {\n \"lower\": {},\n \"upper\": {}\n }\n ]\n }\n ]\n },\n \"enabled\": true,\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"targetingKeySelector\": \"<string>\",\n \"environments\": [\n \"<string>\"\n ],\n \"labels\": [\n {}\n ],\n \"materializationSpec\": {\n \"writeMaterialization\": \"<string>\",\n \"readMaterialization\": \"<string>\",\n \"mode\": {\n \"materializationMustMatch\": true,\n \"segmentTargetingCanBeIgnored\": true\n }\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://flags.eu.confidence.dev/v1/flags/{flag}/rules")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"segment\": \"<string>\",\n \"assignmentSpec\": {\n \"bucketCount\": {},\n \"assignments\": [\n {\n \"assignmentId\": \"<string>\",\n \"fallthrough\": {},\n \"clientDefault\": {},\n \"bucketRanges\": [\n {\n \"lower\": {},\n \"upper\": {}\n }\n ]\n }\n ]\n },\n \"enabled\": true,\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"targetingKeySelector\": \"<string>\",\n \"environments\": [\n \"<string>\"\n ],\n \"labels\": [\n {}\n ],\n \"materializationSpec\": {\n \"writeMaterialization\": \"<string>\",\n \"readMaterialization\": \"<string>\",\n \"mode\": {\n \"materializationMustMatch\": true,\n \"segmentTargetingCanBeIgnored\": true\n }\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://flags.eu.confidence.dev/v1/flags/{flag}/rules")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"segment\": \"<string>\",\n \"assignmentSpec\": {\n \"bucketCount\": {},\n \"assignments\": [\n {\n \"assignmentId\": \"<string>\",\n \"fallthrough\": {},\n \"clientDefault\": {},\n \"bucketRanges\": [\n {\n \"lower\": {},\n \"upper\": {}\n }\n ]\n }\n ]\n },\n \"enabled\": true,\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"targetingKeySelector\": \"<string>\",\n \"environments\": [\n \"<string>\"\n ],\n \"labels\": [\n {}\n ],\n \"materializationSpec\": {\n \"writeMaterialization\": \"<string>\",\n \"readMaterialization\": \"<string>\",\n \"mode\": {\n \"materializationMustMatch\": true,\n \"segmentTargetingCanBeIgnored\": true\n }\n }\n}"
response = http.request(request)
puts response.read_body{
"segment": "<string>",
"assignmentSpec": {
"bucketCount": {},
"assignments": [
{
"assignmentId": "<string>",
"variant": {
"variant": "<string>"
},
"fallthrough": {},
"clientDefault": {},
"bucketRanges": [
{
"lower": {},
"upper": {}
}
]
}
]
},
"usageMetadata": {
"resolveCount": 123,
"applyCount": 123,
"lastResolveTime": {},
"lastApplyTime": {},
"assignmentUsageMetadata": [
{
"assignmentId": "<string>",
"resolveCount": 123,
"applyCount": 123,
"lastApplyTime": {},
"emptyTargetingKeyCount": 123
}
]
},
"enabled": true,
"createTime": {},
"updateTime": {},
"creator": "<string>",
"updater": "<string>",
"name": "<string>",
"description": "<string>",
"targetingKeySelector": "<string>",
"environments": [
"<string>"
],
"labels": [
{}
],
"materializationSpec": {
"writeMaterialization": "<string>",
"readMaterialization": "<string>",
"mode": {
"materializationMustMatch": true,
"segmentTargetingCanBeIgnored": true
}
}
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Path Parameters
Query Parameters
The ID to use for the rule, which will become the final component of the rule's resource name.
This value should be 4-63 characters, and valid characters are /[a-z][0-9]-/.
Body
A reference to the segment that this rule uses to specify entities that are eligible.
Specification of how an entity should be randomly assigned to values.
Show child attributes
Show child attributes
Decides if the rule should be enabled for resolve or not.
The resource name of the rule.
For example:
flags/my-flag/rules/1bhq4c2zqigdzqg6ufni
A description for the rule.
Selector of what key to randomize on from the evaluation context. "targeting_key" is the default if not specified
List of environments this rule is enabled for. If this list is empty, the rule is enabled for all environments.
General set of labels for this resource.
Show child attributes
Show child attributes
Specifies if materializations are written to/read from
Show child attributes
Show child attributes
Response
Returns a Flag.Rule.
A rule that decides how a subset of the flags variants are assigned.
A reference to the segment that this rule uses to specify entities that are eligible.
Specification of how an entity should be randomly assigned to values.
Show child attributes
Show child attributes
Metadata about how the flag has been resolved.
Show child attributes
Show child attributes
Decides if the rule should be enabled for resolve or not.
Time when the rule was first created.
Time when the flag was last updated.
Reference to the identity that created this rule.
Reference to the identity that last updated this rule.
The resource name of the rule.
For example:
flags/my-flag/rules/1bhq4c2zqigdzqg6ufni
A description for the rule.
Selector of what key to randomize on from the evaluation context. "targeting_key" is the default if not specified
List of environments this rule is enabled for. If this list is empty, the rule is enabled for all environments.
General set of labels for this resource.
Show child attributes
Show child attributes
Specifies if materializations are written to/read from
Show child attributes
Show child attributes
Was this page helpful?
curl --request POST \
--url https://flags.eu.confidence.dev/v1/flags/{flag}/rules \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"segment": "<string>",
"assignmentSpec": {
"bucketCount": {},
"assignments": [
{
"assignmentId": "<string>",
"fallthrough": {},
"clientDefault": {},
"bucketRanges": [
{
"lower": {},
"upper": {}
}
]
}
]
},
"enabled": true,
"name": "<string>",
"description": "<string>",
"targetingKeySelector": "<string>",
"environments": [
"<string>"
],
"labels": [
{}
],
"materializationSpec": {
"writeMaterialization": "<string>",
"readMaterialization": "<string>",
"mode": {
"materializationMustMatch": true,
"segmentTargetingCanBeIgnored": true
}
}
}
'import requests
url = "https://flags.eu.confidence.dev/v1/flags/{flag}/rules"
payload = {
"segment": "<string>",
"assignmentSpec": {
"bucketCount": {},
"assignments": [
{
"assignmentId": "<string>",
"fallthrough": {},
"clientDefault": {},
"bucketRanges": [
{
"lower": {},
"upper": {}
}
]
}
]
},
"enabled": True,
"name": "<string>",
"description": "<string>",
"targetingKeySelector": "<string>",
"environments": ["<string>"],
"labels": [{}],
"materializationSpec": {
"writeMaterialization": "<string>",
"readMaterialization": "<string>",
"mode": {
"materializationMustMatch": True,
"segmentTargetingCanBeIgnored": True
}
}
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
segment: '<string>',
assignmentSpec: {
bucketCount: {},
assignments: [
{
assignmentId: '<string>',
fallthrough: {},
clientDefault: {},
bucketRanges: [{lower: {}, upper: {}}]
}
]
},
enabled: true,
name: '<string>',
description: '<string>',
targetingKeySelector: '<string>',
environments: ['<string>'],
labels: [{}],
materializationSpec: {
writeMaterialization: '<string>',
readMaterialization: '<string>',
mode: {materializationMustMatch: true, segmentTargetingCanBeIgnored: true}
}
})
};
fetch('https://flags.eu.confidence.dev/v1/flags/{flag}/rules', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://flags.eu.confidence.dev/v1/flags/{flag}/rules",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'segment' => '<string>',
'assignmentSpec' => [
'bucketCount' => [
],
'assignments' => [
[
'assignmentId' => '<string>',
'fallthrough' => [
],
'clientDefault' => [
],
'bucketRanges' => [
[
'lower' => [
],
'upper' => [
]
]
]
]
]
],
'enabled' => true,
'name' => '<string>',
'description' => '<string>',
'targetingKeySelector' => '<string>',
'environments' => [
'<string>'
],
'labels' => [
[
]
],
'materializationSpec' => [
'writeMaterialization' => '<string>',
'readMaterialization' => '<string>',
'mode' => [
'materializationMustMatch' => true,
'segmentTargetingCanBeIgnored' => true
]
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://flags.eu.confidence.dev/v1/flags/{flag}/rules"
payload := strings.NewReader("{\n \"segment\": \"<string>\",\n \"assignmentSpec\": {\n \"bucketCount\": {},\n \"assignments\": [\n {\n \"assignmentId\": \"<string>\",\n \"fallthrough\": {},\n \"clientDefault\": {},\n \"bucketRanges\": [\n {\n \"lower\": {},\n \"upper\": {}\n }\n ]\n }\n ]\n },\n \"enabled\": true,\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"targetingKeySelector\": \"<string>\",\n \"environments\": [\n \"<string>\"\n ],\n \"labels\": [\n {}\n ],\n \"materializationSpec\": {\n \"writeMaterialization\": \"<string>\",\n \"readMaterialization\": \"<string>\",\n \"mode\": {\n \"materializationMustMatch\": true,\n \"segmentTargetingCanBeIgnored\": true\n }\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://flags.eu.confidence.dev/v1/flags/{flag}/rules")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"segment\": \"<string>\",\n \"assignmentSpec\": {\n \"bucketCount\": {},\n \"assignments\": [\n {\n \"assignmentId\": \"<string>\",\n \"fallthrough\": {},\n \"clientDefault\": {},\n \"bucketRanges\": [\n {\n \"lower\": {},\n \"upper\": {}\n }\n ]\n }\n ]\n },\n \"enabled\": true,\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"targetingKeySelector\": \"<string>\",\n \"environments\": [\n \"<string>\"\n ],\n \"labels\": [\n {}\n ],\n \"materializationSpec\": {\n \"writeMaterialization\": \"<string>\",\n \"readMaterialization\": \"<string>\",\n \"mode\": {\n \"materializationMustMatch\": true,\n \"segmentTargetingCanBeIgnored\": true\n }\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://flags.eu.confidence.dev/v1/flags/{flag}/rules")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"segment\": \"<string>\",\n \"assignmentSpec\": {\n \"bucketCount\": {},\n \"assignments\": [\n {\n \"assignmentId\": \"<string>\",\n \"fallthrough\": {},\n \"clientDefault\": {},\n \"bucketRanges\": [\n {\n \"lower\": {},\n \"upper\": {}\n }\n ]\n }\n ]\n },\n \"enabled\": true,\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"targetingKeySelector\": \"<string>\",\n \"environments\": [\n \"<string>\"\n ],\n \"labels\": [\n {}\n ],\n \"materializationSpec\": {\n \"writeMaterialization\": \"<string>\",\n \"readMaterialization\": \"<string>\",\n \"mode\": {\n \"materializationMustMatch\": true,\n \"segmentTargetingCanBeIgnored\": true\n }\n }\n}"
response = http.request(request)
puts response.read_body{
"segment": "<string>",
"assignmentSpec": {
"bucketCount": {},
"assignments": [
{
"assignmentId": "<string>",
"variant": {
"variant": "<string>"
},
"fallthrough": {},
"clientDefault": {},
"bucketRanges": [
{
"lower": {},
"upper": {}
}
]
}
]
},
"usageMetadata": {
"resolveCount": 123,
"applyCount": 123,
"lastResolveTime": {},
"lastApplyTime": {},
"assignmentUsageMetadata": [
{
"assignmentId": "<string>",
"resolveCount": 123,
"applyCount": 123,
"lastApplyTime": {},
"emptyTargetingKeyCount": 123
}
]
},
"enabled": true,
"createTime": {},
"updateTime": {},
"creator": "<string>",
"updater": "<string>",
"name": "<string>",
"description": "<string>",
"targetingKeySelector": "<string>",
"environments": [
"<string>"
],
"labels": [
{}
],
"materializationSpec": {
"writeMaterialization": "<string>",
"readMaterialization": "<string>",
"mode": {
"materializationMustMatch": true,
"segmentTargetingCanBeIgnored": true
}
}
}
