Create big segment store integration
For the complete documentation index, see llms.txt. For the full documentation snapshot, see llms-full.txt.
Create a persistent store integration.
If you are using server-side SDKs, segments synced from external tools and larger list-based segments require a persistent store within your infrastructure. LaunchDarkly keeps the persistent store up to date and consults it during flag evaluation.
You can use either Redis or DynamoDB as your persistent store. When you create a persistent store integration, the fields in the config object in the request vary depending on which persistent store you use.
If you are using Redis to create your persistent store integration, you will need to know:
- Your Redis host
- Your Redis port
- Your Redis username
- Your Redis password
- Whether or not LaunchDarkly should connect using TLS
If you are using DynamoDB to create your persistent store integration, you will need to know:
- Your DynamoDB table name. The table must have the following schema:
- Partition key:
namespace(string) - Sort key:
key(string)
- Partition key:
- Your DynamoDB Amazon Web Services (AWS) region.
- Your AWS role Amazon Resource Name (ARN). This is the role that LaunchDarkly will assume to manage your DynamoDB table.
- The External ID you specified when creating your Amazon Resource Name (ARN).
To learn more, read Segment configuration.
curl --request POST \
--url https://app.launchdarkly.com/api/v2/integration-capabilities/big-segment-store/{projectKey}/{environmentKey}/{integrationKey} \
--header 'Authorization: <api-key>' \
--header 'Content-Type: application/json' \
--data '
{
"config": {
"optional": "example value for optional formVariables property for sample-integration",
"required": "example value for required formVariables property for sample-integration"
},
"name": "Example persistent store integration",
"on": false,
"tags": [
"example-tag"
]
}
'import requests
url = "https://app.launchdarkly.com/api/v2/integration-capabilities/big-segment-store/{projectKey}/{environmentKey}/{integrationKey}"
payload = {
"config": {
"optional": "example value for optional formVariables property for sample-integration",
"required": "example value for required formVariables property for sample-integration"
},
"name": "Example persistent store integration",
"on": False,
"tags": ["example-tag"]
}
headers = {
"Authorization": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
config: {
optional: 'example value for optional formVariables property for sample-integration',
required: 'example value for required formVariables property for sample-integration'
},
name: 'Example persistent store integration',
on: false,
tags: ['example-tag']
})
};
fetch('https://app.launchdarkly.com/api/v2/integration-capabilities/big-segment-store/{projectKey}/{environmentKey}/{integrationKey}', 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://app.launchdarkly.com/api/v2/integration-capabilities/big-segment-store/{projectKey}/{environmentKey}/{integrationKey}",
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([
'config' => [
'optional' => 'example value for optional formVariables property for sample-integration',
'required' => 'example value for required formVariables property for sample-integration'
],
'name' => 'Example persistent store integration',
'on' => false,
'tags' => [
'example-tag'
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: <api-key>",
"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://app.launchdarkly.com/api/v2/integration-capabilities/big-segment-store/{projectKey}/{environmentKey}/{integrationKey}"
payload := strings.NewReader("{\n \"config\": {\n \"optional\": \"example value for optional formVariables property for sample-integration\",\n \"required\": \"example value for required formVariables property for sample-integration\"\n },\n \"name\": \"Example persistent store integration\",\n \"on\": false,\n \"tags\": [\n \"example-tag\"\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "<api-key>")
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://app.launchdarkly.com/api/v2/integration-capabilities/big-segment-store/{projectKey}/{environmentKey}/{integrationKey}")
.header("Authorization", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"config\": {\n \"optional\": \"example value for optional formVariables property for sample-integration\",\n \"required\": \"example value for required formVariables property for sample-integration\"\n },\n \"name\": \"Example persistent store integration\",\n \"on\": false,\n \"tags\": [\n \"example-tag\"\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.launchdarkly.com/api/v2/integration-capabilities/big-segment-store/{projectKey}/{environmentKey}/{integrationKey}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"config\": {\n \"optional\": \"example value for optional formVariables property for sample-integration\",\n \"required\": \"example value for required formVariables property for sample-integration\"\n },\n \"name\": \"Example persistent store integration\",\n \"on\": false,\n \"tags\": [\n \"example-tag\"\n ]\n}"
response = http.request(request)
puts response.read_body{
"_links": {
"self": {
"href": "<string>",
"type": "<string>"
},
"parent": {
"href": "<string>",
"type": "<string>"
},
"project": {
"href": "<string>",
"type": "<string>"
},
"environment": {
"href": "<string>",
"type": "<string>"
}
},
"_id": "12ab3c4d5ef1a2345bcde67f",
"integrationKey": "redis",
"projectKey": "default",
"environmentKey": "development",
"config": {},
"on": true,
"tags": [],
"name": "Development environment configuration",
"version": 1,
"_status": {
"available": true,
"potentiallyStale": false,
"lastSync": "1717263000000",
"lastError": "1714584600000",
"errors": [
{
"statusCode": 123,
"message": "<string>",
"timestamp": 123
}
]
},
"_access": {
"denied": [
{
"action": "<string>",
"reason": {
"effect": "allow",
"resources": [
"proj/*:env/*;qa_*:/flag/*"
],
"notResources": [
"<string>"
],
"actions": [
"*"
],
"notActions": [
"<string>"
],
"role_name": "<string>"
}
}
],
"allowed": [
{
"action": "<string>",
"reason": {
"effect": "allow",
"resources": [
"proj/*:env/*;qa_*:/flag/*"
],
"notResources": [
"<string>"
],
"actions": [
"*"
],
"notActions": [
"<string>"
],
"role_name": "<string>"
}
}
]
}
}{
"code": "invalid_request",
"message": "Invalid request body"
}{
"code": "unauthorized",
"message": "Invalid access token"
}{
"code": "forbidden",
"message": "Forbidden. Access to the requested resource was denied."
}{
"code": "not_found",
"message": "Invalid resource identifier"
}{
"code": "optimistic_locking_error",
"message": "Conflict. Optimistic lock error. Try again later."
}{
"code": "rate_limited",
"message": "You've exceeded the API rate limit. Try again later."
}Authorizations
Path Parameters
The project key
The environment key
The integration key, either redis or dynamodb
Body
The global integration settings, as specified by the formVariables in the manifest.json for this integration.
Show child attributes
Show child attributes
"{\"required\": \"example value for required formVariables property for sample-integration\", \"optional\": \"example value for optional formVariables property for sample-integration\"}"
Whether the integration configuration is active. Default value is false.
false
Tags to associate with the integration
["example-tag"]
Name to identify the integration
"Sample integration"
Response
Big segment store response
The location and content type of related resources
Show child attributes
Show child attributes
The integration ID
"12ab3c4d5ef1a2345bcde67f"
The integration key
redis, dynamodb "redis"
The project key
"default"
The environment key
"development"
The delivery configuration for the given integration provider. Only included when requesting a single integration by ID. Refer to the formVariables field in the corresponding manifest.json for a full list of fields for each integration.
Show child attributes
Show child attributes
Whether the configuration is turned on
true
List of tags for this configuration
[]
Name of the configuration
"Development environment configuration"
Version of the current configuration
1
Details on the connection status of the persistent store integration
Show child attributes
Show child attributes
Details on the allowed and denied actions for this configuration
Show child attributes
Show child attributes
curl --request POST \
--url https://app.launchdarkly.com/api/v2/integration-capabilities/big-segment-store/{projectKey}/{environmentKey}/{integrationKey} \
--header 'Authorization: <api-key>' \
--header 'Content-Type: application/json' \
--data '
{
"config": {
"optional": "example value for optional formVariables property for sample-integration",
"required": "example value for required formVariables property for sample-integration"
},
"name": "Example persistent store integration",
"on": false,
"tags": [
"example-tag"
]
}
'import requests
url = "https://app.launchdarkly.com/api/v2/integration-capabilities/big-segment-store/{projectKey}/{environmentKey}/{integrationKey}"
payload = {
"config": {
"optional": "example value for optional formVariables property for sample-integration",
"required": "example value for required formVariables property for sample-integration"
},
"name": "Example persistent store integration",
"on": False,
"tags": ["example-tag"]
}
headers = {
"Authorization": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
config: {
optional: 'example value for optional formVariables property for sample-integration',
required: 'example value for required formVariables property for sample-integration'
},
name: 'Example persistent store integration',
on: false,
tags: ['example-tag']
})
};
fetch('https://app.launchdarkly.com/api/v2/integration-capabilities/big-segment-store/{projectKey}/{environmentKey}/{integrationKey}', 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://app.launchdarkly.com/api/v2/integration-capabilities/big-segment-store/{projectKey}/{environmentKey}/{integrationKey}",
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([
'config' => [
'optional' => 'example value for optional formVariables property for sample-integration',
'required' => 'example value for required formVariables property for sample-integration'
],
'name' => 'Example persistent store integration',
'on' => false,
'tags' => [
'example-tag'
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: <api-key>",
"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://app.launchdarkly.com/api/v2/integration-capabilities/big-segment-store/{projectKey}/{environmentKey}/{integrationKey}"
payload := strings.NewReader("{\n \"config\": {\n \"optional\": \"example value for optional formVariables property for sample-integration\",\n \"required\": \"example value for required formVariables property for sample-integration\"\n },\n \"name\": \"Example persistent store integration\",\n \"on\": false,\n \"tags\": [\n \"example-tag\"\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "<api-key>")
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://app.launchdarkly.com/api/v2/integration-capabilities/big-segment-store/{projectKey}/{environmentKey}/{integrationKey}")
.header("Authorization", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"config\": {\n \"optional\": \"example value for optional formVariables property for sample-integration\",\n \"required\": \"example value for required formVariables property for sample-integration\"\n },\n \"name\": \"Example persistent store integration\",\n \"on\": false,\n \"tags\": [\n \"example-tag\"\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.launchdarkly.com/api/v2/integration-capabilities/big-segment-store/{projectKey}/{environmentKey}/{integrationKey}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"config\": {\n \"optional\": \"example value for optional formVariables property for sample-integration\",\n \"required\": \"example value for required formVariables property for sample-integration\"\n },\n \"name\": \"Example persistent store integration\",\n \"on\": false,\n \"tags\": [\n \"example-tag\"\n ]\n}"
response = http.request(request)
puts response.read_body{
"_links": {
"self": {
"href": "<string>",
"type": "<string>"
},
"parent": {
"href": "<string>",
"type": "<string>"
},
"project": {
"href": "<string>",
"type": "<string>"
},
"environment": {
"href": "<string>",
"type": "<string>"
}
},
"_id": "12ab3c4d5ef1a2345bcde67f",
"integrationKey": "redis",
"projectKey": "default",
"environmentKey": "development",
"config": {},
"on": true,
"tags": [],
"name": "Development environment configuration",
"version": 1,
"_status": {
"available": true,
"potentiallyStale": false,
"lastSync": "1717263000000",
"lastError": "1714584600000",
"errors": [
{
"statusCode": 123,
"message": "<string>",
"timestamp": 123
}
]
},
"_access": {
"denied": [
{
"action": "<string>",
"reason": {
"effect": "allow",
"resources": [
"proj/*:env/*;qa_*:/flag/*"
],
"notResources": [
"<string>"
],
"actions": [
"*"
],
"notActions": [
"<string>"
],
"role_name": "<string>"
}
}
],
"allowed": [
{
"action": "<string>",
"reason": {
"effect": "allow",
"resources": [
"proj/*:env/*;qa_*:/flag/*"
],
"notResources": [
"<string>"
],
"actions": [
"*"
],
"notActions": [
"<string>"
],
"role_name": "<string>"
}
}
]
}
}{
"code": "invalid_request",
"message": "Invalid request body"
}{
"code": "unauthorized",
"message": "Invalid access token"
}{
"code": "forbidden",
"message": "Forbidden. Access to the requested resource was denied."
}{
"code": "not_found",
"message": "Invalid resource identifier"
}{
"code": "optimistic_locking_error",
"message": "Conflict. Optimistic lock error. Try again later."
}{
"code": "rate_limited",
"message": "You've exceeded the API rate limit. Try again later."
}