curl --request POST \
--url https://app.launchdarkly.com/api/v2/integration-capabilities/flag-import/{projectKey}/{integrationKey} \
--header 'Authorization: <api-key>' \
--header 'Content-Type: application/json' \
--data '
{
"config": {
"environmentId": "The ID of the environment in the external system",
"ldApiKey": "An API key with create flag permissions in your LaunchDarkly account",
"ldMaintainer": "The ID of the member who will be the maintainer of the imported flags",
"ldTag": "A tag to apply to all flags imported to LaunchDarkly",
"splitTag": "If provided, imports only the flags from the external system with this tag. Leave blank to import all flags.",
"workspaceApiKey": "An API key with read permissions in the external feature management system",
"workspaceId": "The ID of the workspace in the external system"
},
"name": "Sample configuration",
"tags": [
"example-tag"
]
}
'import requests
url = "https://app.launchdarkly.com/api/v2/integration-capabilities/flag-import/{projectKey}/{integrationKey}"
payload = {
"config": {
"environmentId": "The ID of the environment in the external system",
"ldApiKey": "An API key with create flag permissions in your LaunchDarkly account",
"ldMaintainer": "The ID of the member who will be the maintainer of the imported flags",
"ldTag": "A tag to apply to all flags imported to LaunchDarkly",
"splitTag": "If provided, imports only the flags from the external system with this tag. Leave blank to import all flags.",
"workspaceApiKey": "An API key with read permissions in the external feature management system",
"workspaceId": "The ID of the workspace in the external system"
},
"name": "Sample configuration",
"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: {
environmentId: 'The ID of the environment in the external system',
ldApiKey: 'An API key with create flag permissions in your LaunchDarkly account',
ldMaintainer: 'The ID of the member who will be the maintainer of the imported flags',
ldTag: 'A tag to apply to all flags imported to LaunchDarkly',
splitTag: 'If provided, imports only the flags from the external system with this tag. Leave blank to import all flags.',
workspaceApiKey: 'An API key with read permissions in the external feature management system',
workspaceId: 'The ID of the workspace in the external system'
},
name: 'Sample configuration',
tags: ['example-tag']
})
};
fetch('https://app.launchdarkly.com/api/v2/integration-capabilities/flag-import/{projectKey}/{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/flag-import/{projectKey}/{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' => [
'environmentId' => 'The ID of the environment in the external system',
'ldApiKey' => 'An API key with create flag permissions in your LaunchDarkly account',
'ldMaintainer' => 'The ID of the member who will be the maintainer of the imported flags',
'ldTag' => 'A tag to apply to all flags imported to LaunchDarkly',
'splitTag' => 'If provided, imports only the flags from the external system with this tag. Leave blank to import all flags.',
'workspaceApiKey' => 'An API key with read permissions in the external feature management system',
'workspaceId' => 'The ID of the workspace in the external system'
],
'name' => 'Sample configuration',
'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/flag-import/{projectKey}/{integrationKey}"
payload := strings.NewReader("{\n \"config\": {\n \"environmentId\": \"The ID of the environment in the external system\",\n \"ldApiKey\": \"An API key with create flag permissions in your LaunchDarkly account\",\n \"ldMaintainer\": \"The ID of the member who will be the maintainer of the imported flags\",\n \"ldTag\": \"A tag to apply to all flags imported to LaunchDarkly\",\n \"splitTag\": \"If provided, imports only the flags from the external system with this tag. Leave blank to import all flags.\",\n \"workspaceApiKey\": \"An API key with read permissions in the external feature management system\",\n \"workspaceId\": \"The ID of the workspace in the external system\"\n },\n \"name\": \"Sample configuration\",\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/flag-import/{projectKey}/{integrationKey}")
.header("Authorization", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"config\": {\n \"environmentId\": \"The ID of the environment in the external system\",\n \"ldApiKey\": \"An API key with create flag permissions in your LaunchDarkly account\",\n \"ldMaintainer\": \"The ID of the member who will be the maintainer of the imported flags\",\n \"ldTag\": \"A tag to apply to all flags imported to LaunchDarkly\",\n \"splitTag\": \"If provided, imports only the flags from the external system with this tag. Leave blank to import all flags.\",\n \"workspaceApiKey\": \"An API key with read permissions in the external feature management system\",\n \"workspaceId\": \"The ID of the workspace in the external system\"\n },\n \"name\": \"Sample configuration\",\n \"tags\": [\n \"example-tag\"\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.launchdarkly.com/api/v2/integration-capabilities/flag-import/{projectKey}/{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 \"environmentId\": \"The ID of the environment in the external system\",\n \"ldApiKey\": \"An API key with create flag permissions in your LaunchDarkly account\",\n \"ldMaintainer\": \"The ID of the member who will be the maintainer of the imported flags\",\n \"ldTag\": \"A tag to apply to all flags imported to LaunchDarkly\",\n \"splitTag\": \"If provided, imports only the flags from the external system with this tag. Leave blank to import all flags.\",\n \"workspaceApiKey\": \"An API key with read permissions in the external feature management system\",\n \"workspaceId\": \"The ID of the workspace in the external system\"\n },\n \"name\": \"Sample configuration\",\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>"
}
},
"_id": "12ab3c4d5ef1a2345bcde67f",
"integrationKey": "split",
"projectKey": "default",
"config": {},
"tags": [],
"name": "Development environment configuration",
"version": 1,
"_status": {
"status": "pending",
"lastImport": "1717263000000",
"lastError": "1714584600000",
"errors": [
{
"integrationId": "<string>",
"message": "<string>",
"statusCode": 123,
"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."
}Create a flag import configuration
Create a new flag import configuration. The integrationKey path parameter identifies the feature management system from which the import occurs, for example, split. The config object in the request body schema is described by the global integration settings, as specified by the formVariables in the manifest.json for this integration. It varies slightly based on the integrationKey.
curl --request POST \
--url https://app.launchdarkly.com/api/v2/integration-capabilities/flag-import/{projectKey}/{integrationKey} \
--header 'Authorization: <api-key>' \
--header 'Content-Type: application/json' \
--data '
{
"config": {
"environmentId": "The ID of the environment in the external system",
"ldApiKey": "An API key with create flag permissions in your LaunchDarkly account",
"ldMaintainer": "The ID of the member who will be the maintainer of the imported flags",
"ldTag": "A tag to apply to all flags imported to LaunchDarkly",
"splitTag": "If provided, imports only the flags from the external system with this tag. Leave blank to import all flags.",
"workspaceApiKey": "An API key with read permissions in the external feature management system",
"workspaceId": "The ID of the workspace in the external system"
},
"name": "Sample configuration",
"tags": [
"example-tag"
]
}
'import requests
url = "https://app.launchdarkly.com/api/v2/integration-capabilities/flag-import/{projectKey}/{integrationKey}"
payload = {
"config": {
"environmentId": "The ID of the environment in the external system",
"ldApiKey": "An API key with create flag permissions in your LaunchDarkly account",
"ldMaintainer": "The ID of the member who will be the maintainer of the imported flags",
"ldTag": "A tag to apply to all flags imported to LaunchDarkly",
"splitTag": "If provided, imports only the flags from the external system with this tag. Leave blank to import all flags.",
"workspaceApiKey": "An API key with read permissions in the external feature management system",
"workspaceId": "The ID of the workspace in the external system"
},
"name": "Sample configuration",
"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: {
environmentId: 'The ID of the environment in the external system',
ldApiKey: 'An API key with create flag permissions in your LaunchDarkly account',
ldMaintainer: 'The ID of the member who will be the maintainer of the imported flags',
ldTag: 'A tag to apply to all flags imported to LaunchDarkly',
splitTag: 'If provided, imports only the flags from the external system with this tag. Leave blank to import all flags.',
workspaceApiKey: 'An API key with read permissions in the external feature management system',
workspaceId: 'The ID of the workspace in the external system'
},
name: 'Sample configuration',
tags: ['example-tag']
})
};
fetch('https://app.launchdarkly.com/api/v2/integration-capabilities/flag-import/{projectKey}/{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/flag-import/{projectKey}/{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' => [
'environmentId' => 'The ID of the environment in the external system',
'ldApiKey' => 'An API key with create flag permissions in your LaunchDarkly account',
'ldMaintainer' => 'The ID of the member who will be the maintainer of the imported flags',
'ldTag' => 'A tag to apply to all flags imported to LaunchDarkly',
'splitTag' => 'If provided, imports only the flags from the external system with this tag. Leave blank to import all flags.',
'workspaceApiKey' => 'An API key with read permissions in the external feature management system',
'workspaceId' => 'The ID of the workspace in the external system'
],
'name' => 'Sample configuration',
'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/flag-import/{projectKey}/{integrationKey}"
payload := strings.NewReader("{\n \"config\": {\n \"environmentId\": \"The ID of the environment in the external system\",\n \"ldApiKey\": \"An API key with create flag permissions in your LaunchDarkly account\",\n \"ldMaintainer\": \"The ID of the member who will be the maintainer of the imported flags\",\n \"ldTag\": \"A tag to apply to all flags imported to LaunchDarkly\",\n \"splitTag\": \"If provided, imports only the flags from the external system with this tag. Leave blank to import all flags.\",\n \"workspaceApiKey\": \"An API key with read permissions in the external feature management system\",\n \"workspaceId\": \"The ID of the workspace in the external system\"\n },\n \"name\": \"Sample configuration\",\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/flag-import/{projectKey}/{integrationKey}")
.header("Authorization", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"config\": {\n \"environmentId\": \"The ID of the environment in the external system\",\n \"ldApiKey\": \"An API key with create flag permissions in your LaunchDarkly account\",\n \"ldMaintainer\": \"The ID of the member who will be the maintainer of the imported flags\",\n \"ldTag\": \"A tag to apply to all flags imported to LaunchDarkly\",\n \"splitTag\": \"If provided, imports only the flags from the external system with this tag. Leave blank to import all flags.\",\n \"workspaceApiKey\": \"An API key with read permissions in the external feature management system\",\n \"workspaceId\": \"The ID of the workspace in the external system\"\n },\n \"name\": \"Sample configuration\",\n \"tags\": [\n \"example-tag\"\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.launchdarkly.com/api/v2/integration-capabilities/flag-import/{projectKey}/{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 \"environmentId\": \"The ID of the environment in the external system\",\n \"ldApiKey\": \"An API key with create flag permissions in your LaunchDarkly account\",\n \"ldMaintainer\": \"The ID of the member who will be the maintainer of the imported flags\",\n \"ldTag\": \"A tag to apply to all flags imported to LaunchDarkly\",\n \"splitTag\": \"If provided, imports only the flags from the external system with this tag. Leave blank to import all flags.\",\n \"workspaceApiKey\": \"An API key with read permissions in the external feature management system\",\n \"workspaceId\": \"The ID of the workspace in the external system\"\n },\n \"name\": \"Sample configuration\",\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>"
}
},
"_id": "12ab3c4d5ef1a2345bcde67f",
"integrationKey": "split",
"projectKey": "default",
"config": {},
"tags": [],
"name": "Development environment configuration",
"version": 1,
"_status": {
"status": "pending",
"lastImport": "1717263000000",
"lastError": "1714584600000",
"errors": [
{
"integrationId": "<string>",
"message": "<string>",
"statusCode": 123,
"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 integration key
Body
The global configuration settings, as specified by the formVariables in the manifest.json for this configuration.
Show child attributes
Show child attributes
"{\"workspaceApiKey\": \"An API key with read permissions in the external feature management system\", \"workspaceId\": \"The ID of the workspace in the external system\", \"environmentId\": \"The ID of the environment in the external system\", \"splitTag\": \"If provided, imports only the flags from the external system with this tag. Leave blank to import all flags.\", \"ldApiKey\": \"An API key with create flag permissions in your LaunchDarkly account\", \"ldTag\": \"A tag to apply to all flags imported to LaunchDarkly\", \"ldMaintainer\": \"The ID of the member who will be the maintainer of the imported flags\"}"
Tags to associate with the configuration
["example-tag"]
Name to identify the configuration
"Sample configuration"
Response
Flag Import Configuration response
The location and content type of related resources
Show child attributes
Show child attributes
The integration ID
"12ab3c4d5ef1a2345bcde67f"
The integration key
split, unleash "split"
The project key
"default"
The configuration for the given import integration. 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
List of tags for this configuration
[]
Name of the configuration
"Development environment configuration"
Version of the current configuration
1
Details on the status of the import job
Show child attributes
Show child attributes
Details on the allowed and denied actions for this configuration
Show child attributes
Show child attributes